#💻・modding-dev

1 messages · Page 258 of 1

modern kindle
#

lordy me

we love to see it

zealous glen
#

I’m curious now balatrojoker

modern kindle
#

we were talking about this server is a cultist sect and how we need to consume specific entities in here, specifically this one guy named victin

daring fern
#

How does one go about doing this?

zealous glen
#

There’s no cult here

zealous glen
#

How is it currently triggering?

daring fern
zealous glen
#

I have no idea what you’re doing

daring fern
zealous glen
#

But if you want to keep this

#

You can save the return if find_joker and iterate over it

#

Also it’s weird that it doesn’t need a key

quartz ravine
#

Ok, thank you very much for offering 🙂

calculate = function(self, card, context)
    if context.destroy_card and context.cardarea == G.play then
        --it was a  high card, we will eat 2's

        if context.destroy_card:get_id() == 2 then
            sendInfoMessage("This is a 2 " .. context.destroy_card:get_id(), self.key)

            card.ability.extra = card.ability.extra + card.ability.extraGrowthRate
            G.E_MANAGER:add_event(Event({
                trigger = 'after',
                delay = 0.45,
                func = function()
                    play_sound("Fox_yoshiEat", 1.05)
                    context.destroy_card:juice_up(0.3, 0.3);
                    return { remove = true, card=context.destroy_card }
                end
            }))
            sendInfoMessage("we are going to destroy this card", self.key)

            return { remove = true,card=context.destroy_card }
        end
    end
end
zealous glen
zealous glen
# daring fern How?

You can have the Joker iterate over the CardArea to look for Vouchers, then return xMult, but make the message pop up under the Vouchers if that’s what you want

#

The only thing that wouldn’t quite be the same is the timing

modern kindle
quartz ravine
zealous glen
#

It has been fixed

zealous glen
#

But you’re destroying cards in hand right?

modern kindle
#

do i gott re update

zealous glen
modern kindle
#

ah fantastic, let me update then

zealous glen
#

Just in time

modern kindle
#

what can i say, im a cool guy 😎

zealous glen
modern kindle
zealous glen
modern kindle
daring fern
humble girder
#

ngl dilatro sounds NSFW

modern kindle
#

nothing super concrete, just stuff i think would be cool that could more or elss fit the game

modern kindle
hardy viper
#

if you pronounce it "die" it sounds much better

modern kindle
#

die latro

more like
die lit

glad osprey
#

im so good at typing

modern kindle
#

its alright @manic rune when he first greeted me called me diddy

onyx sonnet
#

@frosty dock that perma_mult bug i showed you was a false alarm. apparently thats caused by some other mod i have installed???? possibly an old custom implementation of perma mult

modern kindle
#

itll always be funny to me dont worry

fervent thicket
#

How would you check if a card is a stone card?

next timber
#

I LOVE LEAVING IT ENTIRELY UP TO FATEE

modern kindle
onyx sonnet
gentle rain
next timber
#

0.5x and 3x

gentle rain
#

:3c

#

inchresting

modern kindle
#

i still need to start incorporating quantum
i just dont know where to really start

gentle rain
#

also the effect looks rly cool too

modern kindle
next timber
#

idk how

#

lol

onyx sonnet
daring fern
gentle rain
#

how it displays the 0 to 23

modern kindle
hushed field
#

I should look into quantum enhancements again. They caused some weird and unexpected errors in my code for a while

gentle rain
#

quantum?

quartz ravine
next timber
#

im not sure im happy with the slimy edition's current range, should i make the it go from x0.1 to x3 or from x0.5 to x2

onyx sonnet
gentle rain
onyx sonnet
#

also im not sure if it works with editions

modern kindle
modern kindle
#

ill have to toy with it

#

it is called quantum enhancements, not editions

#

so

next timber
#

it hits numbers above 1 a lot more frequently than it hits number below 1

primal shoal
#

how quick does the image update for the jokers?

onyx sonnet
#

you could, for example, tell the game that it should check for steel cards held in hand and return m_gold = true to tell the game that this steel card should also have the effects of gold cards

modern kindle
onyx sonnet
#

im using them just fine lol

#

ill pull up some code

primal shoal
hushed field
#

That should happen instantly

primal shoal
#

animated joker here i come

modern kindle
onyx sonnet
#
    calculate = function(self, card, context)
        if context.check_enhancement and context.other_card.base.id == 7 then
                return {
                    m_lucky = true,
                }
            end
    end
}```
 its that shrimple
next timber
#

im gonna try x0.1 to x3

gentle rain
hushed field
next timber
#

i like the extreme values

hushed field
#

but I fully assume that's solved at this point

modern kindle
#

yea i have a joker that changes texture once it reaches a certain point

i need to figure out how poeple have those..like small overlays ontop of their jokers

onyx sonnet
#

this is because it would cause an infinite loop

modern kindle
modern kindle
hushed field
#

paradoleia

modern kindle
#

ah yea

primal shoal
gentle rain
primal shoal
#

oh that how it does the blind effect didn't even think about that

hushed field
modern kindle
#

i keep forgetting how really good N was with his ui

primal shoal
#

time to put the sherk movie in a joker

hushed field
hushed field
modern kindle
onyx sonnet
#

thats an SMODS feature

modern kindle
#

well yea but para like he mentioned does the whole face thing

#

so quantum has to work with it dont it

onyx sonnet
warped marsh
#

Is has_edition a function?

hushed field
onyx sonnet
#

para wouldnt work because a face card could have stone and no longer be a face card

#

so its forbidden

primal shoal
warped marsh
#

thank you

onyx sonnet
primal shoal
onyx sonnet
#

i tried using :get_id and it would just never return anything,not even an error

hushed field
#

Aaah okay, that makes sense. I'll look into it again soon. I've reworked all quantum enhancement-type jokers to be luckily more interesting, I'd say, but I'm sure new ideas'll pop up for it again in the future

wintry solar
#

The crashes are only if you use those functions within your quantum calculation

#

But they might have been patched, I don’t remember

hushed field
#

At the time, they happened in any joker that called is_face() for me, regardless of whether they used quantum enhancement, but yeah, I assumed that'd no longer be the case now

wintry solar
#

That doesn’t sound right

onyx sonnet
#

i think ExtraCredit has a way to go around this by creating a new attribute for playing cards which they modify freely, but unfortunately its not really going to work when other mods are in the mix

#

otherwise you're just gonna have to not use functions and check the raw values of the card

#

context.other_card.config.center.key == "m_gold" as opposed to SMODS.has_enhancement(insertcardhere, "m_gold")

warped marsh
#
    calculate = function(self, card, context)
        if context.individual and context.cardarea == G.play and context.other_card:is_edition('e_polychrome') then
            return {
                Xmult = card.ability.extra.Xmult,
                message = "Meow!",
                card = other_card
            }
        end
    end
``` the game crashes, im guessing my formating is wrong (is_edition, a nil value)
hushed field
# wintry solar That doesn’t sound right

