#💻・modding-dev

1 messages · Page 527 of 1

crystal perch
#

and there's no crash it just simply doesn't render the shader

chrome widget
#

SMODS no longer uses the default drawing behavior. You'll have to use the draw function on the center, add a new draw step, or hook an existing one

crystal perch
#

thank you

wintry solar
#

just add a drawstep

#

it's very straightforward imo

crystal perch
#

i believe i had this code written before that update

#

definitely prior to january this year

chrome widget
#

Actually Eremel sorry to bug you when I've already probed for it over in SMODS, but do you know a reasonable way to accomplish what I'm doing here? I need to retrigger/rescore a glass card only if it's going to shatter, but I'm not sure the most effective way to do that after the point that the shattering is determined

clear ocean
chrome widget
#

I suppose I could use probability prediction for every glass card in hand, since it's typically only calculated once

#

That just feels messier

wintry solar
clear ocean
#

for retriggering since someone could have vampire or another joker that changes or removes the enchanment, should i make it where it will only trigger if it's both a seven AND a lucky card, or trigger all sevens

knotty orchid
# clear ocean

What do you use to record gifs / videos? I use s2gif and each one is extremely heavy

clear ocean
chrome widget
modern kindle
#

yea id say either steam recording or obs

next timber
#

ok actually how do you replace an atlas image i cannot figure it out for the life of me

knotty orchid
#

Okey

#

ill try that

ivory citrus
#

Helo, sorry for not responding, my laptop ran out of battery and I couldn't charge it until now.

clear ocean
chrome widget
#

For example I have a modded iem that internally reruns the glass card break chance, and it wouldn't necessarily know how to handle this if a specific case isn't made for it to know to do it twice

local ref_glass_calc = SMODS.Centers.m_glass.calculate
SMODS.Enhancement:take_ownership('glass', {
    calculate = function(self, card, context)
        local ret, post = ref_glass_calc(self, card, context)
        
        if context.destroy_card and context.cardarea == G.play and context.destroy_card == card
        and not context.destroy_card.glass_trigger then
            local shatter_mes = SMODS.find_card('c_fnwk_iron_shatter')
            local valid = false
            for _, v in ipairs(shatter_mes) do
                if not v.debuff then
                    valid = true
                    break
                end
            end
            
            if valid and SMODS.pseudorandom_probability(card, 'glass', 1, card.ability.extra) then
                card.glass_trigger = true
                ret = ret or {}
                ret.remove = true
            end
        end

        return ret, post
    end,
}, true)``
knotty orchid
#

I mean my main problem is that I want to share vids on disc and as I don't have nitro size fk me

chrome widget
#

and even still, this occurs well after retriggers are added. ugh

wintry solar
#

you could be mega jank and move where the calculation for destruction of the glass card is done to be before your context

chrome widget
#

ooughghgh yeah mega jank

crystal perch
#

mainly cuz 7s kinda suck in general lol

wintry solar
#

I'm not sure though really, in simple terms, you're trying to influence a prior step of the game, which obviously isn't very easy

chrome widget
#

yeah

#

Worst case scenario I can rework the card

crystal perch
chrome widget
#

But if there's some way to rerun scoring this late, I'll try that

#

hmmm main_scoring context with eval_card? Cause I don't want it to do any more repetitions---this is supposed to be basically a "fake" repetition done by this card only

wintry solar
#

that might work

clear ocean
chrome widget
#

in many ways bad and evil

clear ocean
#

i looked at the code for buskin and hack

#

and it seems like the same so i'm not sure what i did wrong

wintry solar
#

that seems like it would run whenever a glass card is destroyed though, not just when it breaks from being played, right?

clear ocean
#

lmao all sixes after that round its like fate itself...

chrome widget
#

uhh I could use the glass_trigger variable that doesn't seem to be used elsewhere

clear ocean
#

maybe it works differently since its a new joker?

wintry solar
chrome widget
#

Im more just curious why

clear ocean
clear ocean
void sparrow
#

guys, what is the identifier in the new probabilty code? just another random seed or something else?
and i must replace "card" by my joker key?

clear ocean
wintry solar
#

oh it might be because you're using the removed context, I don't remember how the stacking works with them actually being deleted

chrome widget
wintry solar
knotty orchid
#

What is the function to set rental to a joker?

wispy falcon
#

bump

chrome widget
#

Specifically it's a custom context added here to run for each destroyed card individually

knotty orchid
clear ocean
# clear ocean

the two things left until its done is the art and seeing if i can make something else then having a lowercase active

daring fern
next timber
#

im still confused on how to take ownership of an atlas, nothing seems to be working :p

knotty orchid
daring fern
knotty orchid
#

Perishable jokers debuff after 5 rounds

#

can I modify the rounds left for a certain joker?

daring fern
next timber
knotty orchid
wintry solar
short girder
#

how do blinds fetch hand score?

daring fern
daring fern
timid zinc
#

why is dt 0 in my update function for my joker?

crystal perch
#

anyone know i could change a joker's price based on the sticker they have, similar to rental?
to my knowledge rental's hardcoded so idk how do do it myself

short girder
#

i wanted to fetch like score per hand

daring fern
crystal perch
short girder
#

i thought there was like another way

#

but yeah let's do that

daring fern
next timber
daring fern
#

And the label I think.

daring fern
next timber
#

ah ok

#

still doesnt seem to be working

frigid cargo
#

how can i prevent legendaries and duplicates from spawning in packs?

create_card = function(self, card, i)
        local key = pseudorandom_element(G.P_CENTER_POOLS.Shape, 'booster_SGeo').key
        return { area = G.pack_cards, skip_materialize = true, soulable = false, key_append = "btct_ShapePack", key = key }
    end,
short girder
#

how do i fetch the hand debuffing in a calculate function

red flower
daring fern
next timber
#
SMODS.Atlas {
  key = "Tarot",
  raw_key = true,
  px = 71,
  py = 95,
  path = "Tarots.png"
}
short girder
#

actually do tables take higher than

distant junco
#

out of nowhere this code has started crashing in the collection?

short girder
rocky plaza
distant junco
#

it wasnt crashing before tho

rocky plaza
distant junco
#

no

red flower
distant junco
#

well i know how to stop it crashing i was just confused lol

rocky plaza
#

G.playing cards also does not exist outside a run

wispy falcon
#

Is there a way to make a game over when a condition is met?

next timber
#

find the code that causes a game over and add your condition to the if condition

red flower
short girder
next timber
#

or that

short girder
#

okay got it

short girder
distant junco
#

is there a context thats basically just "is playing the game"

short girder
#

what do you mean

#

if you're in a run?

distant junco
#

yeah

daring fern
frigid cargo
red flower
short girder
#

ohhhh...

red flower
#

also it doesnt happen at the same time as press_play

