#💻・modding-dev

1 messages · Page 549 of 1

high verge
#

Rip

next timber
#

am I using the new (to me. i havent updated smods in ages) probability syntax wrong? it seems like this is how youre meant to use it so idk why it's showing 1 in nil

wintry solar
#

it is 100% looping through the entire deck every time quantum enhancements are checked

#

that WILL cause mega lag

mystic river
next timber
#

oh shit im dum

#

its card.ability.extra.odds

#

ty lol

faint yacht
wintry solar
#

that seems very strange

tepid crow
#

btw, is there a way to take ownership and/or overwrite an atlas?

this surely isn't the right way, but it's the only one I could make work

    SMODS.Atlases['casl_sleeve_atlas'] = nil
    G.ASSET_ATLAS['casl_sleeve_atlas'] = nil
    SMODS.Atlas{ key = 'casl_sleeve_atlas', px = 73, py = 95, path = 'sleeves.png', prefix_config = false }
wintry solar
#

you just need the last line iirc

faint yacht
#

raw_key?

wintry solar
#

prefix config should be a table though, right?

#

I don't remember because I don't use it 🙃

red flower
#

i think false works

tepid crow
#

docs said it can just be set to false but who am I to trust the docs

faint yacht
#

-# But yeah, I have 0% idea what's up with my mod causing lag when a specific Joker is involved or how to do the enhancement sharing deck better...

#

-# Partially considered making my quantum enhancement optional feature a toggle so that the two items don't get initialized.

tepid crow
# wintry solar you just need the last line iirc