I would not be surprised if part of the problem was me misimplementing things, haha. I'm not a good programmer and I understood SMODS way less when I worked with the quantum enhancements last month, after all

frosty dock
zealous glen
frosty dock
#

nah local thunk = ...

zealous glen
warped marsh
zealous glen
quartz ravine
#

Hi guys, did cryptid do some special magic to show Planet cards in their mod page?

So far, whatever types of stuff I have added just magically showed up in my mod page

zealous glen
#

Though idk how much UI did Myst make

quartz ravine
#

Nevermind, I updated my steammodded and it appeared

primal shoal
#

noooooo someone already did the bad apple mv as a joker

simple mural
#

I can create all the jokers using a loop and then just edit what I need in them. vedalUUH

#

With "SMODS.Joker:take_ownership" for my jokers

shell timber
#

development today

brazen tusk
#

is that the giant rat that makes all of the rules?

onyx sonnet
#

Thats a pretty small rat

#

It seems rather cancerous for a rodent

vivid solstice
#

im having trouble with this poker hand

        if G.hand.cards == 1 and G.deck.cards == 0 and G.hand.highlighted == 1 and next(parts._highest) then
            return { hand } end```
it just doesnt show when the requirements are met so i cant even really debug it
gentle rain
tall wharf
#

:3

shell timber
#

1 in 2 chance to be destroyed when played

#

i nerfed it to 0.05x

zealous glen
runic pecan
#

Which 9 looks better?

warped marsh
#

right one

gentle rain
#

first id say

warped marsh
#

uuu divide straight away!

zealous glen
#

Probably right

modern kindle
#

im also ont he right side

tall wharf
zealous glen
#

@runic pecan I just found an fan animation of Calli and Gigi

#

Kronii and CC are also there

manic rune
#

tututututu

tall wharf
#

god forbid i use crying emoji istg

zealous glen
#

😭

manic rune
#

😭

modern kindle
#

😭

warped marsh
#

😭

manic rune
#

release the 😭

warped marsh
#

nah thats crazy 😭

manic rune
#

😭

twilit cargo
#

😭

zealous glen
#

😭 🔪 🧅

manic rune
#

😭
🟦🟦🟦🟦🟦
🟦🟦🟦🟦🟨

modern kindle
#

😭 🪦 😭

zealous glen
manic rune
#

its blue archive stuff

#

:3

zealous glen
#

Looks like Marge Simpsons’ head looking down

manic rune
#

what? 😭

next timber
#

how do i recreate the glass card's chance of destruction when played?

#

like how do i give a card a 1 in x chance of destroying at the same time glass cards do their thing

#

surely its possible without patching this time

zealous glen
manic rune
#

😭

zealous glen
#

In the wiki

modern kindle
#
    update = function(self, card, context)
        -- Only proceed if HP is 50% or lower to debuff a random joker
        local health_percentage = card.ability.extra.HP / card.ability.extra.maxHP
        if health_percentage <= to_big(0.5) then
            local jokers = {}

            -- Collect all jokers that aren't this one and aren't already debuffed
            for i = 1, #G.jokers.cards do
                if G.jokers.cards[i] ~= card then
                    if not G.jokers.cards[i].debuff then
                        table.insert(jokers, G.jokers.cards[i])  
                    end
                end
            end

            -- Debuff a random joker from the list
            if #jokers > 0 then
                local debuffjoker = pseudorandom_element(jokers, pseudoseed('fuckan_debuff'))
                if debuffjoker then

                    SMODS.debuff_card(debuffjoker, true, 'stopjoker')
                    SMODS.recalc_debuff(debuffjoker)

                    card.ability.extra.debuffed_jokers = card.ability.extra.debuffed_jokers or {}
                    table.insert(card.ability.extra.debuffed_jokers, debuffjoker)

                    print("[DEBUG] Debuffed Joker:", debuffjoker)
                end
            end
        end
    end,

im trying to just have this iterate over each joker (kinda like crimson heart, but without the fact it undebuffs and reselects with each hand played)
so that when you play 1 hand, one random joker is disabled, then you play another hand and nother one is, and so on and so forth

but i seem to just get to disable one joker and then it stops

what am i missing to make it interate over all held jokers?

zealous glen
modern kindle
#

doing it outside of update made the debuffs disappear next round instead of persisting

zealous glen
#

Use calculate and if context.debuff_card

zealous glen
#

I think you’ll need to add something else to the card object

modern kindle
#

i need them to persist until i reset it later down the line, i just havent implemented that yet

zealous glen
#

Oh wait you meant next round

#

Wait

modern kindle
#

no, it has to carry over until i set so

zealous glen
#

Next round as in next Blind?

modern kindle
#

this is a card that has its own blind hp, below 50% means it debuffs 1 random joker per played hand until all are debuffed, once the first set is defeated it undebuffs all

zealous glen
#

What’s “a card that has its own blind hp”

#

What does that mean

modern kindle
#

card has health at the start, played hand chips impact said health

frosty dock
#

SMODS.debuff_card sets a permanent debuff until explicitly removed

zealous glen
#

From other mods?

frosty dock
#

well unless something prevents debuffs

zealous glen
frosty dock
#

yeah it should

#

I'm just saying even if you using SMODS.debuff_card, you don't need to do it every frame

#

it'd be enough to set the debuff once and later remove it

wintry solar
#

There are very few things that need doing every frame

modern kindle
#

gotcha, so this will persist past rounds then normally with smods.debuff_card?

i know earlier when i tried it just reset my table and then started debuffing anew

#

instead of saving what was prev debuffed

#

ill give it another go however

frosty dock
frosty dock
#

the convenient thing about SMODS.set_debuff is that you can call it at any point in time to set or cancel the debuff as opposed to context.debuff_card only being called in certain timings

brazen tusk
#

this currently only retriggers the lucky card the first time it successfully triggers, does anyone know if theres a way i can make it keep retriggering if it keeps successfully triggering?

modern kindle
#

alright rad, thank you

frosty dock
#

steamodded doesn't allow multiple layers of retriggers, especially not arbitrarily many

brazen tusk
#

aight ty

frosty dock
#

imagine i come along with 3 oops and the game just freezes because it keeps trying to retrigger the lucky card

modern kindle
#

ah yea, smods.debuff_card works perfectly now, i mustve just been tired last night and did it incorrectly
thanks again

brazen tusk
#

looks up at the 3 oops's i had for testing purposes 💀

open aspen
#

is it possible to have a sticker have a "floaty" animation like the soul cards etc?

brazen tusk
#

very true lmao

open aspen
#

why doesnt that crash the game

#

or is that exactly because of this failsafe

open aspen
brazen tusk
open aspen
#

ah

#

well

#

no

long sun
#

hiya! where can i find the tool that removes the phantom black border from assets?

open aspen
#

cause in cryptid the retrigger all is a 1/2 chance. but u can rig it to be a 2/2. if u get two of those

#

it wont crash

#

(but i assume now for sure its because it cant be retriggered twice by the same card)

brazen tusk
#

does it retrigger itself?

open aspen
#

wait im dumb as fuck

#

it says ignores other boredoms (card name)

#

lol

frosty dock
#

there's no retriggers on retriggers

#

the most layers you'll get is a joker retriggering a joker that retriggers a playing card

open aspen
#

at all?

#

what about chad from cryptid? that retriggers twice?

frosty dock
#

you can retrigger any amount of times

#

but you can't retrigger those retriggers again

open aspen
#

I see

faint yacht
#

...well, aside from playing cards.

open aspen
#

that makes sense

frosty dock
#

if i have boredom retriggering chad, it won't do anything

brazen tusk
#

just can't have like, nested retriggers ig is a way to say it

open aspen
wintry solar
#

In essence, the question of “how many times do you want to retrigger this joker?” is only asked once

frosty dock
#

but boredom might retrigger the same card that chad retriggers, stacking for 3 total retriggers

open aspen
#

i get it

#

if a different joker comes and asks its okay then ofc

wintry solar
#

Yes

open aspen
#

thanks for info, if i add retrigger effects I will keep that in mind

#

so uh back to the question I had before. Is it possible to have a sticker have a "floaty" animation like the soul cards etc?

frosty dock
zealous glen
#

I’d ask Firch directly

#

But you do need Python IIRC

long sun
#

i've got that ^^

#

grand

open aspen
zealous glen
open aspen
#

i can reference what cryptid did at least

#

for gateway

zealous glen
#

I haven’t tried it yet because I haven’t felt the need to

frosty dock
#

yeah

zealous glen
#

But I know the tool only works on 1x sprites

#

I think

open aspen
zealous glen
#

I remember Firch had it working in a specific way because that’s what they needed

prisma loom
#

Can someone explain why the card destruction effect of my Joker works on 2nd played hand as well (while I specifically set it to trigger on 1st hand of round)

        if context.first_hand_drawn and not context.blueprint then
            local eval = function() return G.GAME.current_round.hands_played == 0 end
            juice_card_until(card, eval, true)
        end
        if context.destroying_card and not context.blueprint and card.ability.extra.joker_triggered == true then
            card.ability.extra.joker_triggered = false
            return true
        end
        if not card.debuff then
            if context.cardarea == G.play and context.repetition and #context.full_hand == 1 and G.GAME.current_round.hands_played == 0 then
                return {
                    message = localize('k_hnds_energized'),
                    colour = G.C.FILTER,
                    repetitions = card.ability.extra.repetitions,
                    card = card
                }
            end
        end
        if context.cardarea == G.play and G.GAME.current_round.hands_played == 0 and context.destroying_card and not context.destroying_card.debuff and not context.blueprint then
            if pseudorandom('energized') < G.GAME.probabilities.normal / card.ability.extra.odds then
                card.ability.extra.joker_triggered = true
            end
            return {
                remove = true,
                message = localize('k_hnds_zapped'),
                colour = G.C.MULT,
                delay = 1,
                card = card
            }
        end
    end```