short girder
#

well i guess the elegance is lost in this one then

short girder
red flower
#

no

frigid cargo
#

What is that name 😭

short girder
#

this is a case for mods right cause this shit aint allowed

red flower
#

<@&1133519078540185692>

distant junco
#

oh wow ok

modern kindle
#

That is a name of all time

next timber
#

mods, strike this user down where they stand

distant junco
#

top 10 discord usernames of all time?

#

<@&1133519078540185692> !

#

shut the fuck up pal

short girder
#

"i dont understand anything" yeah okay dude

#

sure

frigid cargo
#

<@&1133519078540185692>

modern kindle
#

Why are we pinging mods multiple times
One suffices

#

They'll get there when they get here

wintry solar
#

this is the longest I've ever seen them take 😮

distant junco
#

oh my god

knotty orchid
#

is there any way to modify the tooltip that appears using info_queue?

modern kindle
knotty orchid
karmic creek
#

Truly one of the names of all time

distant junco
#

there we go

modern kindle
#

There he is

frigid cargo
#

Yay

distant junco
#

thanks mods

polar tulip
#

Def one of the names.

short girder
#

that was a name

old epoch
#

they have been banished

red flower
#

ty mods

modern kindle
#

Thanks mods you each get a cookie

karmic creek
#

Sorry I was in the shower okay mods are people AND we shower

frigid cargo
#

Thank you mods

frosty rampart
#

mods taking that long actually gave me enough time to report the account
thanks mods

distant junco
modern kindle
#

Proof that mods are people, not in the shower

modern kindle
#

Youre all secretly monsters i know it

next timber
polar tulip
#

N you are #1 mod pinger, I reckon

knotty orchid
#

🫡

red flower
#

im in here too much

modern kindle
#

I got this guy games so he wouldn't be in here and he wont even play em

frigid cargo
knotty orchid
#

He's so dedicate

karmic creek
#

If I was an LLM I would have got here quicker

#

Checkmate modtheists

knotty orchid
distant junco
#

@grok is this true

red flower
#

grok would have allowed that name

knotty orchid
#

HAHAHAHA

frosty rampart
#

llms do shower, but specifically not grok

naive reef
karmic creek
#

@red flower confirmed you are a ping superstar btw

#

I see that ping I know

polar tulip
#

It's always N'

karmic creek
#

Oh yeah. This a good ping

naive reef
#