logs say this (and the textures indeed don't change); using raw_key instead or combined with prefix_config seems to do nothing

INFO - [G] 2025-08-27 00:24:28 :: WARN  :: Atlas :: Object casl_sleeve_atlas has the same key as an existing object, not registering.
INFO - [G] 2025-08-27 00:24:28 :: WARN  :: Atlas :: If you want to modify an existing object, use take_ownership()
#

an attempt with take_ownership

    SMODS.Atlas:take_ownership('casl_sleeve_atlas',
        {
            path = 'sleeves.png',
            mod = SMODS.current_mod
        }
    )

results in no changes to the textures

zealous glen
#

Not the same key. Same name

#

The key shouldn't be the same since mod infixes exist

wintry solar
crystal perch
#

rq question how would i make a joker emplace a copy of used spectral cards

red flower
#

so if you have the same key it will be treated as the same

zealous glen
#

What controls the position of pop-up messages (e.g. when a Joker makes a card score)

zealous glen
zealous glen
#

That's which card has the pop-up message

red flower
zealous glen
#

not the position of the message relative to the card

red flower
#

just add the prefix yourself

zealous glen
tepid crow
robust marsh
#

I'm sorry if this sounds stupid but I don't know how to properly use this

zealous glen
red flower
#

instead of spectral is your key in lowercase

faint yacht
robust marsh
#

thank you

wintry solar
#

from what I remember, consumable types weren't prefixed because having to type your mod prefix in every situation where you need to reference the type would be a massive pain so people just need to use unique keys

red flower
#

i just prefix them

zealous glen
zealous glen
wintry solar
#

yeah I prefix mine too

faint yacht
#

🤷 So I'm not sure what to do with the QE stuff.

minor magnet
#

stone card not updating front after changing enhancement

#

how do i fix this

#

the number on the card does not update

#

it stays blank

wintry solar
#

QE are just jank and make the game lag, I don't think there's much you can do about it

rotund sable
faint yacht
#

...I'd at least think others using QE are less laggy than mine...

wintry solar
#

do you have any optional card areas turned on by chance?

faint yacht
#
togabalatro.optional_features = function()
    return {
        cardareas = { deck = true, discard = true },
        retrigger_joker = true,
        quantum_enhancements = true
    }
end

Yes.

next timber
#

do the new probability functions automatically apply probabilities.normal?

zealous glen
#

I made it apply to the three Shop CardAreas

#

I can PR it to SMODS
-# tomorrow

next timber
#

awesome

frosty rampart
wintry solar
robust marsh
faint yacht
#

Commenting out cardareas = { deck = true, discard = true }, reduced the lag, sure.

#

I'll probably rework the only Joker that checks for context.cardarea being G.deck or G.hand, then.

daring fern
# crystal perch bump
if context.using_consumeable and context.consumeable.ability.set == "Spectral" then
    local copy = copy_card(context.consumeable)
    copy:add_to_deck()
    G.consumeables:emplace(copy)
end
crystal perch
#

thank you

#

i think what i was missing was i was using card instead of context.card

crystal perch
red flower
#

it's context.consumeable iirc

crystal perch
#

oh my mistake

#

that works

crimson tapir
#

does anyone know the opacity of the glass joker

crimson dune
#

I am trying to create an info-queue styled (aka detailed_tooltip) hover-on-HUD for my "overshoot" UI thing, but so far, the best I can do is a modified version of the poker hand HUD (tooltip).
To try to allow this tooltip appearance and possibly formatting, I tried to reverse engineer the generate_card_ui to only obtain the necessary elements for the UI, but doesnt work out so far (results in a crash).

function create_UIBox_detailed_tooltip_fake_unik(tooltip)
    local full_UI_table = {
        main = {},
        info = {},
        type = {},
        name = 'done',
        badges = badges or {}
    }
    local desc_nodes = (not full_UI_table.name and full_UI_table.main) or full_UI_table.info
    if full_UI_table.name then
        full_UI_table.info[#full_UI_table.info+1] = {}
        desc_nodes = full_UI_table.info[#full_UI_table.info]
    end
    localize{type = 'MiscDesc', key = tooltip.key, nodes = desc_nodes}
    
    
    full_UI_table.name = localize{type = 'name', set = tooltip.set, key = tooltip.key, nodes = full_UI_table.name}
    if full_UI_table.name then
        full_UI_table.info[#full_UI_table.info+1] = {}
        desc_nodes = full_UI_table.info[#full_UI_table.info]
    end
    localize{type = 'MiscDesc', key = tooltip.key, nodes = desc_nodes}
    local desc = full_UI_table
    return {n=G.UIT.ROOT, config={align = "cm", colour = G.C.CLEAR}, nodes={
      {n=G.UIT.R, config={align = "cm", colour = lighten(G.C.JOKER_GREY, 0.5), r = 0.1, padding = 0.05, emboss = 0.05}, nodes={
        info_tip_from_rows(desc.info[1], desc.info[1].name),
      }}
    }}
  end

I'd also tried reverse engineering/copying aiko's descriptiondummies, but it didnt work out
and the closest suggestion was trying to look into yggdrasil's code, but didn't have much clue

#

and part of the UI code as well:

hover = true, 
can_collide = true,
id = 'unik_overshoot_desc',
unik_fake_tooltip = {text = localize("overshoot_unik_" .. G.GAME.OvershootFXVal)},
crimson tapir
#

does anyone know the opacity of the glass joker

wintry solar
wintry solar
#

<@&1133519078540185692>

karmic creek
#

all the crypto. its mine

zealous glen
#

vonnegut mining crypto

crimson tapir
#

does anyone know the opacity of the glass joker

elfin hull
#

Anyone willing to help me out a bit? Someone pointed out my mod may need to be updated and my PC shit itself a while ago. Anyone know how to fix? Been a while

jolly shadow
#

lol

#

its compatible with bmm already

faint yacht
#

...well, now we wait for Talisman to update to handle SMODS.scale_card?

elfin hull
#

I dunno. Similar question with Sonic X mod I made a while ago. I may look into this.

thick drift
#

so I finally got back to working on my mod and I'm still struggling with the same issue regarding context.post_trigger

#

it seems like the code is never being read which leads me to believe the problem is either context.card_area = G.jokers or not context.blueprint

#

but I feel like neither of those should be issues, so idk if it's a bug or I'm misunderstanding something about the game

#

(all of these are passed through the and operator in a calculate function)

lament agate
#

is it possible to add perma repetitions now with the 0827

red flower
#

yes

lament agate
#

sweet

#

im using all of the new features

red flower
#

also i don't think you need the area check at all

frosty rampart
#

let the numberslop begin

twilit tundra
#

where glop

faint yacht
#

...huh, how do I adapt this for SMODS.scale_card...

if context.using_consumeable and not context.blueprint then
  card.ability.extra.curchips = (G.GAME.consumeable_usage_total and G.GAME.consumeable_usage_total.all or 0) * card.ability.extra.bonuschips
end
high verge
#
    key = 'helluvaquipsL1',
    type = 'loss',
    extra = { center = c_star },
    loc_txt = { ['en-us'] = { "Fuck!", } }
}```

Can someone tell me what I'm doing wrong with the new JimboQuips feature? It's telling me it has a nil value for the quip.
frosty rampart
faint yacht
#

-# operation function to rescue---

wintry solar
#

Like this

faint yacht
#

The message doesn't reflect the new card.ability.extra.curchips value... and the initial value in operation is not of use to me due to the Joker scaling regardless if owned or not.

wintry solar
#

Give it a custom message too
I left the initial bit in my mistake, apologies

faint yacht
#

The message uses the pre-scaled value... do I also need to change the vars to include the change itself?

scaling_message = {message = localize{type = 'variable', key = 'a_chips', vars = { card.ability.extra.curchips } }, colour = G.C.CHIPS }
wintry solar
#

You’d put the calculated value in there, but this isn’t really a scaling joker tbh

faint yacht
#

...yeah, isn't...

wintry solar
#

It’s just passive based on a value

harsh belfry
#

+15 chips when consumable used vs 15 chips for every consumable used

faint yacht
#

Now, I have a different one that uses either 3xvalue or value by itself conditionally when scaling.

#
for k, v in ipairs(context.removed) do
    if v.config.center ~= G.P_CENTERS.c_base then
        SMODS.scale_card(pcard, {
            ref_table = card.ability.extra,
            ref_value = "xchip_mod",
            scalar_value = "xchip_increase",
            no_message = true,
            operation = function(ref_table, ref_value, initial, change)
                ref_table[ref_value] = initial + 3*change
            end,
        })
    else
        SMODS.scale_card(pcard, {
            ref_table = card.ability.extra,
            ref_value = "xchip_mod",
            scalar_value = "xchip_increase",
            no_message = true,
        })
    end
end
#

...I'd just rather not invoke the "Upgrade!" message per card destroyed like before the change to a singular one.

wintry solar
#

Do you categorise this as one scaling event or a scaling event per card destroyed?

faint yacht
#

Per-card, but I'd rather not spam messages.

clear ocean
wintry solar
#

That all looks fine then apart from the bottom one should have operation = "X"

clear ocean
#

Also, this is anew feature only for dev

frosty rampart
#

the new smods update is out

harsh belfry
#

fr

faint yacht
wintry solar
#

Oh wording is funky I guess

high verge
wintry solar
#

I misinterpreted

high verge
#

Any clue what I'm doing wrong?

faint yacht
#
if context.remove_playing_cards then
    for k, v in ipairs(context.removed) do
        if v.config.center ~= G.P_CENTERS.c_base then
            -- Add 3x0.05.
            SMODS.scale_card(pcard, {
                ref_table = card.ability.extra,
                ref_value = "xchip_mod",
                scalar_value = "xchip_increase",
                no_message = true,
                operation = function(ref_table, ref_value, initial, change)
                    ref_table[ref_value] = initial + 3*change
                end,
            })
        else
            -- Add 0.05.
            SMODS.scale_card(pcard, {
                ref_table = card.ability.extra,
                ref_value = "xchip_mod",
                scalar_value = "xchip_increase",
                no_message = true,
            })
        end
    end
end
unkempt thicket
#

Whats the use case for scale_card?

#

-# whats its purpose

faint yacht
#

Easier detection and manipulation of scaling Jokers.

harsh belfry
wintry solar
#

Look in here

unkempt thicket
#

So i should edit the cards that change their own values with said function?

faint yacht
#

It's an opt-in feature, but yeah, go read that discussion post.

unkempt thicket
#

Reading all that, theres a lot of changes ill have to make.

versed swan
#

oh, you can use scale_card over stuff that resembles card.thing = card.thing + card.delta?

frosty rampart
#

yea

versed swan
#

🤔🤔🤔🤔🤔

#

very interesting

frosty rampart
#

and by using scale_card, it allows other modded content to detect when (and even modify how) your card is scaling

unkempt thicket
#

I did need to do that for a joker

wintry solar
unkempt thicket
#

There is the code i have conflicts

#

And the optional ones will be usefull for some jokers i have to do

faint yacht
#

God...

card.ability.extra.Xmult_current = card.ability.extra.Xmult_current + (context.ending_shop and card.ability.extra.add_shop*8 or context.playing_card_added and context.cards and #context.cards and card.ability.extra.add_shop*#context.cards or card.ability.extra.add_shop)
frosty rampart
#

Nothing Ever Happens joker: all scaling jokers no longer scale, prevent the next change in ante, self destructs

clear ocean
knotty steppe
#

how do i make it so a joker triggers its effect more then once with it visably triggering in game?

charred widget
#

Hi friends! I have an issue that needs fixing

#

wait hold on

#

nevermind i fixed it

knotty steppe
#

kinda? i want the joker to retirgger itself without doing so infittly

manic rune
#
if context.retrigger_joker_check and context.other_card == card then
  repeat{
    repetitions = 1
  }
end
#

prob smt like that

knotty steppe
#

where would i add this?

manic rune
#

in your calculate function

#

it would retrigger itself once

knotty steppe
#

at the very top of the function

manic rune
#

the order shouldnt matter

charred widget
#

nevermind again hold on

#

my yveltal.lua file now has a nil value where its mult should be. how can we fix this?

knotty steppe
manic rune
#

download lua extension

charred widget
manic rune
manic rune
charred widget
#

oh

manic rune
#

also u dont need the display_size parameter 😭

#

its 71 95 by default already

charred widget
#

well that wasnt me that was just what joker forge generated the file with

charred widget
manic rune
#

add x_mult_inc = 0.1 in config = { extra = {...

charred widget
#

ah

knotty steppe
#

now what

manic rune
#

restart your vsc

#

it should underline where you got the syntaxing wrong

knotty steppe
#

it says a if is missing a corrisponding end

#

but its right there

obtuse wraith
#

What's the issue?

faint yacht
#

Talisman needs to be updated for latest stable.

obtuse wraith
harsh belfry
#

is talisman updated for latest smods? (the scale_card changes)

gilded goblet
# knotty steppe

Twin, you need to close the function with end, you're only closing the if statement rn

harsh belfry
#

bro put repeat

gilded goblet
#

Could you share it?

knotty steppe
#

dont roast it too hard its my first

harsh belfry
#

bro put repeat

knotty steppe
#

lemmie put the file not rhe whole thing

harsh belfry
knotty steppe
#

yea?

harsh belfry
#

i think that is supposed to be return

knotty steppe
#

it wokrs thx

twilit tundra
#

what

#

why did that get blocked

#

hmm today i will make a balatro mod clueless

github randomly deciding to screw me over:
remote: Invalid username or token. Password authentication is not supported for Git operations.
ouggghh not this again

knotty steppe
#

is it because i told it to run 500 times

harsh belfry
#

hmm perhaps

knotty steppe
#

why does it pause

twilit tundra
knotty steppe
#

i knwo its becuase the number is 500
but why does bigger number make pause

knotty steppe
#

but the calculationg screen is only up for a split second

harsh belfry
#

dunno then

wet crag
#

the background is placeholder until i muster the strength to make my own cool space pixel art, all credit to the absolute beasts who made lost edition

gilded goblet
#

It's because it usually takes some amount of time for bigger calculations
I don't know the specifics but yeah

wet crag
#

thank you thats so kind wtf

gilded goblet
#

Like seriously, there's not one joker I've seen from you where I've been like "that's silly..." or "I don't know about that..."

wet crag
#

:,D

twilit tundra
obtuse wraith
#

Someone ping me if you find what it is.

gaunt folio
#

what swrong with my code to be causing this? I have talisman enabled if thats the issue

#

might have to update it though

red flower
#

yeah it's talisman

#

im assuming because you return a value based on the current chips

obtuse wraith
#

It like had an edition.

red flower
obtuse wraith
red flower
obtuse wraith
#

Gotcha.

gaunt folio
#

yep issue was fixed

#

i had an older version

manic rune
#

how do i have the button rendering behind the card......

#

i have it rendering the same as .children.use_button and you can see that its behind the card (SELECT)

red flower
#

do it in the drawstep

manic rune
#

wuh

#

fuck

#

i havent used drawstep before 3:

modern kindle
#

time to learn and become even stronger

red flower
#

there's a drawstep for buttons that replaces that

manic rune
red flower
#

yes

manic rune
#

wtf.................

#

i thought its only for tags

#

sob

#

thanks

faint yacht
#

-# ...how safe is playing a sound on a crash screen, anyway... 🤔

red flower
#

i figured this out a couple of days ago lol

manic rune
#

smt like this, right?

red flower
#

sounds right

manic rune
#

actually idfk why i added the not not

red flower
#

dunno

#

i don't think it can be another type

gilded goblet
#

Just curious

faint yacht
#

Just a "what if" thought.

gilded goblet
#

LMFAO

#

That'd wake someone up

faint yacht
#

Though the current implementation works only if you crashed after initialization.

daring fern
#

clear ocean
faint yacht
#

That video in particular uses play_sound(sfxkey)... but I am gonna use NFS instead.

manic rune
#

could be because of multiple draw functions? idk ive seen you using that a lot recently

daring fern
manic rune
#

hmmmmm

#

dunno, only the devs should know where their mod can potentially lag 3:

faint yacht
#

the local crashdata = love.filesystem.newFileData((togabalatro.nfs or nfs).read(togabalatro.path.."/assets/sounds/macperforma5400.ogg"))

fallow urchin
#

has anyone had an issue with jokers seemingly randomly no longer loading into the game? I've got this joker which has worked fine, and nothing has changed on it looking at my old commits but it is no longer showing up in game.

is there something I could've written in another joker that is causing it not to load?

daring fern
fallow urchin
#

vscode search shows no other occurence of that string

daring fern
fallow urchin
#

hmm testing adding another joker that is a duplicate of an existing working joker with a new key & name it doesn't appear, it looks like I just can't load more than 24 jokers

#

but adding bugged code into thrifty_joker or the duplicated joker causes the game to crash?? i am so confused

#

found it, was a duplicate key no idea what with

shy wind
#

Hey I remeber someone here posted tutorials for how to do designs for cards with templates included but I can't find it, does someone have it? I kinda want to have my own custom facecards and jokers

daring fern
#

faint yacht
#

...well damn, how do I access the global hand_chips and mult from here then...

SMODS.scale_card(card, {
    ref_table = card.ability.extra,
    ref_value = "chips",
    scalar_value = "hand_chips",
    scalar_table = "_G",
    operation = function(ref_table, ref_value, initial, change)
        ref_table[ref_value] = initial + change
    end,
    no_message = true
})
versed swan
#

isn't scalar_table supposed to be type table?

faint yacht
#

-# oops.

versed swan
#

it happens to the best of us lol

faint yacht
#

To be fair, it's like 7:29 AM and I've yet to go to bed, basically almost done converting all the scaling I use to SMODS.scale_card...

charred widget
#

hello friends I have a couple things I'd like to discuss and hopefully fix

#

first of all

#

the joker I'm testing, Dialga, is supposed to take you back one ante if you defeat a boss blind with it in the leftmost joker position

#

and it does go back one ante

#

but the game immediately puts me forward another ante

#

how can i prevent this

daring fern
charred widget
faint yacht
#

Or, with new contexts...

if context.modify_ante and context.ante_end then return { modify = -1 } end

?

frosty rampart
#

can you do that?

#

i don't think you can do that, context.ante_change runs after the ante actually changes

faint yacht
#

-# Just thinking, I've yet to use such contexts, but I am too tired to experiment currently with 'em as I'm prepping an update.

exotic flower
#

hi i just started modding and my game crashes as soon as the deck is rolled out
https://hastebin.com/share/hicocahazu.yaml

its only 4 mods and i only downloaded stuff that the github for the main overhaul said was compatible

daring fern
# charred widget

Also why are you using a function to check the position instead of just doing if G.jokers.cards[1] == card

charred widget
#

also something weird happened while i was testing it

#

i used Deck Creator to get a deck with Dialga in it to playtest it

#

but it ended up giving me some... interesting shop choices

#

for some reason Jimbo just kept showing up

daring fern
charred widget
#

alright

#

wait what is that

charred widget
#

alright thanks

exotic flower
#

whats "quip"

pastel kernel
#

So I know how to make a deck, how do I make it so that all playing cards are aces?

mystic river
daring fern
mystic river
#

i assume

charred widget
#

alright folks, i think i figured out what is wrong with my mod.

#

so in jokerforge i undid all the ways that my jokers could appear in the shop. they can't be found in the shop, buffoon packs, or judgement.

#

HOWEVER, It may have removed them from the pool of jokers available, but they haven't exactly removed them from the instances in which they were supposed to appear

#

so it puts them in the shop, the packs, and in judgement, but THEN it reminds itself that it can't, and just replaces them with Jimbo.

#

so how the hell do i fix this

daring fern
charred widget
#

i found how the hell i fix this

#

jokerforge just reset the rarity weight to 1

#

for some reason

#

even though i put it to zero

#

so i set it back to zero so now they shouldn't appera

#

ok new problem

#

so what I intended to happen was for Arceus to destroy Giratina after the end of the shop

#

but that doesn't happen

daring fern
charred widget
daring fern
charred widget
charred widget
#

alright something new happened

#

well its not new

#

yveltal is still displaying nil mult in its description even though (I think) i fixed it

shut monolith
#

I'm very new to modding, can someone help me out on how make a mod to change pre-existing code (For example, the code responsible for what boss blinds do)?

pastel kernel
#
SMODS.Back {
    key = "truekinda",
    atlas = "atlas_truekinda",
    pos = { x = 0, y = 0 },
    config =  {},
    loc_txt = {
        name = "True Kinda Deck",
        text = {"Start with {C:hearts,E:1}Spinel{} and {X:hearts,C:clubs,E:1}Gar{X:clubs,C:hearts,E:1}net{}",
        "And a deck of 52 Ace Cards consisting of only the {C:hearts}Hearts{} and {C:clubs}Clubs{} suits."}

    },
    apply = function(self, back)
    G.E_MANAGER:add_event(Event({
        func = function()
            if not G.playing_cards then return false end
            for k, v in pairs(G.playing_cards) do
                SMODS.change_base(v, nil, "Ace")
                end
                if v.base.suit == 'Spades' then
                    v:change_suit('Clubs')
                end
                if v.base.suit == 'Diamonds' then
                    v:change_suit('Hearts')
                end
            
            return true
        end
    }))
end
-- I feel like there should be a loc_vars here somewhere.
}```
#

what do i do with the loc_vars

daring fern
wet crag
#

Sorry, just a quick question; any way I can make it so a Joker has no text box in the UI?

wet crag
#

yeah,

pastel kernel
wet crag
#

I want to get rid of the white part here so it's just the Joker name and badge.

daring fern
pastel kernel
wet crag
daring fern
pastel kernel
#

so do i put the change_suit inside the change_base?

daring fern
pastel kernel
#

oh

#

i see

#

so

#

i didn't know i actually did it

#

so what happened is that

#

they're all in a for loop

robust marsh
#

I'm still trying to edit my consumabletype's shop_rate for a specific deck and i'm failing quite miserably. From what I've seen it's pretty simple but I'm most definitely doing everything wrong

daring fern
robust marsh
#

alrighty

#

Yeah that worked, thank you a lot!!!

gleaming crescent
#

How do I make multiline mod description without this white background thing?

robust marsh
#

I've already asked this before but how do i tie a joker to another one's existence? So if the main one gets sold the linked jokers get removed automatically.

wintry solar
#

Destroy it in remove_from_deck

daring fern
robust marsh
languid canopy
#

hello there, this joker crashes the game when i play a hand after its gain Xchips effect has been triggered, is there a way that i can fix it ? (ping me pls)

lament agate
#

is it context.other_card.ability.perma_retrigger

daring fern
lament agate
red cradle
#

how can i get key of a random owned voucher?

red cradle
#

doesnt work

#

or i used it incorrect...

#

if i replace it with "v_blank", it works

mystic river
#

G.GAME.used_vouchers is a map, not a list, so you want

local _, voucher = pseudorandom_element(G.GAME.used_vouchers, 'seed')
mystic river
#

using tools like debug plus to check what the code is actually doing at any given moment is a vital programming skill

pastel kernel
#

How do you chance the font color of the rarity badge

#

FONT color btw

cursive gazelle
#

Wdym font color

pastel kernel
#

Text color

cursive gazelle
#

Text color ?

#

Oh

pastel kernel
#

Font refers to the text style I believe

cursive gazelle
#

That’s why

pastel kernel
#

Can you just tell me how to change the rarity badge text color

#

TEXT color, not BADGE color

lament agate
#

how do you check if a card has no enhancement

daring fern
lament agate
lament agate
daring fern
manic rune
#

wheres the code that creates the buy button when the card is highlighted in shop?

manic rune
#

o

#

thank

long sun
#

how do you check if the played hand contains another, again?

daring fern
lament agate
#
    config = { extra = { mario = 1, numerator = 1, denominator = 3 } },
    loc_vars = function(self, info_queue, card)
        return {
            vars = { card.ability.extra.mario, card.ability.extra.numerator, card.ability.extra.denominator }
        }
    end,
    calculate = function(self, card, context)
        if context.individual and context.cardarea == G.play and not context.blueprint then
            if not next(SMODS.get_enhancements(card)) and SMODS.pseudorandom_probability(card, 'meth', card.ability.extra.numerator, card.ability.extra.denominator) then
                context.other_card.ability.perma_repetitions = (context.other_card.ability.perma_repetitions or 0) +
                    card.ability.extra.mario
                play_sound('tngt_hellomario', 1.2)
                card:juice_up(0.5, 0.5)
                return {
                    message = localize('k_upgrade_ex'),
                    card = card
                }
            end
        end
    end
}
#

any ideas why this isnt working

long sun
#

i'd like to check if it contains a 4oak

red flower
daring fern
long sun
#

schweet, thanks :D

#

and you're positive that would also trigger if a 5oak is played, eg.?

long sun
#

smashing, thanks ^u^

red flower
lament agate
red flower
#

you can write all your thoughts in one message

lament agate
#

context.other_card and SMODS.pseudorandom_probability(card, 'meth', card.ability.extra.numerator, card.ability.extra.denominator) then

#

?

red flower
#

no

#

inside get_enhancements instead of card

lament agate
#

oh okay

#

also the probabilities doesnt change by 6s

#

althought i already defined the num and den

daring fern
rapid stag
rapid stag
#

in loc_vars

gaunt folio
#

This is definitely very unbalanced in late blinds but I might nerf it to decrease by 2

#

Might rework it to percentage though instead of fractions

slim ferry
#

does context.mod_probability have context.other_card or an equivalent to it?

red flower
#

context.trigger_obj

#

iirc

twilit tundra
#

asking this once more how the fuck do i do the token thing i still cant figure it out even when i generate a token with github it still doesnt accept it

primal robin
#

Salty ghost, how your hotpot thing going?

faint yacht
twilit tundra
#

both when i have the extra couple characters at the beginning and when i dont

#

is there something else i'm missing?

#

absolutely nothing i can figure out about what i'm doing wrong

#

i've tried doing ssh stuff too but it kept completely failing horribly

faint yacht
twilit tundra
#

yeah ive tried, also didnt work

#

okay so how do i unfuck my config then

#

and which config do i unfuck

wild patrol
#

So I did some trickery to the exe of balatro to load smod on this console without lovely injector

#

Wanted to get cryptid mod working

#

But couldn't get tailsman to load

#

Kept giving an calculation error

red flower
#

talisman is a lovely mod

next timber
#

how come my edition's dynamic text doesn't show when it's actually on a card?

red flower
#

i think that's a bug with editions

next timber
#

is there any way to fix it or am i a little Fucked

red flower
#

I think @chrome widget had this issue?

twilit tundra
gilded blaze
#

info_queue is wonky

#

I don't think it even supports main_start and main_end

#

¯_(ツ)_/¯

red flower
#

it does

gilded blaze
#

uh, then no idea what's wrong with main_start above

wild patrol
#

if I could figure this out

red flower
wild patrol
#

I could get cryptid mod to load on the device

red flower
#

yeah that's because the talisman patches are not loaded

carmine kiln
#

How can you duplicate a playing Card in a deck?

faint yacht
#

copy_card.

wild patrol
#

rip

#

I've managed to get the exe of balatro to load smod without the need of lovely injector

#

which is a good start

twilit tundra
#

not sure what permission thatd be though but it probably has things to do with how the project is private

#

since its failing at a git clone

chrome widget
median veldt
#

sorry for actually horrible "screenshot" i dont have access to discord on my laptop rn

how does one make this so you have to select a joker rather than a card
cuz consumables kinda go over my head and i dont think theres anything from vremade i can look at

#

taking a picture of my screen hurts i promise it wont happen again

median veldt
#

if i add a sticker to a joker do i have to manually write code to do any animation or effect or does it just do it when adding stickers

scarlet lion
#

hi guys 👋

daring fern
chrome widget
next timber
#

nw, thanks for the patch

sonic cedar
#

i have this effect that's supposed to trigger on blind start when it's the only joker, but it doesnt trigger if the ceremonial-esque has destroyed a joker before

despite it visually being the only joker there

Does ceremonial effect leave behind ghosts?

red flower
#

if something destroys another card when blind is selected it will probably destroy it in an event so it will not register as destroyed until after the context is calculated

#

you need to also check if card.getting_sliced is not true

modern kindle
#

do you guys happen to know how packs decrement their selections? ie when you hit use on a consumable in a select 1 of 2?

ive added a button to one card and it seems to ignore that

sonic cedar
daring fern
modern kindle
#

Awesome thanks

red flower
sonic cedar
#

also hi somecom how are you today

red flower
#

not me???

#

wow

modern kindle
#

Hi N

red flower
#

hii dilly

sonic cedar
chrome widget
sonic cedar
red flower
#

i just got mcdonalds ice cream

chrome widget
#

I could go for a chocolate brownie blast from the local Sonic Drive-In

modern kindle
chrome widget
#

What legions am I felling?

sonic cedar
#

ok man

modern kindle
sonic cedar
#

hi winter do you need one to oppose where do i sign

chrome widget
#

Oh I thought the Burning Legion was invading again

crystal perch
#

how can i make a voucher detect whenever a joker is destroyed then add its key to the G.GAME.chak.banned_run_keys[v.key] var

sonic cedar
# sonic cedar

@red flower no idea if the reply notif happened because internet so here

crystal perch
#

actually just how can i make a voucher detect whenever a joker is destroyed then get that joker's key

red flower
#

i read everything anyway

candid sleet
#

how would i change this so it doesn't prevent every grass card from gaining 0.1x when one reaches 1.5x?

sonic cedar
red flower
#

vouchers have calculate afaik

chrome widget
#

Anyway I'm the artistttttttt rn

crystal perch
red flower
#

good luck with the artisting winter

red flower
sonic cedar
#

good luck winter

ripe jacinth
sonic cedar
modern kindle
red flower
#

but if you're checking if there's only one joker you dont need a loop

chrome widget
red flower
# sonic cedar wdym

ok what did you show me lol
I was asking how are you checking if it's the only joker

red flower
sturdy compass
ripe jacinth
sonic cedar
ripe jacinth
chrome widget
#

I'm making a JoJo mod

red flower
chrome widget
#

So..... like yeah

red flower
#

so you dont need a loop

modern kindle
#

yea winter has made a flames mod

#

ive played a wee tiny bit of it so far cause life has distracted me

sonic cedar
red flower
#
if #G.jokers.cards == 1 then
#

if the joker is calculating then it's there so you dont need a check for it

#

but you can add G.jokers.cards[1] == card

sonic cedar
#

i seee

chrome widget
manic rune
#

can u teach me how to get good at art

#

3:

chrome widget
#

Most everything I do involves a lot of stealing and a lot of trial and error

red flower
# sonic cedar i seee

now to check if any card is going to be destroyed then you do need a loop

local count = 0
for _, joker in ipairs(G.joker.cards) do
    if not joker.getting_sliced then
        count = count + 1
    end
end
chrome widget
#

I don't actually consider myself a good artist or even an artist at all

#

I Make Art but those are kinda different things IMO

red flower
#

i want to get better at Art

sonic cedar
#

same
i feel like mine's just
ight

red flower
#

mine is bad ugly bad terrible

sonic cedar
red flower
#

yes that should fix that

#

probably

chrome widget
#

I also have some decent non-Balatro illustrations that I've made (some of it explicit unfortunately so I can't publicly share it). I mostly just like drawing cool clothes

sonic cedar
modern kindle
#

woah explicit material

chrome widget
#

I mean sure if you want, assuming you're an adult

sonic cedar
#

i am
20

#

going on 93

chrome widget
#

Horrible

sonic cedar
#

my bones are killing me

chrome widget
#

Hope you become a centenarian

sonic cedar
#

this is my third vessel im cooked

manic rune
#

sadly im not an adult yet

#

3:

modern kindle
#

enjoy being a kid

sonic cedar
#

can confirm bepis made yggdrasil from the womb

modern kindle
#

we got taxes

sonic cedar
modern kindle
#

when even is your birthday bepis

#

i gotta be able to get u a bideo game

red flower
#

wasnt it recently

manic rune
#

it already passed :p

modern kindle
#

oh my god

#

i didnt even know

red flower
#

smh

sonic cedar
#

bepis we said happy birthday right Fear

red flower
#

i did

manic rune
#

mhm

modern kindle
#

i have to get you a present tomorrow

sonic cedar
#

ok phew

manic rune
modern kindle
#

too late you already agreed

#

this is legally binding

sonic cedar
#

im waiting for my pay before i get you anything

manic rune
#

what the

red flower
#

dilly get yourself a tag

sonic cedar
red flower
#

tagless

candid sleet
#

i'm tryna make a trigger for this enhancement to send to another joker for when the mult on this enhancement goes up but it's getting triggered every time a card with the enhancement is played regardless of being in boss blind or not

modern kindle
crystal perch
#

any way that i can make it so jokers within the table G.GAME.chak.banned_run_keys[] render with a sticker/overlay when you view them in the collection

candid sleet
chrome widget
#

I had to dig around for one of my better digital pieces since I couldn't find it on my phone. This is also the character design used for this card in my mod

crystal perch
#

very cool shader

chrome widget
#

Thanks

candid sleet
red flower
#

set grass trigger to nil after the hand is played

candid sleet
#

ah yeah that fixed it thanks so much

modern kindle
#

alright ive successfully done what i needed for packs and shit thanks @daring fern for your help again

#

just had to go to da dump and find it

red flower
#

alright time to add the smods changes to vanillaremade

#

and then joyousspring

thorn pumice
#

how should i trace a crash that is just instantly closing the game? no crash screen lol

chrome widget
#

Typically means infinite loop

thorn pumice
#

i seeee

chrome widget
#

Not a lot of ways to run out of memory otherwise

#

Are you using quantum enhancements for something?

thorn pumice
#

i am not

#

i have a few mods and my hand i'm playing doesn't really seem to be any different from what i've been playing for the last couple ante's

wintry solar
#

oh wait maybe I am misunderstanding your issue

thorn pumice
#

i am not using talisman or cryptid

wintry solar
#

you crash when playing cards?

thorn pumice
#

yes but this wasn't occuring just a moment ago with essentially the same hand

#

i think the only thing different might be the boss blind hmm

#

ah no it wasn't the boss blind

#

i guess i should manually figure out what the crash it? there's nothing in logs or i checked in the wrong place :c

chrome widget
#

If it only started happening a moment ago, what's the most recent code you changed?

thorn pumice
#

i haven't changed code in these mods, they are not mine

#

i just needed debugging help so i asked here

chrome widget
#

Oh, I see

vast bough
#

what are the shader keys for the default balatro shaders that i can use in the edition 'key' parameter

daring fern
sonic cedar
candid sleet
ocean sinew
#

how to do effects at end of ante?

cursive gazelle
frosty rampart
ocean sinew
frosty rampart
cursive gazelle
#

Lmaooo

robust marsh
#

how do I make SMODS.destroy_cards(SMODS.find_card('j_[prefix]_key')) bypass eternal stickers?

red flower
#

, true

#

to the arguments

cursive gazelle
#

Hey N

red flower
#

hi

cursive gazelle
#

Is there some SMODS.x that still needs documentations

red flower
#

dunno

#

SMODS.Font does

cursive gazelle
#

I’ll check myself

cursive gazelle
#

Lol

ocean sinew
#

is there a way to set a rarity text color to a hex color?

cursive gazelle
#

There’s one for badge color

#

There’s surely a one for text

robust marsh
cursive gazelle
#

Add ,true

#

To the smods.destroy_cards

robust marsh
#

ah

#

AH alright

#

got it, thank you both

next timber
#

how does deck.cards work in challenge definition? i might be stupid but i dont quite get the control tables explanation

cursive gazelle
#

Just read the src

#

Also check vanilla remade wiki

next timber
#

what src

#

also i cant for the life of me find vanilla remade for some reason

robust marsh
slim ferry
#

where is a card's calc_dollar_bonus stored?

chrome widget
#

Wdym?

#

The dollar bonus is returned from it as a function

slim ferry
#

yeah

#

i want to know where that function is

chrome widget
#

Card:calculate_dollar_bonus(), with the SMODS custom function it calls being SMODS.Center:calc_dollar_bonus() if it's defined on the item

slim ferry
#

neither of these handle adding it to the cashout right? because i only need the number it returns

chrome widget
#

If you need the number it returns you just call it directly

slim ferry
#

alright nice

chrome widget
#

The actual round eval behavior is handled by eval_round() and a UI function I can't remember the exact name of thats something like add_round_eval_row(type)

faint yacht
#
...
add_round_eval_row({dollars = ret, bonus = true, name='joker'..i, pitch = pitch, card = _card})
...
broken rivet
#

trying to make a custom class but it seems like it failed to inject stuff, G.P_QUESTS was completely empty

G.P_QUESTS = {}

-- maximum quest difficulty
AF_Mod.max_difficulty = 3

-- class definition
AF_Mod.Quests = {}
AF_Mod.Quest = SMODS.GameObject:extend({
    obj_table = AF_Mod.Quests,
    obj_buffer = {},
    vars = {},
    config = {},

    set = "Quests",
    class_prefix = "qst",

    required_params = {
        "key", "atlas", "pos"
    },

    difficulty = 1,

    get_obj = function(self, key) return G.P_QUESTS[key] end,
    register = function(self)
        self.name = self.name or self.key
        self.difficulty = AF_Mod.clamp(self.difficulty, 1, AF_Mod.max_difficulty)

        AF_Mod.Quest.super.register(self)
    end,

    inject = function(self)
        G.P_QUESTS[self.key] = self
    end,
    delete = function(self)
        G.P_QUESTS[self.key] = nil
        local j
        for i, v in ipairs(self.obj_buffer) do
            if v == self.key then j = i end
        end
        if j then table.remove(self.obj_buffer, j) end
        self = nil
        return true
    end,

    -- TODO: use whatever the fuck SMODS.Center does
    process_loc_text = function(self)
        SMODS.process_loc_text(G.localization.descriptions.Quest, self.key, self.loc_txt, "name")
        -- SMODS.process_loc_text(G.localization.descriptions.Quest, self.key, self.loc_txt, "text")
    end,

    calculate = AF_Mod.noop,
    completed = AF_Mod.returnTrue,

    -- misc. fields
    reward = nil,
    curse = nil,
})

-- Calculate shouldn't return anything under most circumstances
function AF_Mod.Quest:calculate(context, key)
    return G.P_QUESTS[key]:calculate(context)
end

function AF_Mod.Quest:completed(key)
    return G.P_QUESTS[key]:completed()
end
AF_Mod.Quest({
    name = "avoid",
    key = "avoid",

    atlas = "quests",
    pos = {x = 0, y = 0},

    difficulty = 2,
    
    config = {
        poker_hand = "Pair",
        was_played = false,
    },

    loc_vars = function(self, info_queue, card)
        -- make this return poker hand stuff
    end,

    completed = function(self)
        return not self.config.was_played
    end,

    calculate = function(self, context)
        print("Calc")
        if context.before and context.cardarea == G.individual and context.poker_hands[self.config.poker_hand] then
            self.config.was_played = true
            AF_Mod.kill_you()
        end
    end
})
#

anyone know what the issue might be

#

wait nvm

#

i never loaded the file containing the quest

#

😃

drowsy acorn
#

is there a way for me to reference the price of playing cards in the shop?

willow scroll
#

is it possible to dynamically change the cost of a consumableType ? (a.e cost of a card from this set goes up by 5 for every card bought from the set)

cursive gazelle
#

Definitely possible

willow scroll
#

fair enough, but im asking if theres a simple method or smth im overlooking before i engage with jank

twilit tundra
#

hey is there a blank mod template somewhere?
pins dont have anything and id like a good place to start

willow scroll
frosty rampart
#

well no a blank mod template is the framework of a json file :P

red flower
#

true

twilit tundra
#

"description": "This is my really cool balatro mod. It has XChips and Reverse Tarots."
😭

frosty rampart
#

"i'll have, uhh... xchips"
"how original"
"with reverse tarots"
"daring today, aren't we?"

red flower
#

i hate that images load half the time

uneven stream
#

This might be a dumb question, but can i code mods in python?

slim ferry
#

does no_message in scale_card also override any custom messages?

slim ferry
wintry solar
#

it wont play any message on your card

slim ferry
#

because lua is very similar

limber blaze
slim ferry
uneven stream
slim ferry
#

idfk how discord rich presence works at all

#

or how discord presence works at all internally

twilit tundra
#

is there any "vanilla+" mod that doesn't have XChips 😭

slim ferry
#

extra credit i guess but that adds like zero new mechanics at all

#

so its pretty meh

robust marsh
#

is there a way to disable the negative shader?

#

specifically for one card/joker

red flower
#

is this fine or is it too confusing?

limber blaze
#

you dont need scaling message here do you

wintry solar
#

yeah you do

limber blaze
#

message_key = "a_mult" works doesnt it?

wintry solar
#

it's a custom value

limber blaze
#

or something like that

slim ferry
#

no because dagger is wierd

limber blaze
#

damn

slim ferry
#

and shows its new total value

red flower
#

i can also do this

wintry solar
#

you'd need it anyway because its 2 x cost

#

I think dagger is a bad example for how to use scaling

limber blaze
#

thats true i guess

#

yeah

#

i was gonna say that

wintry solar
#

it's one of the most complex effects

#

or rather, how to use scale_card

red flower
#

i would put it in every scaling card

limber blaze
#

it hits every mark for how things are usually not handled

wintry solar
#

oh this is for the actual code not the wiki

red flower
#

yeah

#

dagger is just the first one in scaling.toml :p

wintry solar
#

hmmm

frosty dock
#

:jimbo_spin:

red flower
#

hi aure!!

limber blaze
#

hello

slim ferry
#

how would i even do the food joker thing where they dont scale or show a message if the next scale would make the value be below 0/1 or something. if i just do the thing that the current vremade food jokers do it wouldnt account for the possibility of scaling modifications changing if it should be destroyed or not

frosty dock
#

hello modding people

red flower
#

i am in fact modding

#

lets go with this for now because it's easier and I'll change it if people dont like it

willow scroll
#

if i wanted to add a variable that persists during the current game could i just do G.GAME.[whatever] = [whatever]?

red flower
#

yes

willow scroll
#

yippie

rotund sable
#

guys don't forget to update your SMODS again

slim ferry
#

is creating a context as simple as just hooking a function and calling SMODS.calculate_context in it?

wintry solar
#

pretty much yeah

slim ferry
#

thats awesome actually

frosty rampart
#

there's a bit more work you have to do if you want to be able to return anything (and i'm not fully sure how that works, i just fucked around until it did what i wanted for my contexts), but yea if you don't need to return anything in the context it's that easy

wintry solar
#

that's not entirely true

#

all the standard calculation returns will be handled just fine

frosty rampart
#

oh right sorry, yea i was referring to custom returns (i set up contexts to modify dice rolls like you can modify probability, and trigger dice rerolls)

slim ferry
#

i imagine it has something to do with the return_table parameter in calculate_context but thats all im getting out of it

frosty rampart
#

iirc the documentation said there were maybe two different ways to do it but only the return_table parameter worked for me

slim ferry
#

theres documentation for it?

frosty rampart
#

I don't think it was a wiki page, possible I was just looking at the code or maybe some comments in the code

red flower
slim ferry
#

thats just for scoring returns though i imagine

red flower
#

nope

slim ferry
#

okay the return table is literally just returned from calculate_context apparently

#

thats good

wintry solar
#

yeah

#

if you search the code for flags = you'll find some uses of it

final jewel
frosty dock
final jewel
#

yeah like everytime I update Steamodded

frosty dock
final jewel
#

yeah some

#

Its soo weird

frosty dock
#

might be that something broke from the smods update. Try removing mods to see what's failing and see if you can update it

final jewel
#

I'm pretty sure its not from Giga, All-In-Jest and Cryptid

robust marsh
#

This is my first time creating a custom edition, how do I make it so it just has no edition?

#

nvm got it

twilit tundra
#

does SMODS.find_card just look for the card at all?
or does it also check for whether the card is debuffed?

if you have the specified joker, but it's debuffed, would find_card return true, or false?

vernal path
#

try it and see

cursive gazelle
#

does balatro not support .mp3 files

vernal path
#

use them (they are more efficient)

cursive gazelle
#

alright

frosty rampart
#

iirc it's just wav and ogg

frosty dock
#

according to smods docs, mp3 is supported but not recommended. iirc i copied that from the old sound docs which were made by Steamo + i never tested it myself. so no guarantee there

red flower
twilit tundra
#

hm. i don't think i did adding a new hand right
(mousing over it just crashes the game)

cursive gazelle
#

i'm trying to load them with love but it doesn't work for some reason . i'll troubleshoot it more

twilit tundra
red flower
#

that seems to be the localization

next timber
#

how do you make a deck start you with a specific joker?

cursive gazelle
next timber
#

i may be stupid

#

let me. go read the docs

#

lmao

#

ok there's apply

cursive gazelle
#

there's also the magic deck example

final jewel
twilit tundra
# red flower that seems to be the localization

here's my default localization json's contents, what did i fuck up?

    descriptions = {
        misc = {
            poker_hands = {
                vtude_fullhome = 'Full Home'
            },
            poker_hand_descriptions = {
                vtude_fullhome = {
                    "5 cards with at least 3 different ranks of {C:attention}4{}, {C:attention}1{} or {C:attention}3{}",
                    "{C:inactive}(Must be enabled by an ability)"
                }
            }
        }
    }
}```
red flower
clear ocean
twilit tundra
#

hand itself probably doesn't work yet as i'm still actively working on it

    key = "vtude_fullhome",
    chips = 80,
    mult = 8,
    l_chips = 35,
    l_mult = 4,
    visible = true,
    example = {
        { 'S_4', true },
        { 'H_1', true },
        { 'D_1', true },
        { 'S_3', true },
        { 'C_3', true },
    },
    evaluate = function(hand)
        if #hand < 5 then
            return {}
        end
        if not SMODS.find_card("j_vtude_scratchedjoker") then
            return {}
        end
        local candidates = { [4] = {}, [1] = {}, [3] = {}}
        for _, card in ipairs(hand) do
            local id = card:get_id()
            if id == 4 or id == 1 or id == 3 then
                table.insert(candidates[id], card)
            end
        end
        local available_ranks = {}
        for rank, cards_list in pairs(candidates) do
            if #cards_list > 0 then
                table.insert(available_ranks, rank)
            end
        end
        local total_ranks = #available_ranks
        if total_ranks < 3 then
            return {}
        end
        return {hand}
    end
})```
red flower
#