zealous glen
#

(IIRC they asked a friend to code it, not sure)

prisma loom
#

it doesnt destroy cards on 3rd or 4th etc. hands

#

but on the 2nd does

#

for some reason

wintry solar
#

You’re using the same context in multiple places

#

Returning true from destroy card destroys the card

frosty dock
tepid crow
#

Oh hey Eremel wanted to ask a question

zealous glen
#

you don’t need if variable == true

prisma loom
#

how I go about it?

zealous glen
#

You can nest ifs

#

If you need to

tepid crow
#

I'm trying to use SMODS.blueprint_effect(card, blueprint_card, context), but it seems like blueprint_card is actually the card that's being blueprinted? as opposed to the blueprint/brainstorm joker?

frosty dock
#

combine your effects to be contained in one if statement that doesn't have multiple returns in the same branch

frosty dock
zealous glen
tepid crow
#

I'm confused, why?

prisma loom
#

it shows an error

tepid crow
#

since context.blueprint_card is the blueprint/brainstorm, setting blueprint_card to the blueprinted card doesn't make any sense to me

zealous glen
frosty dock
#

... because you messed up your syntax

zealous glen
#

But also as aure said

#

If you nest if blocks

#

You’ll want to collect the data

#

Into a single return

prisma loom
#

how to nest