i was doing maths until 2am :( again

polar tulip
exotic hedge
#

I got the ping 5 minutes after it was sent

red flower
#

o7

polar tulip
#

This but it's N'

red flower
polar tulip
karmic creek
#

nobody ever makes memes of me

unkempt thicket
#

Mod-ding dev chat

polar tulip
#

Someone help me out and Photoshop this please B

karmic creek
#

as far as I know I guess

polar tulip
#

I'm on my way to king gizzard

willow scroll
#
            card.children.floating_sprite = Sprite(card.T.x, card.T.y, card.T.w, card.T.h, G.ASSET_ATLAS['maxboism_CustomEnhancements'], { x = 0, y = 0 })
            card.children.floating_sprite.states.hover.can = false
            card.children.floating_sprite.states.click.can = false
            card.children.floating_sprite.states.drag.can = false
            card.children.floating_sprite.states.collide.can = false
            card.children.floating_sprite:set_role({major = card, role_type = 'Glued', draw_major = card})
            card.draw_bypass = {floating_sprite = true}
    end```
i feel like im almost getting set sprites, but i still cant get it to show up
#

wait hold up why are there mods here what happened

frigid cargo
karmic creek
polar tulip
celest aspen
#

weird question since I was doing some testing with a buddy, does spawning in a joker via debugplus not prevent it from also showing up in the shop? I assume its just from that since the shop stuff should be handled by the game itself.

naive reef
willow scroll
sturdy compass
#

Mods in mod chat? Fork found in kitchen

red flower
wispy falcon
#

Is there a way to keep a variable saved for the next time the calculate gets used or does it always reset to the base value I've set?

exotic hedge
red flower
red flower
distant junco
#

chat, is there a context for being in a run

wispy falcon
wild escarp
#

Anyone have an example of a joker that levels up multiple hands?

red flower
feral tree
#

Is there a way to detect if you're playing with a specific deck?

red flower
distant junco
red flower
wispy falcon
red flower
#

uhhh probably

daring fern
exotic hedge
red flower
exotic hedge
#

I didn’t get that ping until just now

next timber
#

if anyone can help me figure out how to replace a vanilla atlas without using malverk they get a cameo joker in rascal

#

im desperate

limber blaze
#

the whole atlas or like

#

what do you wanna do here

next timber
#

i just wanna replace the texture of the atlas, taking ownership wont work idk why

wintry solar
#

why don't you want to use malverk 💔

limber blaze
#

G.ASSET_ATLAS[key] = reference_to_atlas should suffice probably maybe

#

lmk if thats secretly super janky

next timber
limber blaze
#

reference_to_atlas being something like
local my_atlas = SMODS.Atlas{...

next timber
#

id use malverk if this was like a fun optional thing but the updates to planet cards in my mod are gonna make the textures completely inaccurate in showing poker hands so id like that updated

limber blaze
#

no idea if this is best practices or not

#

but it will probably work

willow scroll
#

you can always take ownership of each card one by one and change the atlas there

next timber
#

i mean like. rascal is held together with shoelaces and dreams

#

i think something that isnt best practise will be fine

#

lol

wintry solar
#

I see

#

what are you cahnging with planet cards?

next timber
#

rascal removes the entire concept of poker hands so im changing the planet card textures to show suits instead

umbral zodiac
#

what

willow scroll
next timber
limber blaze
#

damn

next timber
#

wait hang on i forgot to remove the raw_key property

#

lemme try that

#

unlikely to change much but who knows

#

yeah still no

#

WAIT IM DUM

#

i put Tarots instead of Tarot

wispy falcon
#

What are the things that I definetly need to define in SMODS.Sticker?

daring fern
next timber
#

gonna try combining both previous attempts

next timber
#

its weired because like. G.ASSET_ATLAS["Tarot"] is the atlas i want it to be. but its just not. showing up?

wintry solar
#

oh you want planets, right?

next timber
#

yeah

wintry solar
#

do Planet instead of Tarot

next timber
#

theyre on the same atlas though ??

#

ok sure i trust you

#

you literally made The Texture Mod

daring fern
next timber
#

well thats dumb

wintry solar
#

I don't know why we make planets and spectrals use these atlases

next timber
#

its beautiful

wispy falcon
#

What's the best way to test if my sticker works?

#

I don't understand how should_apply(self, card, center, area, bypass_roll) -> bool, apply(self, card, val) & draw(self, card, layer) work or what they do TwT

willow scroll
#

ok i dont think overriding the front was a good idea

unborn bay
wispy falcon
#

And how do I use them?

unborn bay
#

apply and draw can generally be omitted

#

most stickers should just work as is out of the box without worrying about any of these

#

except for should_apply

#

which directly determines if the sticker is applicable

#
should_apply = function(self, card, center, area, bypass)
    if area == G.shop_jokers then
        return true
    end
    return false
end
#

this would mean that the sticker will always be applied if the card is on the shop for example

#

note ALWAYS

wispy falcon
#

Okay, so what do I do to make it work on only jokers?

willow scroll
unborn bay
wispy falcon
faint yacht
daring fern
#

How could one make a cards sprite a combination of other sprites, like half one sprite, and half the other?

willow scroll
willow scroll
clear ocean
#

what do you think so far

wispy falcon
#

Got an error while I was testing...

    key = "death",
    config = { extra = { roundsTillDeath = 3, roundsWithSticker = 0 } },
    badge_colour = HEX '000000',
    pos = { x = 0, y = 0 },
    default_compat = true,
    rate = 1.0,
    atlas = "death",
    unlocked = true,
    discovered = true,
    should_apply = function(self, card, center, area, bypass)
        if area == G.shop_jokers then
            return true
        end
        return false
    end,

    calculate = function (self, card, context)
        if context.end_of_round and not context.repetition and not context.individual then
            card.ability.extra.roundsWithSticker = card.ability.extra.roundsWithSticker + 1
            print(card.ability.extra.roundsWithSticker)
        end
    end
}```
wispy falcon
wintry solar
#

I don't know why they aren't automatically done tbh

#

I will try and remember to fix that

feral tree
#

is there a way to make a joker reroll the boss blind?

wispy falcon
feral tree
wintry solar
#

no, as well as config

daring fern
red flower
#

todo rename

wispy falcon
wintry solar
wintry solar
#

it is late and I should go to sleep, but this is not cursed, right?

sturdy compass
#

Is this duplicating an ability config’s values into the ability config???

red flower
#

shouldn't it use copy_table or something, i feel like this will break with table values

wintry solar
#

wtf why is apply used to add and remove stickers

sturdy compass
#

Lmao

feral tree
red flower
#

set G.from_boss_tag to true

#

before calling it

wispy falcon
#

I don't get what I need to write into apply

wintry solar
#

don't

#

just wait

wispy falcon
#

Okay

wintry solar
#

there, download latest smods and you don't need an apply function

#

or wait a couple of days for a new release

short girder
#

folks, does this work

#

actually stupid question please stand by

red flower
#

v is a card not a number

short girder
#

oh shit how do i fetch the number then

red flower
#

number of what? the size of the hand?

short girder
#

rank

red flower
#

v:get_id() <= 5

short girder
#

gotcha

#

forgot that function existed

red flower
#

and you would probably need v:get_id() >= 2 too

unkempt thicket
#

How can i make a certain card selectable in hand (like the player can select as many as these as they want but not other cards that don't meet those specifics)?

wispy falcon
red flower
short girder
#

how do i check a card's modifiers(if it has an enhancement, an edition, a seal or extra chips/mult)?

clear ocean
daring fern
short girder
#

thanks somethingcom515!

short girder
faint yacht
#

A table with keys of enhancements that the card has... or does not.

rapid stag
#

question - if i wanted to process a string like "{s:0.8,C:red}test text" into localised text the same way the game does, how can i do that?

manic rune
#

is this for UI, or

clear ocean
manic rune
#

u want to use loc_parse_string first, then use SMODS.localize_box me think

frigid cargo
clear ocean
#

what do you think of this?

manic rune
#

looks clean

red flower
clear ocean
#

and this is one reason why i draw in 1x first.

willow scroll
# unborn bay use a custom drawstep
SMODS.DrawStep {
    key = 'sand_overlay',
    order = 75,
    func = function(self, layer)
        if SMODS.has_enhancement(self, 'm_maxboism_sand') then
            self.children.sand_overlay = Sprite(self.T.x, self.T.y, self.T.w, self.T.h, G.ASSET_ATLAS['maxboism_CustomEnhancements'], { x = 0, y = 0 })
            self.children.sand_overlay.states.hover = self.states.hover
            self.children.sand_overlay.states.click = self.states.click
            self.children.sand_overlay.states.drag = self.states.drag
            self.children.sand_overlay.states.collide.can = false
            self.children.sand_overlay.role.draw_major = self
            self.children.sand_overlay:draw(self, layer)
        end
    end,
    conditions = { vortex = false, facing = 'front' },
}

im not doing them correctly, im crashing because of the draw but if i dont have the draw it wont render raah

clear ocean
#

i can try odd todd real quick to see since someone said it should retrigger all jokers and vampire too

candid elbow
#

Lucky 7s

#

Very cool

frigid cargo
clear ocean
red flower
clear ocean
#

i am thinking on letting it be blueprint/brainstorm compatable but should it only retrigger if its a lucky card?

#

all i can think of apply a simple lighting similar to oops

rocky plaza
#

hmm
someone told me the myth cards from prism and the myth cards in my mod were shown together in the same spots in the collection menu
Would i have to rename my consumable type to something else to prevent this or is there another way?

rotund sable
#

I don't think ConsumableType gets automatically prefixed with the modprefix

rocky plaza
#

ah so i will have to prefix my consumable type myself then
the localization file is gonna look so dumb 💀

#

hmm
I think another thematic word that could describe the set is "Artifact"

clear ocean
final jewel
#

Im trying to get the rank of the first held in hand card before the hand start to score

clear ocean
plain ember
#

Guys, how does merge_effects work again?

#

evening evening btw

red flower
#

SMODS.merge_effects({ret1 or {}, ret2 or {}}) where ret1 and ret2 are two calculation returns

plain ember
#

oh, so you can't add three of them

#

interesting, thanks!

red flower
#

you can add as many as you want

plain ember
#

ah

#

rlly?

red flower
#

that was just an example

plain ember
#

I have this, but for some reason printing it up doesn't grab the message nor the rest of the last stuff

#

maybe i'm doing something wrong?

red flower
#

that table needs to be inside another table

willow scroll
#

damn i think im doing something wrong with my Drawstep because my :draw(self, layer) is giving a crash related to setcolor arugment being nil

red flower
#

it takes tables of return tables

willow scroll
#

and i have no clue why, all the examples I see use draw

frigid cargo
plain ember
red flower
#

i can look into it tomorrow to PR it to smods

plain ember
#

Still doesnt get the messages

red flower
#

what's results here

plain ember
#

This is the setup, i'm trying to force activation on both jokers

plain ember
red flower
#

I think you need to pass results.jokers

red flower
plain ember
#

oh

#

Force trigger returns an calculation table

red flower
#

can you send what the print gives with results.jokers and results1.jokers

#

in merge_effects

plain ember
#

sure

rocky plaza
#

yo do i have to mess with custom ui to be able to dynamically change the amount of text on a card
I want to make a spectral card give all cards eternal, but if you currently own a joker that is incompatible with eternal, i want the card to additionally say that it destroys all jokers incompatible with eternal

red flower
#

you can have 2 different descriptions in a localization file and switch between them using key in loc_vars

or look at invisible joker for the ui method

plain ember
red flower
#

there seem to still be a jokers table inside it

#

can i see the code

plain ember
#

That's in the ["extra"]

#

results["extra"]

red flower
#

why is there jokers in the extra table

plain ember
#

Lemme send you the code

red flower
#

is this some cryptid jank

plain ember
#

Yeah

modern kindle
#

it says cryptid.forcetrigger smh

plain ember
#

Tbh i'm just making a bunch of random stuff to test how does the enviroment works

red flower
#

no i mean i know this is cryptid, i just dont know if the jank comes from cryptid

plain ember
#
SMODS.Joker {

    calculate = function(self, card, context)

        
        if context.joker_main and not context.blueprint then
            for i = 1, #G.jokers.cards do
                if G.jokers.cards[i] == card then
                    if Cryptid.demicolonGetTriggerable(G.jokers.cards[i + 1])[1] then
                        local results = Cryptid.forcetrigger(G.jokers.cards[i + 1], context)
                        local resultsl = Cryptid.forcetrigger(G.jokers.cards[i - 1], context)
                        if (results or resultsl) and (results.jokers or resultsl.jokers) then
                            local merged_effect = SMODS.merge_effects(
                                { results or {} },
                                { resultsl or {} },
                                {
                                    {
                                        message = "SPIN!",
                                        colour = G.C.RARITY.cry_epic,
                                        sound = "testplora_smb3-tail",
                                    }
                                }
                            )
                            print("\n"..dumpster(results,1).."\n^^^^results^^^^")
                            print("\n"..dumpster(resultsl,1).."\n^^^^resultsL^^^^")

                            return merged_effect
                        end

                        return {
                            message = "tf is this",
                            colour = G.C.RARITY.cry_epic,
                            sound = "testplora_smb3-tail",
                        }
                    end
                end
            end
        end
    end,
}
rocky plaza
plain ember
#

tbh this is straight stolen from demicolon joker, i'm just trying to see if i can make it work

red flower
plain ember
#

A

#

Lemme try

red flower
rocky plaza
#

alr seems fair enough

plain ember
#

Awesome

#

Thanks N

red flower
#

np

final jewel
#

How do I get the amount of card held in hand like I tried .length and .count and those doesnt work

red flower
#

#G.hand.cards

final jewel
#

oh yeah

clear ocean
#

scaled the seven

red flower
modern kindle
#

bit of a long shot but do any of you guys happen to know how to access the gpu of a steam deck? i dont have a steam deck so i have no idea how to even look at it to see what its gpu is

#

my gpu joker dont work for steamdeck so trying to figure that out

clear ocean
#

is it able to work on linux pcs?

final jewel
modern kindle
#

as far as i know yea, im gonna be having a friend of mine retest it

clear ocean
#

i can retest it for you since im on linux but i don't have a steam deck

#

i do have a 3ds and vita and stuff but not a deck unfortunately

modern kindle
#

hi smt i see u thinkin

final jewel
clear ocean
#

i have a love hate relationship with c#

final jewel
#

I hate it because of school I think

clear ocean
#

finally the final test

#

it is fair to say it is completed

frigid cargo
#

how do i use pseudorandom_probability?

plain ember
#

Bro, this thing is Broken as hell with the correct cards (super leaf) XD

#

I'm glad it works now

modern kindle
#

I cant even tell what is visually happening

clear ocean
#

what is going on with the zigzag

plain ember
#

Super leaf forces the triggering of the joker at its side, so its triggering joker and the M card

#

1 in 4 of spawning unusual jolly jokers

frosty rampart
# clear ocean what is going on with the zigzag

cryptid, that's the "jolly" edition (the edition gives +8 mult and makes the joker count as Jolly Joker for the purposes of any other joker that synergizes with them. cryptid has a lot of those synergies because of an inside joke)

mystic river
#

anyone know how you'd go about making a joker with "debuffed cards always score (splash) and give x2 mult"? context.modify_scoring_hand and context.other_card.debuff don't seem to work, on account of the card being debuffed

faint yacht
#

Card:can_calculate hook?

mystic river
#

hmm, maybe

faint yacht
#

Or patch, as this is a small one with a clear target.

function Card:can_calculate(ignore_debuff, ignore_sliced)
    local is_available = (not self.debuff or ignore_debuff) and (not self.getting_sliced or ignore_sliced)
    -- TARGET : Add extra conditions here
    return is_available
end
mighty kiln
#

this is my code to try to select a random joker, then retrigger said random joker. It has no problem selecting the joker, but dosent retrigger it

#

im trying to use this to retrigger the joker

mystic river
#

i would use debugplus to check that the other joker is in fact getting stored in card.joker as intended, because that seems unusual

#

oh that's what the print is for i guess?

mighty kiln
mighty kiln
mystic river
#

ThinkRingo
okay, my next thought would be to put a print inside the if context.retrigger_joker_check ... block to see whether the problem is that this block isn't being reached or that this return doesn't work

mighty kiln
#

ok

#

sidenote

#

i think the card backs i made look really good

mystic river
#

that is very good

mighty kiln
#

i printed a message in the context retrigger block and its not printing so

clear ocean
daring fern
rapid stag
clear ocean
# clear ocean

is it safe in the long run to delete these kind of branches

mighty kiln
daring fern
mystic river
#

i think since you're already storing .sort_id in the first block, you want to compare to card.joker in the last block

mighty kiln
#

is it because card.joker = nil

mystic river
#

i believe context.after happens. after. context.retrigger_joker_check so that shouldn't be the issue?

daring fern
mighty kiln
#

can i print the joker that was picked then make it nil

mystic river
#

well, it's only storing the sort_id and not the whole joker
but you can certainly print that before clearing it

mighty kiln
#

did you change it?

daring fern
mighty kiln
mystic river
#

the sort_id is only being used to check whether you've got the right joker

mighty kiln
mystic river
#

what does the if check in the final block currently look like?

daring fern
mystic river
#

card.joker is currently storing exactly the target joker's sort_id

daring fern
mystic river
#

so you want context.other_card.sort_id == card.joker

mighty kiln
mystic river
#

if you didn't, the answer is no

daring fern
mighty kiln
#

in the main script or deck script

mystic river
#

main script
this is for the whole mod

daring fern
mystic river
#

for me it's line 12 of the main file

#

after only some other very basic initialization

mighty kiln
#

i have it in line 10 of main.lua

mystic river
#

before anything even loads

#

i think as long as it gets set somewhere in your mod files, it's fine
but earlier is easier to keep track of

mighty kiln
mighty kiln
mystic river
#
INFO - [G] 2025-08-06 22:03:41 :: ERROR :: StackTrace :: Oops! The game crashed
main.lua:1925: [SMODS construction-deck-mod "./data/decks/construction.lua:21: attempt to index field 'joker' (a number value)
#

you're trying to get sort_id.sort_id in the final if check

#

don't do that

mighty kiln
#

ok

#

how do i fix that

rapid stag
mystic river
crystal perch
#

right now i just care about it creating a negative copy of the selected joker

mighty kiln
daring fern
ripe jacinth
#

has anyone here developed w the partners mod

mystic river
mighty kiln
mystic river
#

nope

lament agate
mystic river
#

you want context.other_card.sort_id == card.joker

mighty kiln
#

ohh

#

ok

ripe jacinth
#

anyone know how to make a partner?

daring fern
mystic river
#

context.other_card.sort_id is a sort_id
card.joker is also a sort_id
you want to compare apples to apples

ripe jacinth
rapid stag
daring fern
crystal perch
daring fern
mighty kiln
#

ok

ripe jacinth
#

can anyone teach me how to make a partner?

#

i heard from aiko they were made like jokers

daring fern
mighty kiln
#

thank you and i love you both

ripe jacinth
#

why am i so dumb

#

mfw i have a hard time reading code

mighty kiln
lament agate
mighty kiln
daring fern
daring fern
mighty kiln
# daring fern What do you mean?

i currently have 3 jokers, the chip one for flushes, the mult one for flushes, and the chip one for pairs. I made sure that the 3 hands i played had both a flush and a pair. it retriggered the flush chip one 3 times in the 3 hands i played

#

actually nevermind i was unlucky

#

i played another hand and it chose the pair one

#

tysm both of you

daring fern
frigid cargo
#

how do i info key jokers?

daring fern
subtle merlin
#

Question that may be really hard to answer quickly: how could I make a new menu pop up after selecting the deck and stake?
(If not possible as of rn then just adding a button that makes the same menu pop up to the start screen should suffice)

frigid cargo
mighty kiln
mystic river
daring fern
daring fern
#

All jokers are able to be retriggered.

#

Some jokers don't do things that are retriggerable though.

mighty kiln
#

I think i will add the check

#

also what is the variable for the number of jokers the player has

mystic river
#

#G.jokers.cards i believe

frigid cargo
mighty kiln
#

how would i write a check to see if the joker number is greater then 0 because the one i wrote crashes

daring fern
mystic river
frigid cargo
#

how do i check if [i] is a joker?

pastel kernel
#

I need to make a consumable that lets me choose a card from the collection and emplaces it in the shop at full price

daring fern
frigid cargo
pastel kernel
#

I should probably copy the code of open to lan

foggy ginkgo
#

How do I make blind debuff consumables

faint yacht
#

In set_blind, iterate over held consumables and debuff.

daring fern
frigid cargo
# daring fern `if [i].ability.set == 'Joker'`
underweardetection = 0 
        for i = 1, #G.jokers.cards do
            if [i].ability.set == 'j_btct_Underwear' then
                underweardetection = underweardetection + 1
            end
        end

what did i do wrong? its just red

ripe jacinth
#

does anyone here call jokers "jonklers" or is it just me

daring fern
#

Also you should be using SMODS.find_card

faint yacht
#
if context.check_enhancement and context.no_blueprint and context.other_card and context.other_card:is_face() and context.cardarea == G.jokers then
    return { m_stone = true }
end

seems to be crashing me...

frigid cargo
daring fern
pastel kernel
#

How does open to lan work?

faint yacht
frigid cargo
#

how can i destroy a specific joker? would i go through the joker table and check if joker is the specific joker?

daring fern
clear ocean
#

@red flower any way to make your modded jokers to work with your display mod?

faint yacht
#

That wouldn't let Pareidolia influence it...

pastel kernel
#

I need help with understanding the spectral card of yahimod that is “open to lan”

clear ocean
pastel kernel
clear ocean
#

yeah i seen the video and played the mod myself, i like yahi's stuff

pastel kernel
#

But the way it does it is different from pointer

foggy ginkgo
pastel kernel
#

Instead of taking you directly to the collection, you have to go there and press enter on your chosen card.

faint yacht
foggy ginkgo
#

Classic

stiff locust
#

the of

#
  • chips
daring fern
pastel kernel
faint yacht
clear ocean
#

honestly i think wishlist would be more like

stiff locust
#

look at the code for the uncommon/rare tags

#

they put jokers in the shop for a set price (free)

clear ocean
#

you have a higher chance to get it but you have to buy it full price even with vouchers

pastel kernel
#

And when you get it, it never shows up in the shop again

frigid cargo
pastel kernel
#

Useful for blacklisting common jokers from the shop.

#

What do you think is the best upper limit of the price?

#

I think it’s 1 billion.

#

Ok I still need to make it work somehow.

#

Even if it’s unbalanced.

faint yacht
#

...well, this 'lads happy.

foggy ginkgo
#

Yummy

faint yacht
#

Just... not sure how to work around the rank and suit not being rendered because a card is considered as Stone too.

pastel kernel
#

ali

#

have you ever made code for a consumable that works like pointer or open to lan?

faint yacht
#

I've not gone that far, no.

pastel kernel
#

damn

foggy ginkgo
#

How do I debuff certain tarot cards

stiff locust
#

ali have you ever bought splash from your shop

formal quest
#

Why is this activating on the cards held in hand at the end of the round? This is only supposed to activate on the joker itself

pastel kernel
#

how can i make a wishlist mechanical card if i can't make it spawn any card from the collection of my choice? that's like the whole point of wishlist.

faint yacht
timid zinc
#

how do i get the current number of hands

void sparrow
#

i'm making a joker that retriggers every joker for every 5 dollars you own, what did i do wrong?

faint yacht
#

Wrap the result in to_number.

faint yacht
void sparrow
#

thnk you!!!

unborn bay
#

Note on to_number and to_big related checks: these are talisman related and will not exist when talisman is nonexistent

timid zinc
stiff locust
#

add dummy functions for them so it doesnt crash without talisman

unborn bay
#
to_number = to_number or function(a) return a end
to_big = to_big or function(a) return a end
#

can we just abolish talisman already. thx

stiff locust
#

we need our score cap removal

vernal path
unborn bay
#

good

stiff locust
#

i feel like nowadays you dont have much choice but to support talisman

tall wharf
#

haya

vernal path
#

my mod is supposed to be balanced for 8 antes, there is no reason to even think about supporting it

tall wharf
#

do you not just have this kinda utility function lying around for no reason

stiff locust
#

what

faint yacht
vernal path
#

hehehe != support is very funny to me

#

mostly because its what lua should use anyway but they decided not to for no goddamned reason

tall wharf
#

(as in !=)

pearl jacinth
#

what does no id was provided mean

vernal path
formal quest
#

This code is supposed to add the hand name to a table if it's not already in the table. Why is it allowing repeats?

frosty rampart
#

table.insert inserts a value, not a key (it auto-sets the key to a number, starting at 1 and increasing normally). but your condition treats the scoring name as a key, not a value

wild escarp
#

How do I get the name of a played hand?

frosty rampart
#

context.scoring_name in pretty much any context as long as the context is during a hand scoring (e.g. context.before, context.individual, etc)

frigid cargo
#

whats the line for destroying a specific joker in the joker table?

pastel kernel
clear ocean
#

sorry that i didnt do the dreamcast one as i tried several times and couldn't get the perspective down

pastel kernel
#

i still don't know how to code in the main function of the card though.

clear ocean
void sparrow
#

question:
does the 'Joker' rarity pool update with modded rarities or you must create a new pool?

pearl jacinth
formal quest
#

Why is this not spawning a black hole with blueprint?

#

if #card.ability.extra.hands... etc is the only condition for the card spawn event, and I'm testing it with both consumable slots free

wild escarp
#

I think I've got a skeleton of this joker, but I'd like to upgrade any unplayed hands (currently it upgrades played hands), and it also adds played hands to the table multiple times, so they get levelled up multiple times (maybe not an issue once it upgrades unplayed hands). There's also the issue of numbers being left over from the level up animation (not a big deal, they get erased when another hand is selected).

calculate = function(self, card, context)
    if context.before and context.main_eval and not context.blueprint then
        card.ability.extra.scored_hands[#card.ability.extra.scored_hands+1] = context.scoring_name
    end

    if context.end_of_round and context.game_over == false and context.main_eval and card.ability.extra.scored_hands and not context.blueprint then
        for i = 1, #card.ability.extra.scored_hands do
            level_up_hand(card, card.ability.extra.scored_hands[i])
        end
        card.ability.extra.scored_hands = {}
    end
end
pastel kernel
#

I actually had the time to make this 😭

#

this is a mechanical card that lets you put any card into the shop and buy it

timid zinc
#

is there a defined context or piece of code for seals triggering?

placid frigate
#

hey I have a challenge that I only want to use 1 joker in (one you get at the beggining) but when I go into the shop I can still buy other Jokers how do I fix this?

pastel kernel
#

It disappears when you don’t buy it and leave the shop.

#

The card only works when you’re in the shop.

gleaming crescent
pastel kernel
#

Ok first off, I need to make the card pull out the collection.

#

What do I do to make that?

frigid cargo
#

Is it possible to animate soul?

placid frigate
gleaming crescent
#

You can place custom = {{ id = 'no_shop_jokers' },} inside of your rules

glass scaffold
#

How do I make a custom deck start with a Joker?

gleaming crescent
gleaming crescent
glass scaffold
mystic river
#

how do you info_queue a sticker? they're not in G.P_CENTERS and none of the obvious alternatives i could find worked

daring fern
mystic river
mystic river
gleaming crescent
pastel kernel
#

what does this mean?

G.FUNCS.overlay_menu({ definition = create_UIBox_your_collection() })
gleaming crescent
daring fern
velvet ingot
#

very new to modding, how would I make a joker that gains X1 mult everytime a hermit card is used?

pastel kernel
glass scaffold
#

So apparently eternal = true doesn't work to make a Joker spawn in as Eternal. Anyone know how to do that?

faint yacht
frigid cargo
#

Is it possible to animate soul?

placid frigate
faint yacht
frigid cargo
mystic river
faint yacht
vernal path
#

Okay, i've got this idea for a joker but i have no idea what to even start researching for
Basically, when you play a hand, a random card from your deck is also played, and should count in the hand (i.e. if you play a flush of AKQJ7 and play a 10 as well it counts as a straight flush).

#

What do I even go looking for in smods or lovely dumps?

velvet ingot
#

what should I use to edit my code? (i'm on mac btw)

vernal path
faint yacht
vernal path
pastel kernel
frigid cargo
# faint yacht ```lua card.children.floating_sprite:set_sprite_pos({x = 0, y = 0}) -- change x ...

Oh dayum ok, how would i put that in this (if this was a joker for example)?

--EvilDeckAnimation
local btct = {ticks = (5)}
local upd = Game.update
local btct_DEvil_dt = 0
function Game:update(dt)
    upd(self, dt)
    local DEvilobj = G.P_CENTERS.b_btct_DEvil
    btct_DEvil_dt = btct_DEvil_dt + dt
    if DEvilobj and btct_DEvil_dt > 0.1 then
            btct_DEvil_dt = btct_DEvil_dt - 0.1
            if DEvilobj.pos.x > 28 then 
                DEvilobj.pos.x = 0 
            else
                DEvilobj.pos.x = DEvilobj.pos.x + 1
            end
    end
    for k, v in pairs(G.I.CARD) do
        if v.children.back and v.children.back.atlas == G.ASSET_ATLAS["btct_DEvilAtlas"] then
            v.children.back:set_sprite_pos(G.P_CENTERS.b_btct_DEvil.pos or G.P_CENTERS["b_red"].pos)
        end
    end
end
mystic river
vernal path
frosty rampart
faint yacht
vernal path
#

it helps to read things 👍

frigid cargo
lament agate
#

is there a way to instantly fail a run

vernal path
#

end_round() i think, possibly

#

maybe in an event

lament agate
#

is there any mods that adds achievements?

vernal path
#

aikoyori, a couple others. we were chatting about it in modding-chat

gleaming crescent
stiff locust
#

the real question is

vernal path
stiff locust
#

is there any mod that adds achievements whose creator is also okay with x person taking the whole system

#

and putting it in their mod

vernal path
#

answer: he's the doctor, just accept it

stiff locust
#

because otherwise the rules prevent you from ripping an achivement system from another mod

mystic river
#

those rules

stiff locust
#

5th rule

lament agate
#

oh

#

@red flower can you make like

#

Achievements

#

in Vremade

mystic river
#

the little trophy on the side at least, i imagine

lament agate
#

no examples, only explanation

#

thats for sure

frigid cargo
stiff locust
#

it doesn

#

it doesn't seem tooo bad

#

lemme see if i can get it to work

lament agate
#

i might check out Cryptid for achievements

stiff locust
#

what does this mean

#

i'm very confused

lament agate
#

why is it all local

#

this is why i dont look at cryptid

stiff locust
#

if the key for the achievement was test would it be

"misc" = {
 "achievement_names" = {
  "test" = {
   "Name" = "test"
  }
 }
}

or

"misc" = {
 "achievement_names_test" = {
   "Name" = "test"
 }
}
lament agate
#

in localization?

stiff locust
#

in localization

#

i use a separate localization file

wintry solar
#

Probably ```
misc = {
achievement_names = {
test = "Name"
}
}

#

I’d have to check the code though

vernal path
mystic river
#

uhhhhhhhhhh probably somewhere, but i can't navigate the smods wiki at all so i literally just search code for stuff
but for an example here's how i use that context for one of my jokers

        --Force flipped and debuffed cards into play
        if context.modify_scoring_hand and not context.blueprint and context.other_card and (context.other_card.debuff or context.other_card.facing == "back") then
            return {
                add_to_hand = true,
            }
        end
#

you'd want to enable the optional feature to use the deck as a scoring area, pick a card at random, and do that when your randomly-selected card is context.other_card

olive hamlet
#

Hi, i was just wondering, has anyone made like a chart or something explaining code terms? Im kinda new in programming, but i dont know wth does G.C. or "for [i] = 1 ~=10" means balatro_B

vernal path
olive hamlet
#

Thanks bro

gleaming crescent
#

How do I make joker unlock upon obtaining a specific consumable?

#

I mean, this is obviously a lovely patch, but what do I have to modify?

olive hamlet
vernal path
#

Okay, here's where I'm at:

calculate = function(self, card, context)
    if context.modify_scoring_hand and not context.blueprint then
        local c = pseudorandom_element(G.deck.cards, "mystery_play")
        if context.other_card and context.other_card == c then
            return {
                add_to_hand = true,
                message = localize("k_mystery")
            }
        end
    end
end```
I doesn't work :(
I know its never entering the second `if` block and i have no idea why. I could instead get like, `sort_id`?
pastel kernel
#

Diagram for wishlist

velvet ingot
vernal path
#

The only thing an editor can do is tell you if you screwed up syntax or, occaisionally, what type something should be, since lua is an interpreted language

#

basically it means theres literally no way to test stuff without running it fully

vernal path
#

(already fixed that bit, lol)

#

oh, i also fixed G.deck to include .cards

mystic river
#

it's rerolling the card every time it calculates, which is approximately several dozen times per action
you want to store the result somewhere more permanent than that and only reroll when you need to

vernal path
#

oh hm

#

is modify_scoring_hand before or after before?

mystic river
#

not sure
you could do science and find out though

vernal path
#

that is true

faint yacht
#

Before before.

vernal path
#

dang, really?

#

uhhhh

#

hm

faint yacht
vernal path
#

oh, yeah hm

#

Well, then the question becomes how do i choose a card in advance of seemingly the most advance thing

#

well, hm

signal slate
#

Doing some stuff, Ima dump some screenshots of the mod I'm making

manic rune
#

devious sana

#

sans

#

is that almanac background

signal slate
manic rune
#

ic.....

signal slate
manic rune
#

lmao

signal slate
#

IKR

#

[Insert gif of golden freddy here, idk they don't allow gifs]

mystic river
vernal path
mystic river
#

that's why you need to activate that one smods feature

wintry solar
#

No

vernal path
#

oh, does that mean it indexed g.deck too? I figured it just means it also lets you do that but doesnt change functionality

wintry solar
#

Other card isn’t to do with card areas

vernal path
#

but it is? other_card = G.play.cards[i]?

#

does that not mean what i think it means softHUH

#

like, isn't that just indexing G.play.cards? Or does enabling the optional feature also tell the game to index G.deck.cards?

strong halo
vernal path
# wintry solar Other card isn’t to do with card areas
if context.modify_scoring_hand and not card.ability.target then card.ability.target = pseudorandom_element(G.deck.cards, "mystery_play") end
if context.modify_scoring_hand and not context.blueprint then
    if context.other_card == card.ability.target then
        return {
            add_to_hand = true,
            message = localize("k_mystery")
        }
    end
end```
This never returns, despite a print clearly showing it *has* picked a card. I'm thinking `other_card` has not indexed the deck. It might be that im not enabling the feature correctly, since there's a pile of crumpled papers where there should be documentation
```lua
SMODS.current_mod.optional_features = {
    quantum_enhancements = true,
    cardareas = {deck = true}
}```
#

i tried cardareas.deck = true but it yelled at me for making a syntax error

#

after trying this: print(context.other_card.sort_id), it is more than obvious that it only indexes the played hand, and not the full deck.
It prints one number, a couple times. Not 40 some-odd numbers.

stiff locust
daring fern
vernal path
#

Is this not the context in which i'd insert another card into the played hand?

stiff locust
#

if i had to guess you first have to insert the card into the hand

faint yacht
#

I add cards to hand even before modify_scoring_hand is called, I think.

vernal path
#

is there a context even before modify scoring hand?? Or do I just have to do a lovely patch

faint yacht
#

I technically do.

vernal path
# faint yacht I technically do.

I thought i might try to do it before the hand is processed at all, but this doesn't appear to work. Do I just have to move it after the hand is processed? Or did I make some other mistake?

[[patches]]
[patches.pattern]
target = "state_events.lua"
pattern = "inc_career_stat('c_cards_played', #G.hand.highlighted)"
position = "before"
payload = '''
if next(SMODS.find_card("j_mode_quiet"))) then
    table.insert(G.hand.highlighted, pseudorandom_element(G.deck.cards, "mystery_play"))
end
'''
match_indent = true```
#

oh wait im stupid

faint yacht
#

...you should just call draw_card there. Better yet, just put a call to global function of yours that you can freely modify.

vernal path
#

forgot to change the joker key

vernal path
faint yacht
#

¯_(ツ)_/¯

red flower
vernal path
#

am i stupid, why is this not doing anything

[[patches]]
[patches.pattern]
target = "state_events.lua"
pattern = "check_for_unlock({type = 'run_card_replays'})"
position = "before"
payload = '''
print("hello???")
'''
match_indent = true```
red flower
#

functions/state_events.lua

vernal path
#

FUCK

#

okay, what does the percent mean in draw_card?

faint yacht
#

Pitch of card drawn sound.

vernal path
#

oh, okay. I thought it might be how quickly it goes to the next part since it pauses there for about 4 seconds before finishing scoring really quickly

#

is this going through the entire deck a bunch of times?

if SMODS.find_card("j_mode_mystery") then
            draw_card(G.deck, G.play, 100, 'up', nil, pseudorandom_element(G.deck.cards, "mystery_play"))
        end```
wispy falcon
#

What is wrong with my code?

    key = "death",
    path = "death.png",
    px = 71,
    py = 95
})

SMODS.Sticker{
    key = "death",
    config = { extra = { roundsTillDeath = 3, roundsWithSticker = 0 } },
    badge_colour = HEX '000000',
    pos = { x = 0, y = 0 },
    default_compat = true,
    rate = 1.0,
    atlas = "death",
    unlocked = true,
    discovered = true,
    should_apply = function(self, card, center, area, bypass)
        if area == G.shop_jokers then
            return true
        end
        return false
    end,

    calculate = function (self, card, context)
        if context.end_of_round and not context.repetition and not context.individual then
            card.ability.extra.roundsWithSticker = card.ability.extra.roundsWithSticker + 1
            print(card.ability.extra.roundsWithSticker)
        end
    end
}```
vernal path
wispy falcon
vernal path
#

the crash log has useful information outside of the first line.

#

im tired tho, so im going to bed

red flower
#

this seems to be problem with the new commit, can u post the whole thing

wispy falcon
red flower
#

seems to be an smods bug to me

wispy falcon
#

Should I go back to the other smods version?

red flower
#

well if you go back you wont have the automatic apply thing

wispy falcon
#

So what now?

red flower
#

dont go to the collection and wait for the fix?

#

im checking if it's actually an smods thing

wispy falcon
#

Okay, thank you

red flower
#

yeah it is

red flower
wispy falcon
#

Okay, I'm sure this error is because of my code. What did I do wrong?

red flower
#

i think it needs to be card.ability.modprefix_key.extra

wispy falcon
#

I did that and it now crashes with this

    key = "death",
    config = { extra = { roundsTillDeath = 3, roundsWithSticker = 0 } },
    badge_colour = HEX '000000',
    pos = { x = 0, y = 0 },
    default_compat = true,
    rate = 1.0,
    atlas = "death",
    unlocked = true,
    discovered = true,
    should_apply = function(self, card, center, area, bypass)
        if area == G.shop_jokers then
            return true
        end
        return false
    end,

    calculate = function (self, card, context)
        if context.end_of_round and not context.repetition and not context.individual then
            card.ability.sj.extra.roundsWithSticker = card.ability.sj.extra.roundsWithSticker + 1
            print(card.ability.sj.extra.roundsWithSticker)
        end
    end
}```
red flower
#

sj_death

wispy falcon
#

So card.ability.sj_death.extra.roundsWithSticker?

wintry solar
wispy falcon
red flower
#

oh it says its cstorm_death

wispy falcon
bold wren
#

this is what happens when i boot up my challenge. i just want to test my joker 😭

daring fern
bold wren
#

oh

#

the more you know

#

i tried adding them seperately, not at once -_-

livid nimbus
# ripe jacinth can anyone teach me how to make a partner?

You can spend some time browsing the basic information of the API to understand how to make your own partner. If you encounter any problems in the process, you are welcome to feedback in the partner main post and I will try my best to help.

paper citrus
#

I'm having trouble setting up the atlas for my mod

#

I tried following what is on the SMODS documentation, but no matter what I try the game crashes while loading

#

I might be doing something wrong with the path thing

red flower
#

What's the crash?

#

and the code

paper citrus
#

gimme a sec

rotund sable
#

Are you sure the atlas key in the joker is correct
Are you using animated atlas for jokers

slim ferry
paper citrus
#
SMODS.Atlas {
    key = "ch_jokers",
    px = 71,
    py = 95,
    path = "CharlatanJokers.png"
}```
#

I think it's the path that's the problem

amber halo
#

guys im trying to install cryptid but, when i install all the mod and that i get in game, there is NO mod

red flower
#

it says thats its trying to look for a subfolder

amber halo
#

tho there is lovely command prompt

amber halo
#

okay

paper citrus
#

hold on a sec

#

aight now the game loads and gets to the new screen

#

(I moved the atlas code to my assets folder in a separate lua file)

#

but if I try to view my jokers in collection it crashes

red flower
#

it doesn't seem to be loading the atlas anymore

#

the code doesn't need to be in the assets folder

paper citrus
#

oh I hadn't made the main file load the atlas file

#

hold on

red flower
#

can i see the file structure

paper citrus
spice wadi
#

correct me if im wrong but you shouldnt be putting them inside another folder (Jokers)

red flower
#

it's 1x and 2x

paper citrus
#

ohh

spice wadi
#

atlas.lua also probably shouldnt go inside assets

paper citrus
#

hold on

spice wadi
#

doesnt make a difference iirc but its better practice not to put code inside the assets folder

red flower
#

i think you can have folders inside 1x and 2x

#

but not the other way around

paper citrus
#

hold on

#

okay it works

#

god that was such a stupid thing hahahaha

paper citrus
#

thanks for the help

primal robin
#

me using loc_txt folder instead of localization blursed

rotund sable
#

Convert

#

It's for the better

copper thorn
#

quick question, for a future joker i need to play a sound file on top of the already playing music/sound, is it hard to do ? Im starting to work on said joker so i wanted to know before hand

wispy falcon
#

What is a shader in Balatro?

willow scroll
#

Or atleast thats how I did it and it worked

copper thorn
willow scroll
#

Iirc

wispy falcon
willow scroll
#

Yeah, but I wouldn't be able yo help you, because I think your implementation would need a custom SMODS.Drawstep and I'm currently failing at that

#

And you'd need to learn how to make the shader because iirc a shader is written in GLSL

wispy falcon
#

Oh, I don't know anything about that <_>

#

Do you have like any recommendations on that? Or maybe links to learn it?

willow scroll
willow scroll
#

Iirc if you did in this channel you can find some links

willow scroll
wispy falcon
willow scroll
# daring fern Log?
engine/sprite.lua:157: bad argument #3 to 'setColor' (number expected, got nil)```
#

I'll get the full log in a bit, can't grab it rn

willow scroll
unkempt thicket
#

Where is the code for the selecting hand?

pastel kernel
#

How does Yahimod’s Open-To-Lan spectral card work?

#

I want to try and replicate the code

#

But idk how it works

copper thorn
#

so i have another question, maybe harder, bu how do i make so that my joker make the two buttons switch position at random times (or like every x seconds) ? (and by buttons i mean the Play hand and Discard buttons)

willow scroll
#

wait

#

does alt+f5 not reload sprites/atlases or smth

#

💀 alright time to perform code cleanup now that it works

pastel kernel
willow scroll
#

?

pastel kernel
#

I’m stumped.

manic rune
pastel kernel
manic rune
#

pretty sure its available in the mod's code if u want to research

pastel kernel
#

Also pointer’s kinda hard to read

#

I thought it would be simple to just define a simple collection overlay

pastel kernel
#

Which card is it?

#

I forgot

manic rune
#

how do i remove embed on phone

#

there