is your prefix vtude

twilit tundra
#

yes

red flower
#

are you sure

twilit tundra
#

i am sure

#

it's whats in my json

#

my prefix is vtude

red flower
#

not relevant but it should be if not next(SMODS.find_card("j_vtude_scratchedjoker")) then

twilit tundra
#

(visible being true is also temporary for debugging the lang issue, as well)

twilit tundra
#

which file?

red flower
#

the one i replied to, the localization

twilit tundra
#

path for lang is /localization/default/en_us.lua

red flower
red flower
twilit tundra
#

ah
what should it be?

red flower
#

it should be localization/en-us.lua

twilit tundra
#

hand still displays as “ERROR” and crashes when moused over

vast bough
#

has anybody got the .fs files for the shaders that balatro uses?

#

or is that just in the source code and i can look myself or what

twilit tundra
#

did i format it wrong

red flower
#

is it now in localization/en-us.lua

vast bough
#

for the first time ever i will have to go into balatro source code

twilit tundra
#

yeah it is

red flower
#

can you take a screenshot of the file structure

twilit tundra
cursive gazelle
vast bough
#

that would be wonderful

red flower
twilit tundra
#

do i need to point to it in my mod json or something

red flower
#

no

vast bough
#

am i allowed to put these .fs files in jokerforge in some way. i want the jokerforge shader editor to get presets from base balatro, idk if that is considered piracy or not lol. its not like i am sharing the code directly to the user but it will be in the codebase