#

I dont understand the term

open aspen
#

(is there any documentation for how draw functions work)

tepid crow
#
if true then
  if true then
    if true then
      ...
    end
    ...
  end
end
zealous glen
#
if a then
    if b thenend
end
wintry solar
#

I hadn’t thought about other uses of that name

tepid crow
#

Ah. So it's the exact opposite of the vanilla naming schemes by accident

zealous glen
wintry solar
#

It should be fine when I finally finish the calc docs

tepid crow
#

would there be issues by just swapping them right now? 🤔

manic rune
#

can we have a patch that scales on the entire Mods folder

tepid crow
#

I really do not like blueprint_card not being the actual... blueprint card

manic rune
#

which changes all consumeables to consumables please

open aspen
manic rune
#

:3

wintry solar
#

I mean it’s an internal function, the names can be whatever people want them to be

#

It doesn’t bother me

prisma loom
zealous glen
#

Collect the data into a single return

tepid crow
# zealous glen You can make a PR

I know, I'm just asking if there would be any obvious issues with changing the names (afaik Lua doesn't support keyword arguments so should be fine)

prisma loom
#

would that work?

manic rune
#

no

zealous glen
#

Yes

manic rune
#

wha

zealous glen
#

If you do it correctly

manic rune
#

you can do

return{
message = "hi",
message = "hello",
}

???

zealous glen
#

If they’re not handled automatically

wintry solar
#

No

manic rune
#

i thought you need calculate_effect for that one

zealous glen
#

You want an extra table with the second message

prisma loom
#

I'm hella confused rn x(

wintry solar
#
Return {
message = first,
extra = {
  message = second
}
}```
manic rune
#

o

#

wait

#

whats extra?

faint yacht
#

Additional "steps", basically.

wintry solar
#

Just an extra return table

tepid crow
#

basically a recursive return

wintry solar
#

You can keep nesting them

manic rune
#

can you do

return{
  message = "1",
  extra = {
    message = "2",
    extra = {
      message = "3",
      ...
    }
  }
}
zealous glen
#

Yes

manic rune
#

holy fuck

tepid crow
#

I use it for janky returns >:D

prisma loom
#

I have 2 separate effects and I need a different message to pop up when respective effect activates
How putting everything in one return{} would work

zealous glen
manic rune
#

but

#

oh my fucking god

zealous glen
manic rune
#

LIKE

#

I MADE A GOD DAMN ANOTHER FUNCTION

manic rune
#

to collect all the xmult, xchips and chips into a collective var

manic rune
#

then return them all at once

#

😭

#

because i thought youcatnoatoneantaeon

#

god damn it

zealous glen
manic rune
#

i shouldve asked

#

💔

manic rune
#

i didnt think this was possible

open aspen
#

(nichijou)

zealous glen
manic rune
#

that cat

open aspen
#

is there docs or examples of a use of the draw hook

manic rune
#

reminds me of an osu player

#

-# not a good one

open aspen
#

i see this cat as a lot of peoples pfp

#

im getting deja vu

gentle rain
open aspen
#

i swear someone else has said this pfp reminded them of a not so good person

manic rune
zealous glen
#

Maybe a decade ago at this point

prisma loom
#

joker doesnt work now

gentle rain
manic rune
#

_3

#

:3

#

3:

#

-#

#

-3

#

=3

gentle rain
#

?

manic rune
#

Hello World!

open aspen
#

is there docs or examples of a use of the draw hook

manic rune
#

draw hook?

prisma loom
open aspen
#

idk i call it hook

#

idk if thats the right word

manic rune
#

oh, draw

#

dunno

manic rune
#

hook is different

gentle rain
# open aspen

for stickers? hmm where are stickers and their shaders stored

manic rune
#

its when you put additional code in an existing function

open aspen
#

ah

#

gotcha

open aspen
#

as if it was

#

a legendary or the soul card

gentle rain
#

OH

zealous glen
gentle rain
#

hmm yeah i havent done anything with soul_pos

open aspen
#

i have a feeling soul pos isnt a thing for stickers

gentle rain
#

id imagine youd have to do some custom code to implement that

hushed field
#

The crash log's not entirely clear, but I think my custom cardareas are crashing the game on leaving the run. It seems that the cards table for those cardareas is missing. Is that an issue someone's got some insight into?

gentle rain
#

good luck 🫡

prisma loom
zealous glen
high eagle
zealous glen
#

If the Jokers does different things in different contexts

prisma loom
#

Both retriggering and destruction uses the same context

zealous glen
#

Use different if blocks for them

high eagle
zealous glen
#

They are separated in the code

#

And that’s the end of the story

gentle rain
#

the steamodded wiki should be pinned in this channel shouldnt it

zealous glen
#

What you need is to apply different effects in different contexts

#

If the effects are connected, you need to connect them

#

But not via contexts

high eagle
gentle rain
high eagle
#

SMODS.Atlas {
-- Key for code to find it with
key = "super_balatro_sweater",
-- The name of the file, for the code to pull the atlas from
path = "super_balatro_sweater.png",
-- Width of each sprite in 1x size
px = 71,
-- Height of each sprite in 1x size
py = 95
}

wintry solar
hushed field
gentle rain
#

yeah

#

jt says the error is at line 11

open aspen
#

i notice the vanilla code has something like this. is there a such thing as floating sprite i can access with smods? for a sticker

gentle rain
#

but also we need to see the code of the joker itself not just the atlas

hushed field
#

Eremel, is there a specific point in the start_run code that I should set up cardareas? I'm getting crashes, and am currently setting them up with a hook of the Game:start_run() function

high eagle
#

base*

zealous glen
wintry solar
zealous glen
hushed field
#

Yeah, doing that now, as well

open aspen
high eagle
#

oh! i forgot to mention that the crash happens when i open my mod's "jokers" tab in the collection

zealous glen
wintry solar
#

I do not

zealous glen
#

If soul sprites are a thing for stickers

gentle rain
#

hmmm i gotta look into soul_pos myself

hushed field
zealous glen
#

I made an Enhancement that debuffs itself but it’s not undebuffing itself correctly

zealous glen
#

Although using the Enhancement’s calculate function

gentle rain
hushed field
gentle rain
#

mm i suppose

hushed field
#

but if you know anything about coding, your insight may be sharper than mine, so you may very well be right, haha

gentle rain
#

nah i started learning coding last week lmfao

#

im just using what i know from implementing felt manor last night
if you have a joker that never references an atlas it falls back on jimbo

hushed field
#

oh fair, then fuck your insight, mine's perfect I'm literally seeing the matrix rn

high eagle
#

so what should i do?

manic rune
zealous glen
#

Update SMODS

manic rune
#

i think its not that useful when it is very likely to break on your first/second use

hushed field
zealous glen
manic rune
#

o

#

:3

#

yeah nvm then

gentle rain
manic rune
#

send the 98% to me

high eagle
#

{
"id": "supbal",
"name": "Super Balatro Sweater",
"author": ["orbytt"],
"description": "Adds some new jokers to balatro",
"prefix": "super_balatro_sweater",
"main_file": "super_balatro_sweater.lua",
"badge_colour": "c7638f",
"dependencies": [
"Steamodded (>=1.0.0~ALPHA-1225a)"
],
"version": "1.0.0" }

#

ok ill do that

gentle rain
zealous glen
manic rune
#

:(

high eagle
modern kindle
open aspen
#

what is the name of the pool for playing cards

manic rune
#

the card area below the consumable area that literally everyone uses

#

have pages instead

#

:3

#

so everyone can still use that area

prisma loom
# zealous glen I don’t think there’s a context where both `context.repetition` and `context.des...

good thing that you mentioned that, I think I figured out how to form a proper structure for my ifs blocks (i hope) and everything works now except card destruction, it doesnt happen:

            if context.cardarea == G.play and context.repetition and #context.full_hand == 1 and G.GAME.current_round.hands_played == 0 then
                if context.destroying_card and not context.destroying_card.debuff and not context.blueprint then
                    if pseudorandom('energized') < G.GAME.probabilities.normal / card.ability.extra.odds then
                        card.ability.extra.joker_triggered = true
                        return {
                            message = localize('k_hnds_zapped'),
                            colour = G.C.MULT,
                        }
                    end
                end
                return {
                    remove = true,
                    message = localize('k_hnds_energized'),
                    colour = G.C.FILTER,
                    repetitions = card.ability.extra.repetitions,
                    card = card
                }
            end
        end
    end```
open aspen
#

these are the vanilla ones. which one is the right pool

hushed field
modern kindle
# manic rune have pages instead

honestly this is soemthing ive considered, or making it so people can click a button and it just blacks your screen for a sec, and then changes your ui entirely to show cardareas (think of how windows can let you have virtual desktops or whatever, but in balala)

hushed field
high eagle
#

error

hushed field
high eagle
#

oh

manic rune
#

or figure out a way to somehow bundle up all card areas into one

hushed field
#

I'd try and write in a way that would convince the smods team to make it part of SMODS 😛

manic rune
#

-# idk if thats even possible

manic rune
#

i think that as long as you write it

modern kindle
#

since everyone already needs that

manic rune
#

it will be accepted

#

:3

open aspen
#

this is gonna be like the subworld library mod of this game

#

fr

hushed field
#

Bepis, I don't write great code, I just sound confident when I talk about it sometimes

gentle rain
hushed field
#

especially when it comes to UI, haha

manic rune
#

as they always say

modern kindle
manic rune
#

^

open aspen
#

anyone know what pool is used for playing cards? so i can have my sticker work on playing cards

high eagle
hushed field
high eagle
#

(sorry im a bit dyslexic

hushed field
manic rune
#

would it be funny

#

if i release a lib for adding pages to your jokers' description

#

:3

hushed field
#

a good hack for that is to just ctrl-f a key and see if it finds the other uses. And many editors highlight all instances of the same text when one is selected, which is also a good way to check it!

manic rune
#

pro tip: ctrl + shift + F will find that instance in all files

#

-# and you can replace them all to something too

zealous glen
manic rune
manic rune
zealous glen
#

I think the only challenge is regenerating the UI

zealous glen
open aspen
manic rune
zealous glen
#

I know they have a button to open a pop up

#

That’s not what I wanted

manic rune
#

all you need to do is

card:stop_hover()
card:hover()
#

and it will regen the ui

zealous glen
#

But I thought it was the dumb solution lol

modern kindle
#

nope youre a genius

manic rune
#

its the fastest way, definitely

#

and very compact too

#

:3

zealous glen
manic rune
#

you can see how it regens the ui

#

-# didnt realize the first seconds were laggy

zealous glen
manic rune
#

i think this is smoother

#

so yeah, dont worry, it definitely works

#

:3

zealous glen
#

Hmmm

high eagle
zealous glen
#

Maybe I’ll use that for keyword descriptions

manic rune
#

mhm

zealous glen
#

Do you have the code for it at hand?

high eagle
manic rune
#

you can do what N' did, he added an info queue saying smt like

#

"Hold F to show smt smt"

zealous glen
#

To regenerate the UI

#

Do you create a keybind that detects if it’s hovering over a card

#

Then recreates it?

hushed field
# high eagle ...im lost

i'm so sorry, I sent you on a wild goose chase. There wasn't a spelling error, I just checked my screen recording, and I hit backspace the moment I opened the file without noticing, and created that error myself 😢

modern kindle
#

ice out here seeing ghosts

hushed field
#

dumbest I've felt in literal years 🙂

modern kindle
#

my hands dont like listening to the order i tell keys to be pressed in so i often be mistyping

manic rune
# zealous glen Then recreates it?

nope, it actually just increases a "page" var inside your joker, which generate_ui uses to figure out which description it should load

#

the code is all in my mod github's page

#

in jokers.lua, if you want to take a look :3

fervent thicket
#
calculate = function (self, card, context)
    if(context.final_scoring_step) then
      sendDebugMessage(G.hand.cards[1]:get_id(), "FGLOGGER")
      if #context.full_hand == 1 and G.GAME.current_round.hands_played == 0 and SMODS.has_enhancement(context.full_hand[1], "m_stone") then
        sendDebugMessage("Worked", "FGLOGGER")
        card.ability.extra.totalmult = card.ability.extra.totalmult + card.ability.extra.mult
        card.ability.extra.durability = card.ability.extra.durability - 1
        return {
          message = card.ability.extra.totalmult,
          colour = G.C.MULT,
          delay = 0.45, 
          remove_card = context.full_hand[1]
        }
      end
    end
  end

This is where that error is occuring. Could someone tell me what's wrong with it?

zealous glen
#

Actually that looked too painful

manic rune
#

im actually pretty proud that i got it working

#

during like

#

the first 2-3 weeks of modding lol

zealous glen
manic rune
#

thats where the :stop_hover() and :hover() comes in

manic rune
zealous glen
zealous glen
manic rune
#

.oh im fucking dumb

#

IM SO SORRY I MISUNDERSTOOD

#

😭

humble girder
manic rune
#

🙏

open aspen
open aspen
#

i have to assume default. but also that would be a very ambiguous/misleading name

modern kindle
#

if people dont answer, you can just test the pools yourself and find the answer

zealous glen
humble girder
zealous glen
humble girder
#

you can feel free to manipulate the UIBox tree from within that function as needed

open aspen
#

wait

#

so enhanced card

#

ok question, does this ignore compat?

humble girder
#

you can also store any amount of metadata in config

manic rune
open aspen
#

cause if so this whole tangent was useless because this sticker will never show up randomly it only will ever be applied

humble girder
#

it would be pretty bad if you didn't use a dirty flag

manic rune
#

-# whats a dirty flag

humble girder
#

it's a flag that dresses in latex in the bedroom

zealous glen
#

🇺🇸

manic rune
#

-# huh??? 😭

humble girder
#

one extra function call per update frame that does nothing but check a bool flag would not be a massive performance hit

manic rune
zealous glen
modern kindle
manic rune
#

you would probably need to handle some conditions in the apply function itself

humble girder
manic rune
#

ALL OF MY JOKERS USE UPDATE :333

open aspen
#

u sure?

manic rune
open aspen
#

i wasted a lot of time on that 😭

humble girder
#

a dirty flag for a cache or a regular operation is a flag that you can set as an indicator that something needs to be refreshed or regenerated

manic rune
#

i guess thats true

#

hm

#

but my method still works, right?

humble girder
#

i mean, yeah

#

nothing wrong with it

manic rune
#

since using yours would mean that i will need to rewrite my generate_ui code

hushed field
manic rune
#

-# and uh, im still trying to push out updates as fast as possible

open aspen
zealous glen
#

I don’t know where I would begin to implement Baliame’s method

#

So I don’t think I will

humble girder
#

it's still worth keeping in mind because you don't always have an easy unhover-hover solution

open aspen
manic rune
#

you would probably still need to use your own generate_ui function for the jokers

#

then use that update function for the ui

#

and tells it to load different descriptions depending on a var

#

-# im guessing

open aspen
#

or do those consumables randomly have the sticker. I am making stickers that never show up naturally

zealous glen
hushed field
manic rune
#

i will take note of that, thanks!

manic rune
#

"#1#"

and changes it everytime you want a new description right

#

-# i actually did that for the stickers which shows debuffs and buffs

hushed field
zealous glen
zealous glen
#

Which goes in loc_vars

manic rune
#

:3 whats that

zealous glen
#

That’s how I made dynamically updating Jokers

manic rune
#

oh

open aspen
manic rune
#

so thats what they are for, like misprint?

open aspen
#

is it just modid_sticker_name?

zealous glen
#

@manic rune

manic rune
#

icic

#

thats nice

zealous glen
open trench
#

it took me forever

#

but I finally got modding working :3

zealous glen
#

But they don’t regenerate automatically

manic rune
#

nice!

zealous glen
#

Here it’s fine because they don’t need to

#

Since they only change once you hover away to select a card

manic rune
#

true

#

but what if you use handy which allows you to play cards without having to get your mouse off the joker though

#

:3

hushed field
manic rune
#

fair

hushed field
#

that specific example might be slightly confusing because the sticker is called 'Extra Large', it's not part of some set called extra, haha

zealous glen
#

Well if I implement the rehover key, it would help

#

Baliame is still typing; I’m scared

manic rune
#

same

manic rune
#

hes gonna absolutely decimate me

#

💔

manic rune
#

"you buffoon, thats not how you do that"

zealous glen
#

After Baliame is done with me:

long sun
#

hi, i have this code:

if context.buying_card and context.card.config.center.set == "Joker" and not context.card.edition and pseudorandom('possession') < G.GAME.probabilities.normal / card.ability.extra.odds then
      context.card:set_edition{negative = true}
          card_eval_status_text(card, 'extra', nil, nil, nil, { message = "Possessed!" })
    end```