twilit tundra
faint yacht
red flower
red flower
#

no

#

haha

vast bough
#

i will burn that bridge when i get to it

red flower
unkempt thicket
#

I've made a shader thats basically just a texture

#

It uses a texture

twilit tundra
#

hm
i take it aces are not 1 then in the example card format

red flower
#

ace is A

slim ferry
#

how do existing contexts (like mod_probability) handle getting multiple of the same return value from different jokers (or other things)

red flower
#

the last one takes priority usually

#

for those contexts, the result of the previous one is changed in the context

twilit tundra
#

it works!
okay now for making sure the hand actually works when played, i'll see you when i have more problems

cursive gazelle
#

yeah they weren't commented give me a minute jayden lol

vast bough
#

no worries lol

twilit tundra
timid zinc
#

Can I use other mod's atlases?

slim ferry
#

you can

cursive gazelle
#

if it exists and it's loaded

slim ferry
#

you would have to disable the automatic atlas mod prefix in prefix_config and then add the mod prefix manually though

#

what happens if the target pattern for a patch exists multiple times in a single file? will it only apply to the first instance, or to every instance of the pattern?

median veldt
#

hey uh
i'm having issues with my booster pack
the actual item is named correctly

#

but when you open it up

slim ferry
#

i think group_name should be elsewhere if youre using a localization file