manic rune
#

im taking the bullet for you

#

:3

long sun
#

this triggers on every Joker, and also causes the buy price to increase while the Jokers are being purchased.

#

what did i do wrong? ^^

humble girder
#

given that you have direct access somewhere to the UI nodes you can do like an empty row

-- Where the UI is defined
local node = {n = G.UIT.R, config = {align = "cm", func = "lazy_load_or_update_my_special_row", card = context.other_card, created = false}, nodes = {}}

then put your function in G.FUNCS

G.FUNCS.lazy_load_or_update_my_special_row = function(e)
    -- Lazy loading: e.config.created = false initially
    -- Dirty flag: We can use metadata from the node config (in this case, card). Set flag on the object being referenced.
    if not e.config.created or e.config.card.ui_dirty then
       -- Destroy all child nodes for the row. You can also update existing nodes in-place.
       for _, child in ipairs(e.children) do child:remove() end
       e.children = {}

       -- Create some node that you want to add
       local node = {n = G.UIT.T, config = {text = localize('k_omg_it_works_ex'), scale = 0.5, colour = G.C.BLACK}}
       
       -- Add new nodes under the updated UIE node
       e.UIBox:set_parent_child(node, e)

       -- Recalculate UIBox sizes
       e.UIBox:recalculate(true)

       -- Unset lazy loading / dirty flag.
       e.config.created = true
       e.config.card.ui_dirty = false
   end