median veldt
#

hm?

slim ferry
#

apparently it has to be in misc.dictionary under the pack's group_key

median veldt
#

so like
misc.dictionary.p_shark_spell_normal.group_name?

twilit tundra
median veldt
#

or just misc.dictionary.spell_normal.group_name

slim ferry
#

misc.dictionary[group_key]

slim ferry
#

group_key should be in your pack definition

#

i think

#

yeah it should

cursive gazelle
twilit tundra
#

ah. is there a related get_rank that would proc on both aces, and stuff like unstable's 1 rank? or something else along those lines

red flower
#

nope

vast bough
red flower
#

you can get a rank directly with card.base.value

slim ferry
#

just check if its an ace or unstable 1

median veldt
twilit tundra
vast bough
#

N im ngl you need a nice personal website instead of a card

slim ferry
twilit tundra
#

because im guessing its not 1

vast bough
#

proffesionalism i swear

#

or something

cursive gazelle
#

/j

red flower
vast bough
median veldt
#

there's the key but there's also the different key that's returned in loc_vars

slim ferry
#

you should have a group_key in your pack definition

red flower
#

i just bought my domain because it was cheap

vast bough
median veldt
slim ferry
#

it can be whatever you want, but youll probably be reusing it across all packs of the same type

slim ferry
#

and then to get the group name text in the game you just need misc.dictionary.<group_key> in your localization

median veldt
#

okay cool

modern kindle
median veldt
#

now completely unrelated - how on EARTH do you add a sticker to a joker

#

only thing i can think of is set_badge but idk how to use that

#

namely eternal

red flower
#

:set_sticker

#

card:set_sticker("eternal") should work

#

:set_eternal also but idk if thats recommended now

gilded goblet
#

what are badges?

#

is it that thing that appears to explain whatt a card is

red flower
#

oh wait i think it's add_sticker

twilit tundra
#

uh how do i turn on debug mode or whatever to see my own debug print statements

ocean sinew
gilded goblet
#

DebugPlus

ocean sinew
#

shaders?

red flower
median veldt
red flower
#

yes

gilded goblet
#

whatr im looking for is info queue right

red flower
slim ferry
#

okay

red flower
#

there's a times parameter

red flower
cursive gazelle
gilded goblet
# red flower yes

i dont mind pings btw sometimes i will nott see things , but yuh, ty

slim ferry
vast night
#

hey chat. long time no see. i've been wondering why my toggle dosen't save when changing screens or restarting. does anyone know? i've now read the ui page thrice and im still stumped :/

create_toggle { col = true, label = "", scale = 1, w = 0, shadow = true, ref_table = reddit_config, ref_value = args.ref_value },
twilit tundra
#