end
zealous glen
#

Of Jokers in the shop?

manic rune
long sun
#

like, a joker that costs $6 is bought for $9

manic rune
#

i only used it for checking conditions if a button can be pressed

#

😭

long sun
#

(or, whatever the Negative price would be)

manic rune
#

thats actually much nicer though, hm

zealous glen
humble girder
#

usually you would hook the corresponding create_UIBox_foo function

zealous glen
manic rune
#

is it weird how the cassette joker from bunco mod specifically triggers my generate_ui function

humble girder
#

you can freely manipulate the balatro DOM there before it's parsed into a UIE

long sun
#

oh okie :D

twilit cargo
#

mila mila mila (this is so scuffed)

long sun
#

cheers ^^

zealous glen
primal shoal
humble girder
#

yeah uhh

#

can't help you there, UI code is stupid amounts of trial and error

zealous glen
humble girder
#

i wonder if even thunk still understands it

zealous glen
#

I think I’ll stick to the easy solution

humble girder
#

nothing really wrong with that

gentle rain
#

hmmmmmm
wondering if its possible to use like the glossy voucher shader, but only have it render on certain parts of the joker to initate the gloss this album imitate

manic rune
#

i think what baliame suggested is a more "all-rounded" solution to most ui problems that require refreshing the ui

zealous glen
#

Like soul sprite

#

Or write a custom shader

manic rune
#

and uh, anything that requires update too, i suppose

humble girder
zealous glen
manic rune
#

but i dont think its that necessary for what im doing

manic rune
#

its definitely nice to keep it in mind though, i can see it being extremely useful for other cases

humble girder
#

it's also arcane magic, so i can't explain how it does that

zealous glen
#

I think I’m gonna use it for keyword definitions

gentle rain
#

bleh

#

shaders

zealous glen
manic rune
hushed field
#

shaders and ui are systems you less so understand and more so commune with through arcane ritual ❤️

zealous glen
#

It’s easier

humble girder
#

but in theory if you apply some sort of tone mapping that pushes values away from 0.5 luminosity (lower if lower or higher if higher) to the output of it then it should get a similar result

manic rune
limber blaze
#

shaders are basically pure math with some extra things added on to make it "nicer"

#

ui is fine because its less annoying imo

humble girder
#

i'm sort of good with shaders tbh

gentle rain
# zealous glen Try this

mmm the thing abt multiple layers is that the one above would move around like normal soul sprites wouldnt it?

humble girder
#

UI is worse

zealous glen
limber blaze
#

i love making ui and im so bad at making shaders

zealous glen
#

The UI is the most important part in their opinion

#

If I remember it correctly

manic rune
#

i can see why

limber blaze
#

i always make sure i have a good ui system near the start but first is like probably overkill

manic rune
#

not over-the-top, its clean

limber blaze
#

no point making the ui if you cant get the actual gameplay to work

manic rune
#

it looks nice to the eyes

thin anchor
#

what the hell are you doing here little man

manic rune
#

its like, probably the perfect ui design localthunk couldve chosen

#

if that somehow makes sense

hushed field
#

that's pretty obvious when playing Balatro, yeah, the game's success is largely UI-based, I'd say, because while the game itself is super fun, card games always rely on UI and feedback

zealous glen
#

It has some issues

#

But it’s very good

manic rune
#

its light on the eyes, which is pretty important for an addictive game like balatro

humble girder
tepid crow
#

is a joker's return extra not a perfect "multiple return"? having some weird issues, especially with retriggers

gentle rain
zealous glen
zealous glen
limber blaze
#

this is why i never work in love or lua because i hate them and im much better at making ui systems outside of love

zealous glen
#

But at that point it should be easier

gentle rain
#

yeyeye

open aspen
#

how can i use debug plus to add a modded sticker

humble girder
#

personally I wouldn't do soul sprite for an extra shader pass, the first shader pass already has all the information needed, and you can literally combine shader outputs by multiplying them together

manic rune
zealous glen
humble girder
limber blaze
tepid crow
zealous glen
humble girder
#

it's probably even the correct one if you're making a commercial game

humble girder
#

it would lol

gentle rain
hushed field
#

Some people think UIs are fun, after all

zealous glen
manic rune
humble girder
#

oh i mean

#

thunk's on this discord

manic rune
#