okay how the hell are none of these debug prints triggering

    key = "vtude_fullhome",
    chips = 80,
    mult = 8,
    l_chips = 35,
    l_mult = 4,
    visible = true,
    example = {
        { 'S_4', true },
        { 'H_A', true },
        { 'C_A', true },
        { 'S_3', true },
        { 'C_3', true },
    },
    evaluate = function(hand)
        if #hand < 5 then
            return {}
        end
        if not next(SMODS.find_card("j_vtude_scratchedjoker")) then
            print("SCRATCHED JOKER NOT FOUND!")
            return {}
        end
        local candidates = { [4] = {}, [14] = {}, [3] = {}}
        for _, card in ipairs(hand) do
            local id = card:get_id()
            if id == 4 or id == 14 or id == 3 then
                table.insert(candidates[id], card)
            end
        end
        local available_ranks = {}
        for rank, cards_list in pairs(candidates) do
            if #cards_list > 0 then
                table.insert(available_ranks, rank)
            end
        end
        print("FULL HOME RANKS FOUND ARE " .. available_ranks)
        local total_ranks = #available_ranks
        if total_ranks < 3 then
            return {}
        end
        return {hand}
    end
})```
#

theres just
nothing in the log at all

red flower
twilit tundra
#

(yes i know that right now this would detect too much stuff i'll work on that once the hand actaully works)

ocean sinew
# cursive gazelle flipside shaders i gave to jayden to reference

I have a question about shader cuz I was trying to make one that makes the color golden and it then it goes to green
vec4 effect(vec4 colour, Image texture, vec2 texture_coords, vec2 screen_coords) {

this is where I would change the colours?
And do I need a dissolve mask function or I can just change the color since It's a simple shader

rotund sable
twilit tundra
red flower
cursive gazelle
red flower
twilit tundra
#

oh is the whole part thing mandatory

twilit tundra
#

do i have to split it off into its own function

median veldt
ocean sinew
# ocean sinew ok thanks

is only the function to shift the color needed and dissolve mask and the main effect function or is there other ones too btw

cursive gazelle
red flower
rotund sable
twilit tundra
#

ah

twilit tundra
#

ok good news it actually ran it bad news i did the ol compare number to table thing again my debug print statement crashes 😭

vast night
# red flower what's args.ref_value

should have directly sent everything. it's a string

local create_config_toggle = function(args)
    return {
        n = G.UIT.R,
        config = { align = "cl", padding = 0 },
        nodes = {
            {
                n = G.UIT.C,
                config = { align = "cl", padding = 0.05 },
                nodes = {
                    create_toggle { col = true, label = "", scale = 1, w = 0, shadow = true, ref_table = reddit_config, ref_value = args.ref_value },
                }
            },
            {
                n = G.UIT.C,
                config = { align = "c", padding = 0 },
                nodes = {
                    { n = G.UIT.T, config = { text = localize(args.translate), scale = 0.45, colour = G.C.UI.TEXT_LIGHT } },
                }
            },
        }
    }
end

SMODS.current_mod.config_tab = function()
    return {
        n = G.UIT.ROOT,
        config = {
            align = "m", r = 0.1, padding = 0.1, colour = G.C.BLACK, minw = 8, minh = 6
        },
        nodes = {
            -- Rectangle???
            { n = G.UIT.R, config = { align = "cl", padding = 0, minh = 0.1 }, nodes = {} },

            -- Bonanza Packs
            create_config_toggle({ ref_value = 'enable_bonanza_packs', translate = 'b_reddit_enable_bonanza_packs' }),
            -- Joker Overrides
            create_config_toggle({ ref_value = 'enable_joker_overrides', translate = 'b_reddit_enable_joker_overrides' }),
            -- Joker Overrides
            create_config_toggle({ ref_value = 'enable_dev_jokers', translate = 'b_reddit_enable_dev_jokers' })
        }
    }
end
slim ferry
median veldt
#

whats the sound i gotta play for adding the sticker

red flower
red flower
#

no idea

slim ferry
vast night
median veldt
#

okay cool i dont know what I'm doing

#

it didn't add the sticker lmao

gilded goblet
#

oh wait

#

whats a sticker?

median veldt
gilded goblet
#

i thought yall were talking about seals

median veldt
gilded goblet
#

ohh okay

#

those..

vast bough
#

i have discovered that i think it is practically impossible to render love2d shaders natively in web

twilit tundra
ocean sinew