eval SMODS.Sticker["...

#

smt smt

hushed field
#

i assume thunk talks to people sometimes, victin

manic rune
#

use Ice's code to apply the sticker to your cards manually

limber blaze
#

i like starting with the ui very early so its definitely an understandable approach but i just think starting first isnt always the best idea in all situations

zealous glen
limber blaze
#

especially if youre trying to make something that you dont know if youll be able to

humble girder
#

i've talked to reynad before on the merit of being on the bazaar discord and i don't fee like it's anything special ¯_(ツ)_/¯

limber blaze
#

then you sink a ton of time into making it look nice before you can actually test if your idea is feasible

humble girder
#

i used to talk a lot to the slay the spire devs

manic rune
zealous glen
limber blaze
#

people forget that developers for the most part are just normal people

frosty dock
limber blaze
#

well yes im speaking generally

manic rune
#

"can you add stats to a joker, i wonder"

#

which all led to the creation of my mod

#

:3

open aspen
#

sorry for all the questions: which is the localization for stickers here?

zealous glen
limber blaze
#

completely offtopic to balatro but the idea for my game started out as trying to see if i could make stardew valley but realistic and i built from ther

neat plover
#

how do i change the title logo like cardsauce?

manic rune
manic rune
#

why are all the smods people here

#

😭

open aspen
manic rune
#

are we summoning smodxodia

frosty dock
#

also misc.labels for the label

zealous glen
#

Oh you’re surprised by the SMODS people but not by thunk

neat plover
onyx sonnet
#

Smodsopolis

manic rune
#

its more impressive if you see something happening before your eyes

primal shoal
#

after two mods im gonna start working on sfw mods now lol

frosty dock
manic rune
#

uhh if you understand what i mean :3

modern kindle
manic rune
#

im catching up to u aure

#

:3

zealous glen
manic rune
#

only been 2 months since i was here too, actually

modern kindle
#

yea whateve rive got you both b eat

#

this is golf rules

primal shoal
frosty dock
limber blaze
zealous glen
#

How many messages do I have

frosty dock
#

i don't even have the most messages here
-# (yet)

manic rune
#

huh

#

im actually very surprised i have like, half of you guys' messages

modern kindle
#

i came in 1/27 but i dont ask too amny questions i just break shit until it works

zealous glen
limber blaze
#

i dont really chat that often here i just post stuff and dip most of the time

manic rune
#

...balustro

modern kindle
#

plus i do alot of searching

manic rune
modern kindle
#

most of the times questions are answered

manic rune
#

i love socializing with this community

primal shoal
onyx sonnet
#

im only at 1k .... 💔

manic rune
#

everyone is nice to talk to :3

neat plover
#

i need to calm down

hushed field
modern kindle
#

i like socializing with bepis, ice, aiko

manic rune
#

and i try my best to help everyone when i can too

modern kindle
#

vic is neat too

frosty dock
manic rune
zealous glen
onyx sonnet
#

big fan of bepis

frosty dock
manic rune
#

❤️ thanks guys

onyx sonnet
#

aure do you enjoy doing tech support?

modern kindle
#

ngl i feel intimidated by eremel but im sure hes cool

i feel like a child to that mans knowledge

john smods here feels like a celebrity in my eyes that im not worthy to speak to casually

manic rune
#

should i be worried :3

onyx sonnet
#

:3c

manic rune
turbid maple
#

john "john smods" smods

primal shoal
#

I LOVE tech surport cause i do it all the time

limber blaze
neat plover
#

i like socializing with anyone that doesnt call me an overanticipated lost and absolutely traumatized eggplant found in the woods, so i like this server

modern kindle
frosty dock
#

else why would i be doing it haha

turbid maple
#

I love doing tech support when I just tell people to read the manual

manic rune
modern kindle
neat plover
primal shoal
zealous glen
#

aure seems very down to earth

tepid crow
modern kindle
#

aure is neat but just feels miles above me so i cant talk to him until im smarter

limber blaze
#

a lot of people just want you personally to explain it rather than them reading but i love reading manuals and stuff

open aspen
manic rune
#

i havent got to talk with aure for a long time yet, but i still feel a sense of intimidation whenever i talk to him

limber blaze
#

i hate having to learn things through videos and stuff unless i really have to

manic rune
#

simply because hes just that good 😭

modern kindle
#

lars is also cool

manic rune
#

like, im INFERIOR compared to him

limber blaze
#

see this is why im a narcissist

turbid maple
#

video tutorials are the bane of my existence

limber blaze
#

dont get intimidated by anyone even when they are better than me

thin anchor
#

you have no idea how much i hate this joker
you have no idea how much pain i had to suffer through

modern kindle
tepid crow
#

you guys will feel a lot more comfortable talking to aure after seeing some of the smods "oopsies" lmfao

brazen tusk
#

what would i use to check for the amount of a card played?

zealous glen
frosty dock
neat plover
#

its like, wtf im just a randm dude in a server with super nice nerds while im here just FUCKING ASKING HOW TO CHANGE THE SPLASH SCREEN

i need to sleep

modern kindle
#

whats funny is aure is almost a decade younger than me and i still just dont want to bother the guy

primal shoal
brazen tusk
limber blaze
#

i just love reading and doing things for myself rather than having to have another person involved even in video format

#

a lot of people and videos just do things too slowly also

neat plover
thin anchor
frosty dock
limber blaze
#

looking up videos on how to do 1 hyperspecific thing always treats me as if im a child who knows absolutely nothing about doing anything its really annoying

zealous glen
primal shoal
modern kindle
frosty dock
limber blaze
#

i just personally have come to accept that some people will always be better at some things than me even if i hate it and want to always beat everyone

open aspen
#

bruh...

tepid crow
limber blaze
#

im older than aure

zealous glen
modern kindle
open aspen
modern kindle
open aspen
#

why is it returning nil

frosty dock
#

that's actually just discord timestamps rounding up

frosty dock
#

I'm 18

manic rune
#

...oh, i think im the youngest here

#

:3

high eagle
modern kindle
thin anchor
limber blaze
#

im 19, 20 in december

zealous glen
#

I had noticed aure’s bio changed and wished them happy birthday

neat plover
turbid maple
#

off by one error

twilit cargo
#

we figured out dynatext breakingchains breakingchains breakingchains freedom!!!!

limber blaze
chrome widget
modern kindle
#

gonna explode

modern kindle
frosty dock
high eagle
humble girder
#

children everywhere :v

manic rune
twilit cargo
frosty dock
#

the timestamp includes the day if you hover on it, so that would give it away

zealous glen
manic rune
#

i dont think its fair getting a head start that early, aure

limber blaze
#

ive been interested in programming for like as long as ive had sentience im just not dedicated enough to learn or practice a lot of things like shaders and visual effects and stuff which is what i suck the most at

chrome widget
#

If it matters, it might have something to do with how atlases are loaded between vanilla and modded jokers. Vanilla jokers don't have an atlas by default. When set_sprites() is called, it manually sets the atlas for Jokers on them, so they have nil before them

frosty dock
#

lol tbf i was doing university-level math next to school at 15 so I can see where the head start argument is coming from

primal shoal
modern kindle
#

its still crazy to think about people born in 06 and later to me
my little brother was born in 08 and he still feels lik an infant to me though hes a teenager now

manic rune
high eagle
chrome widget
#

IMO a lot of savants or heavily successful people in any field had head starts. Talent doesn't exist, but being accommodated and developing a passion towards a specific interest early in life does help a lot to prioritze it within your adult responsibilties later