#💻・modding-dev

1 messages · Page 536 of 1

solar eagle
#

nor blueprint?

#

what..

foggy ginkgo
#

For?

solar eagle
#

uhhhhhh

#

i dont think thats right

solar eagle
#

if i have 0 mods enabled besides smods, blueprint and brainstorm don't work at all

#

i am trying to figure out why

foggy ginkgo
#

Actually you don't need to put the context

solar eagle
#

That's not me

solar eagle
#

that's in the card.lua dump

solar eagle
#

i have no idea what couldve broken it

foggy ginkgo
#

You have nothing installed?

solar eagle
#

disabled all other mods to test

foggy ginkgo
#

Strange

solar eagle
#

maybe my copy of smods got corrupted? lemme try reextract

foggy ginkgo
#

Yeah maybe

solar eagle
#

What the hell that fixed it

#

Thank you tim apple

foggy ginkgo
#

Yum

ashen drift
#

figured it out, it was a pretty simple hook

worthy stirrup
#

How can i make a sound play and only after the sound stops playing, the run ends

subtle merlin
#

Does context.reroll_shop come before or after the cards are refreshed?

split saddle
#

is there a way to level up a hand by several levels at once?

subtle merlin
split saddle
#

what are the args?

subtle merlin
split saddle
#

how do you see that?

#

it looks useful

subtle merlin
#

vscode and the lua extension is very helpful

rotund sable
#

Lua lsp

split saddle
#

ok

red flower
cursive gazelle
#

can i make infoqueue only show up when card is flippd

vernal path
#

Am I stupid? This apparently calls a table value, near the beginning. I have no idea to what it's reffering to: lua local function calc_set(set_table) local ret = {} for i, c in set_table do if i == 1 then ret[1] = c goto continue end if c == ret[i-1] then ret[#ret+1] = c goto continue end if (i+1) ~= #set_table then if c == set_table[i+1] then ret[#ret+1] = c goto continue end end ::continue:: end return #ret end

subtle merlin
frosty rampart
vernal path
#

FUCK i hate lua

frosty rampart
#

at the top of the for loop yea
happens to everyone, don't worry about it

sturdy compass
# subtle merlin

Probably loop through G.shop_jokers.cards and G.pack_cards.cards respectively

red flower
cursive gazelle
red flower
#

honestly, i forgot that's a thing normally hah

#

because i change it

#

i hook card:hover for that

cursive gazelle
#

that's a pretty good idea actually

#

thanks N

split saddle
#

can you get the cards that are about to score in context.before?

red flower
#

yes

#

context.scoring_hand

split saddle
#

like that?

#

didn't work :(

cursive gazelle
#

what are you trying to do

vestal magnet
#

how do i manipulate shop rates in a custom deck. i want it to just be 100% playing cards

split saddle
#

add an edition to scoring cards before they score (so that the edition actually applies)

cursive gazelle
#

that's a hard one

#

you can do it with context.individual but they win't count i think

split saddle
#

only context.before works

#

i tried

cursive gazelle
#

are doing it using a for loop

split saddle
#

what about comparing every card to the scoring_hand table?

split saddle
cursive gazelle
#

are you using a for loop to go thro scoring cards

split saddle
#

yeah

#

wait that's it probably

#

i'm using G.play.cards instead of context.scoring_hand

cursive gazelle
#

try using the scored cards table then

split saddle
#

yeah it worked

#

thanks

sonic cedar
#

I haven’t been here,,, in so long,,,, because I haven’t been modding,,,
does anyone have any issues that I could feasibly assist in

cursive gazelle
#

i tried everything

#

overlays

#

pngs

#

drawing over pngs

#

nothing helpd

sonic cedar
real night
#

how did you get the level chips/mult of a poker hand i forgot

sonic cedar
candid elbow
cursive gazelle
#

im sorry what

candid elbow
#

Shaders

#

Shady

rotund sable
cursive gazelle
red flower
sonic cedar
#

GDI N

red flower
#

G.GAME.hands[key].chips.hands.GAME.G

cursive gazelle
cursive gazelle
red flower
#

i dont memorize shit

#

my memory holds stuff for 6 months max

candid elbow
#

164.123.231.256

sonic cedar
red flower
#

green

sonic cedar
#

see what i mean

cursive gazelle
#

green

red flower
#

green is mine so it should be everyone's

sonic cedar
#

well since we’re all going to die I guess I’ll say it

#

I did not care for the color green

red flower
#

blocked

sonic cedar
#

🧊

cursive gazelle
#

no im just saying green is disliked

sonic cedar
#

especially in eggs and ham

cursive gazelle
#

toma what the

red flower
#

ok sam i am

cursive gazelle
#

lmao

cursive gazelle
red flower
#

😳

#

almost missed my train stop

cursive gazelle
#

happens to the best of us

zealous glen
#

anime men into each other's DMs

sonic cedar
split saddle
#

debuffed face cards stop counting towards this number. how to fix?

zealous glen
#

except the tetromino are alive

real night
#

is there a thing for all hands like context.scoring_name

zealous glen
#

what does "thing" mean

sonic cedar
#

there are multiple things for all hands

real night
#

like G.GAME.hands[context.scoring_name]

sonic cedar
#

Also hi vic

sonic cedar
real night
sonic cedar
#

oh wow

#

there definitely was a way to do this hold on uhhh

#

Ok iirc
.s_ for the base chips and mult
.l_ for the chips and mult added per level
And then just .chips/.mult for the total

pure salmon
#

wJUST GIVE ME MY FUCKING XMULT

pure salmon
#

did new smods just break xmult what is HAPPENING

sonic cedar
pure salmon
#

the card resets its xmult after it's played

sonic cedar
#

ok but why are you increasing the x mult after scoring

pure salmon
#

i'm increasing xmult if the card is held in hand

sonic cedar
#

ohhhhh

pure salmon
#

when it's played, it then scores and resets

pure salmon
#

the increase and reset work fine, but the card refuses to give xmult even when charged

real night
#

but i need to know how to do that for every hand

#

you never really

#

said

sonic cedar
#

oh yeah mb

sonic cedar
#

Or maybe you need an event

pure salmon
#

i'm using an event so the reset only happens in context.after

#

even using ability.Xmult just does nothing

sonic cedar
pure salmon
#

what would even be the right context

red flower
#

an enhancement?

pure salmon
#

yeah

sonic cedar
red flower
#

try context.main_scoring

#

yeah

sonic cedar
#

Yeah FINALLY

pure salmon
#

oh it's ability.x_mult

#

weird, i've used Xmult before and that was correct

real night
sonic cedar
pure salmon
#

yeah

sonic cedar
#

weird

real night
#

im dogshit at coding

sonic cedar
#

you literally have every piece of the puzzle

#

loop through the hand table and do the level stuff you wanna do

red flower
pure salmon
#

is there a config for hand_size for enhancements by any chance

red flower
#

i dont think so but if there is it's probably h_size

sonic cedar
#

wait unless that was a mod

sonic cedar
#

? You’re fine im not mad or anything

#

did you mean like you need an example

#
local hand_table = G.handlist
            local played_hand = G.GAME.hands[context.scoring_name]
            local filtered_hand_table = {}
            for _, v in ipairs(hand_table) do
            if v ~= played_hand then table.insert(filtered_hand_table, v) end
            end
            for _, v in ipairs(filtered_hand_table) do
                SMODS.smart_level_up_hand(card, v, true, 1)
            end

like one thing im doing for one of my guys is it levels up every hand except the one you just played

modern kindle
zealous glen
sonic cedar
#

hiii silly

modern kindle
#

im not freaking silly. im serioused rn.

#

.

sonic cedar
modern kindle
#

:(

#

but hello

#

:D

zealous glen
#

@red flower do you know the cause of the issue where sometimes UI elements render in the top left corner of the screen and stay there? It's not my issue but it could be related

zealous glen
zealous glen
modern kindle
#

i have a little bit of a headache but im alright

#

placed some auction bids

#

straight up gaming

ashen drift
sonic cedar
#

Are you winning

sonic cedar
modern kindle
sonic cedar
#

Nice

pure salmon
#

how do i make an enhancement that increases hand size? i can't find anything in the lovely dumps about negative playing cards at all

ashen drift
zealous glen
#

Try seeing how Negative Cards are implemented in SMODS

pure salmon
#

also can't find that

#

just shader stuff

red flower
red flower
rocky plaza
#

im getting this error when I swap to my mod's music tab
it didnt crash when i commented out func = ...
line 411 is in G.FUNCS.mul_update_music_tab()
specifically local parent_node = e.nodes[1]

pure salmon
#

god is all this really hardcoded in for negatives

wintry solar
#

@pure salmon theres a new PR that makes it a bit easier that I want to take a look at and expand a bit but it'll be after the next release

zealous glen
sonic cedar
#

SMODS.Edition:take_ownership('negative', {
        shader = 'negative',
        config = setmetatable({ card_limit = 1 }, {
            __index = function(t, k)
                if k == 'extra' then return t.card_limit end
                return rawget(t, k)
            end,
            __newindex = function(t, k, v)
                if k == 'extra' then
                    t.card_limit = v; return
                end
                rawset(t, k, v)
            end,
        }),
        sound = { sound = "negative", per = 1.5, vol = 0.4 },
        weight = 3,
        extra_cost = 5,
        in_shop = true,
        vanilla = true,
        get_weight = function(self)
            return self.weight
        end,
        loc_vars = function(self, info_queue, card)
            return { vars = { card.edition.card_limit } }
        end,
    })

found this in game_object.lua?

pure salmon
#

any tips for making it work in the meantime or just wait you think

wintry solar
#

I would just wait otherwise you'll have to rewrite it in a few weeks anyway

pure salmon
#

shit

wintry solar
#

current timeline is release this weekend, then it'd probably be implemented on dev the following week

molten relic
#

is there a variable to change how many options you get in a booster pack?

zealous glen
wintry solar
#

whats the problem exactly?

red flower
#

idk if you tested this already but this gets rid of one of the copies

molten relic
subtle merlin
rapid stag
#

sanity check, it's info_queue[#info_queue + 1] = G.P_SEALS.Red to add red seal to the info queue right? cirDerp

wintry solar
wintry solar
#

there's another one but I forgot where it was

#

ah found it

zealous glen
#

The call is made as G.reference:remove()

#

The reference disappears but the UI element remains

sonic cedar
#

hi violet

wintry solar
#

you need to do G.reference = nil afterwards

subtle merlin
#

Hai toma!

zealous glen
#

The UI isn't

wintry solar
#

remove should remove all the children of that uibox

zealous glen
#

I agree, but it doesn't seem to be removing anything

#

Do you have an UIBox example?

wintry solar
#

uhhh not to hand

zealous glen
#

Like, before removing it, I can print G.reference and it seems like the UI is there

#

But removing it accomplishes nothing except remove the reference

wintry solar
#

do you actually set it to nil

molten relic
#
    key = 'b_bali_itempack1',
    loc_txt = {
        ['name'] = 'Item Pack',
        ['text'] = {
            "Choose {C:attention}1{} out of {C:attention}3{} Item Cards"
        }
    },
    atlas = 'customBoosters',
    pos = {
        x = 0,
        y = 0
    },
    config = {
        extra = 3,
        choose = 1
    },
    discovered = false,
    group_key = {
        ["bali_itempool"] = true
    },
    cost = 4,
}     ```
#

would this work

zealous glen
#

Not only the code sets it to nil, printing G.reference returns nil

#

The reference is gone, but the UI is there

molten relic
pure salmon
#

trying to get an enhancement to swap sprites, this crashes

rocky plaza
rocky plaza
pure salmon
#

sorted it

red flower
pure salmon
#

nabbed some artbox code lol

vestal magnet
wispy falcon
#

How do I use math.random() (for true randomness) but with probabilities for different things to happen?

rocky plaza
#

preserves compatibility with seeded runs

wispy falcon
frosty rampart
#

If you explicitly don't want to respect the in-game seed: math.random() returns a value between 0 and 1, math.random(x) returns an integer between 1 and x

wispy falcon
pure salmon
#

ideally i'd want to remove the +0/X1 line when i remove an effect

wispy falcon
# red flower why

I'm making a boss blind where I want it to use randomness after every hand played to decide what happens. One of those events is 'Immediately lose'

wintry solar
#

using math.random encourages save scumming to get the outcome you want

frosty rampart
wispy falcon
wintry solar
#

I don't see why that effect would want math.random over a seeded random

red flower
#

if one of them is immediately lose then you should immediately lose and have to play another run imo

#

not save scum

#

you can make the seed be based on the time if you want it more random

wintry solar
#

for every run that is "100% impossible" there are infinitely many other runs that are "100% possible"

wispy falcon
#

Okay, how do I use pseudorandom() with different probabilities?

modern kindle
#

wouldnt it not matter anyway if immediately lose happens, you cant reroll the effect when youve lost already, the run is over

rocky plaza
#

also how would i get my menu to instantly update
tried some other janky stuff but it either crashed or made the game extremely laggy

wispy falcon
wintry solar
#

where as using math.random turns all those "100% possible" runs into "X% possible, X% impossible"

rocky plaza
#

then do if checks

wintry solar
#

I *think *you could alt-f4

frosty rampart
wispy falcon
#

Okay and is there a way, to stop the scoring for something happening?

sturdy compass
wispy falcon
rocky plaza
rocky plaza
wispy falcon
#

Okay, thank y'all :3

frosty rampart
pure salmon
#

this leaves a weird afterimage of the removed card for some reason

#

i also have this

rapid stag
#

is there a way to use SMODS.poll_seal to, while guaranteeing a seal, exclude a specific one? so all but whichever seal

red flower
#

it has an options table

#

i think you need to add all seals but that one in there

rapid stag
#

so could i iterate through G.P_SEALS for that

red flower
#

if it's your own seal you can also do it in its in_pool

wintry solar
#

you can also just poll until you don't get that one

rapid stag
#

so like this

and then i just use this keys table as the options argument

red flower
#

yeah

rapid stag
#

context.first_hand_drawn has context.main_eval, right?

red flower
#

it shouldn't be necessary anyway

#

that context is only called once

rapid stag
#

ah

#

sanity check, if i want to use SMODS.create_card to make an enhanced card, i call it with { set = 'Enhanced', enhancement = <my enhancement key here>, area = <target area here> }, right??

red flower
#

set should be Base just in case it tries to double apply an enhancement, and it's enhancement not enhancer

wispy falcon
#

Does G.STATE = G.STATES.GAME_OVER and G.STATE_COMPLETE = false not work in SMODS.BLIND{}?

red flower
#

in calculate? it should

wispy falcon
#

It does nothing in my calculate

red flower
#

may i see

wispy falcon
#

I've done this and it runs through it but just doesn't change it

        if context.press_play then
            G.STATE = G.STATES.GAME_OVER
            G.STATE_COMPLETE = false
        end
    end```
red flower
#

have you tried another context

wispy falcon
#

Just found out that context.end_of_round seems to work

#

context.joker_main doesn't work either

red flower
#

scoring contexts probably don't work

wispy falcon
#

Okay, gonna try some different stuff then

red flower
#

oh but blinds don't have joker_main

#

iirc

#

i think it's main_scoring

wispy falcon
#

Happens nothing too

willow scroll
#

if a new poker hand is added, how is it added to G.handlist? is there a calculation to place it "relative" to other hands based on chips / mult? rewriting a joker because i realised i forgot to account for custom hands and i want to make sure i can use G.handlist for ordering from "worst" to "best"

frosty rampart
#

for the most part it should be automatically ordered by its base level 1 score value, although there is an optional above_hand parameter for the poker hand that can arbitrarily reorder it (i'm not sure if that affects G.handlist off the top of my head, but i would assume so)

knotty orchid
#

I have a joker that I want himself to destroy at the end of the round. If the joker is debuffed It doesn't destroy himself.

if context.end_of_round then
   self:start_dissolve({ HEX("57ecab") }, nil, 1.6)
   self:remove_from_deck()
end

this is all my code

#

my calculate_function i mean

frosty rampart
#

jokers don't calculate if they're debuffed i think

knotty orchid
#

yeah I know

#

I don't know how should I do this

frosty rampart
#

i'd personally just let it be like this, vanilla jokers can't destroy themselves if they're debuffed either

ocean sinew
frosty rampart
#

(e.g. gros michel never rolls its chance, food jokers won't lose a round, etc)

ocean sinew
#

what are your variables in the calculate function

willow scroll
knotty orchid
#

I mean the problem is this isn't happening if the card is debuffed

#

I need this to happen even if is debuffed

red flower
#

it would be card:start_dissolve but yeah calculate doesn't run on debuff

ocean sinew
frosty rampart
knotty orchid
knotty orchid
#

or I have to hook the function

red flower
#

you would need to hook something probably

willow scroll
#

i should not be given a keyboard

knotty orchid
ocean sinew
knotty orchid
#

I've never hooked something related to context

ionic cobalt
#

hooking is pretty intuitive

#

check vanillaremade's wiki

ocean sinew
#

"You're a professional at computer science and you're specialized in the language Lua specifically LuaJit. Explain to me how hooking works" @knotty orchid send this to chat gpt trust

#

It'll make u understand everything

knotty orchid
#

I mean I know how to hook HAHAHA I'm saying I've never done it for context

#

I'll have to research a little

ocean sinew
#

wait a few hours and someone will appear and say

#

"Noooo don't do that"

#

"MODSSS"

#

It's the easiest way to ragebait

slim ferry
#

probably because telling chatgpt that its smart doesnt make it smarter

ocean sinew
#

First victim of the day

#

😈

#

I win...

slim ferry
#

i dont think thats how it works buddy

ocean sinew
#

I win 😈

red flower
#

i dont think a ragebaiter can ever win

slim ferry
#

yeah its just wasting your own time (and someone else's ig)

#

but you always lose

ocean sinew
#

I WIN HAHAHAHAHAHAHAHA

#

😈 😈

slim ferry
#

whatever you say man

red flower
mystic river
#

i win, actually

ocean sinew
#

NOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO

red flower
slim ferry
#

also ragebaiters cant win because it is a product of unemployment

ocean sinew
#

I entered his mind

red flower
#

too employed to ragebait..

slim ferry
frosty rampart
slim ferry
#

you are unemployed

ocean sinew
#

This how u ragebait like a pro 😈

ocean sinew
slim ferry
ocean sinew
#

Bro's cooking with facts but I still win 😈

red flower
#

hi meta

frosty rampart
#

hi n'

keen atlas
#

whats the pos in smods.joker used for

slim ferry
#

atlas position

keen atlas
#

cool

modern kindle
#

hi besties

slim ferry
#

as in the position of the sprite in the atlas

red flower
#

dilly is here so im taking an extended break from modding-dev

#

he can handle it

modern kindle
#

if i was kirby i wouldve just swallowed you rn

red flower
#

!?

modern kindle
#

so i could become you

#

not

#

hm

red flower
#

what power would u get

modern kindle
#

smarts

#

and beautiful

#

and awesome

clear ocean
#

As someone that is employed

red flower
modern kindle
#

i should get employed

#

ive just been sitting here disabled

red flower
#

what do u need money for

modern kindle
#

toys

frosty rampart
#

trinkets 🙂‍↕️

rotund sable
slim ferry
#

do you like to play and draw perhaps

modern kindle
#

instead of wasting like 2k a month i could waste more

#

imagine how much more i could get u N with a job

clear ocean
#

Curious question what disability you have

keen atlas
knotty orchid
#

i've found this:

function eval_card(card, context)
    context = context or {}
    if not card:can_calculate(context.ignore_debuff, context.remove_playing_cards) then
#

from base balatro

modern kindle
knotty orchid
clear ocean
#

Thank you for your service

modern kindle
#

twas an honor to do

but its why my shit ass dev work takes so long plus my dummy ness

red flower
knotty orchid
#

I mean they are clones

#

which will be removed always

modern kindle
#

i still need to get around to making a quest system similar to kinos

clear ocean
modern kindle
#

because id love to do that

clear ocean
#

For me I don’t know if I want to work on modding like I don’t feel motivated or feel like I don’t have a lot of good ideas so idk

modern kindle
#

its a mixed bag, i have had a couple of people see what ive made and they think its neat and my friends like the mod so far, so even if just ym friends like it thats good enough for me

knotty orchid
#

No IA needed 🫡

red flower
#

you did it only for your joker right

#

just to be sure haha

knotty orchid
#

only for the clone

#

of my joker

#
                        local _card = SMODS.create_card(create_args)
                        _card:add_to_deck()
                        _card.can_sell_card = function(self, context)
                            return false
                        end

                        _card.calculate_joker = function(self, context)
                            if context.end_of_round then
                                self:start_dissolve({ HEX("57ecab") }, nil, 1.6)
                                self:remove_from_deck()
                            end
                        end
                        _card.can_calculate = function()
                            return true
                        end
rapid stag
#

@red flower question -
with the way vanillaremade does certificate, if you start a blind, then restart after the card is created, does it save the card it made? because it's not for me cirDerp

clear ocean
#

It think it is also like would people actually want to play this?

clear ocean
#

Like I am not that good at pixel art (am improving) and such

red flower
#

im bad at art

red flower
#

oh nvm

#

i see

#

it calls save_run()

rapid stag
#

og certificate calls save_run()? yeah i was about to ask if the quick fix was forcibly saving the run after emplacing the card

#

well, after the context call, i guess

red flower
#

yeah seems to be the only one

#

probably because of the context it uses

rapid stag
#

oh wait, it'd have to be in the event, huh

red flower
#

no it does it after the event

rapid stag
#

yes but you add the emplace event to event manager, and the event happens after the rest of the calculate, right?

#

so the save_run() should be in the event, surely

clear ocean
# red flower im bad at art

Yeah it’s kinda the other problem it is like I feel like I need to finalise them but probably just a good idea to just do concepts first, code second, art last

red flower
#

im trying

rapid stag
#

what is the colour that editions use in their message? is it G.C.JOKER_GREY?

slim ferry
#

G.C.DARK_EDITION im pretty sure

rapid stag
#

that's tooltip text
i mean the colour in their message when they're triggered. like it's a static grey kinda colour

red flower
#

i think it's that one

rapid stag
#

i see

knotty orchid
#
  self.shared_sticker_eternal = Sprite(0, 0, self.CARD_W, self.CARD_H, self.ASSET_ATLAS["stickers"], {x = 0,y = 0})
    self.shared_sticker_perishable = Sprite(0, 0, self.CARD_W, self.CARD_H, self.ASSET_ATLAS["stickers"], {x = 0,y = 2})
    self.shared_sticker_rental = Sprite(0, 0, self.CARD_W, self.CARD_H, self.ASSET_ATLAS["stickers"], {x = 1,y = 2})
    
    self.shared_stickers = {
        White = Sprite(0, 0, self.CARD_W, self.CARD_H, self.ASSET_ATLAS["stickers"], {x = 1,y = 0}),
        Red = Sprite(0, 0, self.CARD_W, self.CARD_H, self.ASSET_ATLAS["stickers"], {x = 2,y = 0}),
        Green = Sprite(0, 0, self.CARD_W, self.CARD_H, self.ASSET_ATLAS["stickers"], {x = 3,y = 0}),
        Black = Sprite(0, 0, self.CARD_W, self.CARD_H, self.ASSET_ATLAS["stickers"], {x = 0,y = 1}),
        Blue = Sprite(0, 0, self.CARD_W, self.CARD_H, self.ASSET_ATLAS["stickers"], {x = 4,y = 0}),
        Purple = Sprite(0, 0, self.CARD_W, self.CARD_H, self.ASSET_ATLAS["stickers"], {x = 1,y = 1}),
        Orange = Sprite(0, 0, self.CARD_W, self.CARD_H, self.ASSET_ATLAS["stickers"], {x = 2,y = 1}),
        Gold = Sprite(0, 0, self.CARD_W, self.CARD_H, self.ASSET_ATLAS["stickers"], {x = 3,y = 1})
    }```

Can''t I change this to change how stakes stickers are shown?
#

I'm trying to modify the asset_atlas but I keep getting an exception

#

'atlas is nil'

#

but I'm pretty sure I've defined it

cursive gazelle
#

getting there

knotty orchid
#
local original_start_up = Game.start_up
function Game:start_up(...)
    original_start_up(self, ...)

    self.shared_sticker_eternal = Sprite(0, 0, self.CARD_W, self.CARD_H, self.ASSET_ATLAS["ina_stickers"],
        { x = 9, y = 3 })
    self.shared_sticker_perishable = Sprite(0, 0, self.CARD_W, self.CARD_H, self.ASSET_ATLAS["ina_stickers"],
        { x = 10, y = 3 })
    self.shared_sticker_rental = Sprite(0, 0, self.CARD_W, self.CARD_H, self.ASSET_ATLAS["ina_stickers"],
        { x = 11, y = 3 })

    self.shared_stickers = {
        White = Sprite(0, 0, self.CARD_W, self.CARD_H, self.ASSET_ATLAS["ina_stickers"], { x = 1, y = 3 }),
        Red = Sprite(0, 0, self.CARD_W, self.CARD_H, self.ASSET_ATLAS["ina_stickers"], { x = 2, y = 3 }),
        Green = Sprite(0, 0, self.CARD_W, self.CARD_H, self.ASSET_ATLAS["ina_stickers"], { x = 3, y = 3 }),
        Black = Sprite(0, 0, self.CARD_W, self.CARD_H, self.ASSET_ATLAS["ina_stickers"], { x = 4, y = 3 }),
        Blue = Sprite(0, 0, self.CARD_W, self.CARD_H, self.ASSET_ATLAS["ina_stickers"], { x = 5, y = 3 }),
        Purple = Sprite(0, 0, self.CARD_W, self.CARD_H, self.ASSET_ATLAS["ina_stickers"], { x = 6, y = 3 }),
        Orange = Sprite(0, 0, self.CARD_W, self.CARD_H, self.ASSET_ATLAS["ina_stickers"], { x = 7, y = 3 }),
        Gold = Sprite(0, 0, self.CARD_W, self.CARD_H, self.ASSET_ATLAS["ina_stickers"], { x = 8, y = 3 })
    }
end

I don't really understand why isn't this working

keen atlas
#

damn, i feel like my lsp is missing so much even though i kinda put most of the stuff

rancid kindle
#

okay so, this is meant to be a scaling chip joker that is simply +2 chips per hand played. Why isn't it.. actually adding chips to the hand.

knotty orchid
#

Chip_mod

#

Not chips

#

And you should use chips instead

#

It generates the message automatically

rancid kindle
knotty orchid
#

Chip_mod and message

#

Just use chips = and colour =

rancid kindle
#

but I wanted the silly spin msg lol

knotty orchid
#

Oh

#

Then let the message be

ocean sinew
#

IT RELEASED

knotty orchid
#

Hahahaha

lament agate
#

so like

#

if i want my mod

#

to load

#

REALLY late

red flower
#

big priority

lament agate
#

what priority it shouldve been

lament agate
red flower
#

idk what numbers the json takes

#

check polterworx :3

lament agate
#

😭

red flower
#

that one had a number limit priority iirc

lament agate
#

im gonna ask someone instead

rancid kindle
#

I got it to work yay

red flower
#

i would just put a big number

lament agate
#
    for _, joker_key in ipairs(P_CENTERS) do
        local success, err = pcall(function()
            if self:randomize_joker(joker_key, silent) then
                count = count + 1
            end
        end)
#

if i wanted to iterate modded Jokers

#

this should work right

red flower
#

G.P_CENTERS

#

but also it will do all centers

#

joker_key is the center not the joker key

#
for _, center in ipairs(G.P_CENTER_POOLS.Joker) then 
    if center.original_mod then
        local key = center.key
        -- your code here
    end
end
lament agate
#

i see

pure salmon
#

why does this on an enhancement not properly destroy playing cards

red flower
#

can i see more

#

what context is this in

pure salmon
red flower
#

does everything else in the context work

pure salmon
#

yeah everything else triggers just fine but the cards don't get destroyed. they stay on the screen and reloading puts them back in the deck

red flower
#

what's effects_left

pure salmon
#

this enhancement progressively removes effects, so that variable tracks which ones are still on the card

red flower
#

the eaten message is played?

pure salmon
#

yeah and the card does the animation fine

red flower
#

hmm

pure salmon
#

none of those animation lines are problematic i've tested w/o all of them

#

issue is strictly that cards don't destroy properly

red flower
#

can you try just running :destroy() on a card with debugplus

red flower
#

remove

#

im sleepy

pure salmon
#

no problems

red flower
#

oh im stupid

pure salmon
#

is it because of context.after?

red flower
#

yes

#

try using context.destroy_card

#

i dont think there's a good way to keep the animation tho

pure salmon
#

destroying cards is so jank lol

#

why is this game like this

pearl jacinth
#

why does this give neither chips nor mult```lua
SMODS.Edition {
key = "imaginary",
shader = false,
config = {mult = 8, chips = 40},
loc_vars = function(self)
return {vars = {self.config.mult, self.config.chips}}
end
}

red flower
#

i dont think you can talk about that version here

honest bridge
lusty glade
#

hey! i'm trying to count the amount of cards with seals on them in my deck but i'm struggling to implement the ''card.seal'' with ''playing_card'' ;-;

Right now i'm pretty much copying steal joker's code but i'm tryina switch steel for seals

anyone got an idea? :0

#

(has_seal = card.seal also lmao-)

rocky plaza
#

and that should be enough

lusty glade
#

imma try it! thank you!

rocky plaza
# lusty glade (has_seal = card.seal also lmao-)

when the docs say card.seal
they assume that card is.. well.. a card
in your situation, card is undefined
but you have access to each card in the deck with the _, playing_card in ipairs(G.playing_cards)

lusty glade
#

that makes so much sense lmao

#

thx!

rocky plaza
rocky plaza
rancid kindle
#

W.I.P: If I smack these two heavy metal balls together-

glass scaffold
#

How do I check if a certain mod is installed within my mod's code?

faint yacht
#

if next(SMODS.find_mod('modid')), where modid is the internal ID of a mod.

glass scaffold
faint yacht
#

Yeah, should do.

glass scaffold
faint yacht
#

Something is up with the file being loaded.

glass scaffold
#

There's no tab to see the records, even though the code is there

glass scaffold
faint yacht
#

...why return true?

glass scaffold
faint yacht
#

For take_ownership, I'm not much of help as I've not used that myself yet. 😅

glass scaffold
wild escarp
#

How could I destroy a playing card before it scores?

carmine burrow
gritty jungle
#

@warm kraken - Hey, assuming you are the creator of the All in Jest mod, I wanted to clarify something with you.

Is it intended for Pellesini to not recreate Taillefer after it self destructs?

Cos I thought it would be a cool combo to pull off, was pretty unfortunate to find out it doesn't work and it ended up costing me the run lol

#

oh lol im stupid i misread the wiki page ignore me

#

@gilded narwhal ***** above

glass scaffold
#

And then use context.before to trigger something before scoring occurs

wild escarp
#

I thought you could only return remove inside of context.destroy_card

rancid kindle
#

what is the if statement for a hand containing a certain poker hand?

gilded narwhal
gritty jungle
#

ty for the quick reply

subtle merlin
#

how do i increase the ante amount needed to win?

glass scaffold
subtle merlin
wild escarp
#

Hmm, seems like not in context.before though?

glass scaffold
jolly shadow
#

thatd be my guess at least

#

theres no other_card in context.before so 🤷

wild escarp
#

Yeah, I don't know how I'd get around that though.

#

Seems to be the one place I can't use it.

jolly shadow
#

id at least try that even if it seems dumb

wild escarp
jolly shadow
#

have you tried destroying the card in context.press_play ?

pearl jacinth
#

why can't i compare a class with a number despite having the __lt metamethod

wild escarp
lusty glade
#

Is there a way to add a sort of rarity system in booster packs? :0 or would I need to like hard code it lol

jolly shadow
#

Like, you can make your own rarities with their own weights in the pool and have a booster pack only involve those rarities, if that's what you mean

feral tree
#

is there a context for the cash out screen after beating a boss?

lusty glade
#

Like, where certain cards appears more or less oftens than others in booster packs

rancid kindle
#

Can someone help me fix this scaling ^Mult joker?

He doesn't crash, but rn but he doesn't appear to be calcuating things properly, I'm quite new to this

lusty glade
#

I’m unsure if that’s what you meant lol

jolly shadow
#

or set default_weight in a custom rarity

lusty glade
#

Oooh nice alr ty!

crystal perch
#

is there an equivalent to context.end_of_round which would only proc an effect on one card rather than every card in hand, similar to context.after

#

because the code in the first screenshot affects every card in hand, while the second screenshot only affects a single, random card (the issue being its after a hand is played, not end of round)

frosty rampart
#

if context.end_of_round and context.cardarea == G.jokers i think

crystal perch
#

yes that worked thank you

#

been pulling hair out over this for a bit

subtle merlin
#

how can i make it so that the player can't gain any more money from any source?

feral tree
#

where can i find the list of ease_[object] things?

subtle merlin
crystal perch
#

keep getting this crash whenever i try to poll a card's edition via card.edition.[edition]

#

this hasn't just happened in this instance, but across my codebase

#

yet other mods and the docs use it just fine so i don't know what i'm missing

frosty rampart
#

card.edition itself only exists if the card has an edition. so when the check runs on a non-editioned card, it tries to index into a table that doesn't exist, which crashes
replace exactly the highlighted part in your screenshot with exactly this:
(G.jokers.highlighted[1].edition and G.jokers.highlighted[1].edition.negative)
if card.edition is false on that highlighted joker (i.e. it's not editioned), then it treats the whole "and" statement in the parentheses as false without even touching the second part of it, dodging the crash from edition not existing

crystal perch
#

thank you, this worked

#

saved me a lot of headaches

daring heron
#

is there a mod that lets tags appear in the shop and if not how hard would it be to implement it?

placid star
daring heron
#

fair but i'd prefer just putting the actual tags in the shop

compact valve
#

description's a bit lengthy, but does it make sense?

placid star
#

and even then idk what they'd look like in the shop

daring heron
#

right

#

how would i do that exactly?

placid star
#

do you know how to hook?

#

cause in theory there's 2 functions you need to hook use, in actuality you probably need to hook 3

daring heron
#

nope

#

still pretty new to this modding stuff

#

made like 1 decent mod haha

placid star
#

that's fine, in essence think of a function as a variable (I'm pretty sure that's what most are)

#

you want to save the original func in a local var then call it in your new one

#

what you're doing is pretty ambitious for someone new, but even thinking abt it i can see a way to fairly easily do it

#

read this

daring heron
#

not gonna lie thats pretty much gibberish for me

#

but thanks

placid star
languid canopy
#

hi, how do i put an animation on a joker ?

vast bough
#

is everything in the calculate function the exact same between seals, editions, and enhancements or is their any discrepencies i should know about

runic pecan
#

What function handles the rearrange part in “drag to rearrange”?
I’d want to hook some feature that happens whenever the Jokers are rearranged.

zealous glen
zealous glen
placid star
wintry solar
#

yes but it's not supported on anything other than blinds

#

yet

placid star
#

eremel always teasing with the yet 😭

zealous glen
compact valve
#

balanced or no?

pastel kernel
#

what's the context for scoring lucky cards?

candid elbow
#

You mean trigger

#

?

#

There’s no context for scoring lucky cards you have to check for enhancements manually using a for loop or context.individual and smods.has_enhancement

foggy ginkgo
#

Bro is cooking

candid elbow
#

What can i say

pastel kernel
#

jokerforge is a lifesaver, i can just make the joker itself in that site then paste the calculate function into the already existing jokers.lua

candid elbow
#

I recommend just learning how to read

#

And

#

Read

pastel kernel
#

i mean i'm not actually using jokerforge outright to make ALL my jokers

candid elbow
#

How it feels to read smods docs

foggy ginkgo
#

So do you mean when lucky card triggers or when scoring lucky card

#

Two different things

#

I can help you on both

candid elbow
#

I can sit back and watch

#

Maybe clap 👏

pastel kernel
#

"Scored Lucky Cards give..."

foggy ginkgo
#

Trigger:
if context.individual and context.cardarea == G.play and context.other_card.lucky_trigger and not context.blueprint then

if context.individual and context.cardarea == G.play and not context.end_of_round and not context.blueprint and SMODS.has_enhancement(context.other_card, 'm_lucky') then

#

Think this should be right

#

The bottom one is when scored

candid elbow
#

Why did you add the context.end_of_round here

#

If the cardarea is G.play

candid elbow
#

-<

foggy ginkgo
#

You're right

#

Let them cook rho

candid elbow
#

I’m gonna feed you to the pit in my backyard (•w•)

foggy ginkgo
#

Yum

candid elbow
#

Sob

ripe thicket
#

so I have this enhancement that scales, but I want to make a joker that makes it scale twice as fast. How would I do that?

candid elbow
pastel kernel
#
    loc_txt = {
        name = "Vigilant Joker",
        text = { "Scored {C:attention}lucky cards{} give {X:chips,C:white}X#1#{} Chips and {C:money}$#2#" }
    },
candid elbow
#

Smods.find_card

#

I think

ripe thicket
#

I wish there was a list of all the SMODS. stuff that I could use ;-;

pastel kernel
candid elbow
#

Lucky cards already

#

Good enough

candid elbow
pastel kernel
#

I mean I have a joker that gives xmult for every played ace

#

Or scored

#

Or held in hand-

candid elbow
#

Yeah that’s cooked

#

I can’t complain i have a joker that gives 1.1 xmult for every card present [includes deck btw]

ripe thicket
candid elbow
#

Yeppieeeee

pastel kernel
#

Held in hand isn’t intended actually

candid elbow
foggy ginkgo
#

Cardarea = G.play instead of hand

pastel kernel
#
calculate = function(self, card, context)
        if context.individual and context.cardarea == G.play and not context.blueprint then
            if SMODS.pseudorandom_probability(card, 'busterb_susies_idea', 1, card.ability.extra.aceodds, 'busterb_susies_idea') then
                SMODS.add_card{ set = "Base", rank = "A", enhancement = "m_steel", edition = "e_polychrome", seal = "Red" }
                play_sound('busterb_susielaugh')
            end
            if context.other_card:get_id() == 14 and context.cardarea == G.play and not context.blueprint then
            return {
                Xmult = card.ability.extra.acemult
            }
        end
     end
end
vestal magnet
#

how do i change a modded consumeabletype's shop spawn rate
i changed all the others using G.GAME. _rate

pastel kernel
#

the joker is called ideal joker

#

hence why busterb_susies_idea

vestal magnet
#

also how do i change the amount of boosterpacks that spawn in the shop

candid elbow
#

I wonder why everything is a table in this game

#

Please just invent struct objects already

#

I’m not used to this shit

wispy falcon
#

Is there a way, to stop the scoring hand to wait for something to finish happening?

vestal magnet
stiff locust
#

has two arguments for stuff like this

#

blockable and blocking

candid elbow
stiff locust
#

blocking stops future events while it's running, blockable waits for previous events before it runs

wispy falcon
vestal magnet
vestal magnet
candid elbow
molten relic
#

it happens when i open my custom booster

candid elbow
#

I think it has a weight or doesn’t appear in shop

#

Something

vestal magnet
molten relic
candid elbow
placid star
vestal magnet
vestal magnet
molten relic
#

is there anything wrong with this code

#
    key = 'p_bali_itempack2',
    loc_txt = {
        ['name'] = 'Item Pack',
        ['text'] = {
            "Choose {C:attention}1{} out of {C:attention}3{} {C:gold}Item Cards{}"
        }
    },
    atlas = 'customBoosters',
    pos = {
        x = 1,
        y = 0
    },
    config = {
        extra = 3,
        choose = 1
    },
    pools = {
        ["bali_itempool"] = true
    },
    discovered = false,
    draw_hand = false,
    group_key = "bali_itempacks",
    cost = 4,
}     ```
wispy falcon
#

How would I use G.E_MANAGER:add_event(Event({})) to stop the scoring hand before then, after the event finished, make it continue?

slim ferry
#

what do you need to do that for

wispy falcon
#

A boss blind where a video plays when you press on Play Hand. I don't want the hand scoring while the video is running

long sun
#

hiya! does SMODS have an easy way of rerolling the boss blind?

#

this is to be done during a round

primal robin
#

During a round you can just set G.GAME.round_resets.blinds["Boss"] = get_new_boss() or smth

#

No dditional work needed I guess

long sun
#

okay fair ^u^ makes sense

#

thanks!

primal robin
lament agate
#

anyone here expert at UI?

primal robin
#

Invalid declared children

#

Like where game expect array of nodes you passed 1 node, or vise versa

lament agate
#

damn im not the father

lament agate
#

actually, here's the code

#

fuck

primal robin
#

well if it's your code it sucks

lament agate
lament agate
primal robin
lament agate
#

i deleted it

#

now it shows trying to index nil

#

so im confused

primal robin
#

is G.C.UI.DARK valid colour

lament agate
#

yes

#

i checked

#

oh

#

wait

#

FUCK

primal robin
#

I do believe its not

lament agate
#

let me

#

okay yeah it works now

#

my BAD

#

thanks

primal robin
languid canopy
#

whats the thingy to make custom colors ?

lament agate
#

okay so like

#

question

#

i wanted to mess with the denom and numer values in configs

#

for modded jokers, it's quite easy to do so

#

but for vanilla, is it stored in config?

rotund sable
#

isn't it also like card.ability.extra ?

#

or am i not remembering it right

#

yeah, except some values are numbers and some are tables

tepid yacht
#

Hey I'm trying to make something really simple but am really lost. Is there a guide somewhere that explains step by step instructions

(something other than the smods wiki) ?

slim ferry
#

its generally a great reference

tepid yacht
#

Ive seen this and it might be really stupid but I genuinely have no idea what to do with it

slim ferry
#

its just a reference

rotund sable
#

its a recreation of everything in vanilla

slim ferry
#

it recreates everything in vanilla with smods

rotund sable
#

used as a reference

tepid yacht
#

I'm trying to do something with sound, and that isnt on there

#

I thought there might be a sound.lua or smt

slim ferry
#

SMODS.Sound? that isnt very comlicated

#

i thought

rotund sable
#

well if you said that from the beginning...

#
SMODS.Sound{
    key="Sound_key",
    path="Sound_path.ogg"
}
#
play_sound("modprefix_Sound_key", 1, 1)
#

i have no idea how to change the sound track and stuff tho

modern kindle
#

Soundtrack isnt so hard, there's an example mod that shows it

tepid yacht
# rotund sable well if you said that from the beginning...

Here's what I wanted to do, I just need to use the love.focus( focus ) callback to mute game sound

But I feel like its not getting called. I got a mod to load and print to console, but I feel like when I use love functions they arent working

tepid yacht
modern kindle
#

Love funcs definitely work, I use some of them to pull os data and things

tepid yacht
#

ill keep trying

#

like could I use love.update if I wanted to ?

rotund sable
#

if you hook it

#

then yes

modern kindle
#

I loosely tried messing with love.audio.newsource for sounds but it kept acting like my sound didnt exist which was not fantastic

rotund sable
#

dont override it tho

tepid yacht
rotund sable
#

i think its on the vanillaremade wiki

#

thank N' for this one

tepid yacht
#

okay this looks great thank you

cursive gazelle
#

day 7 of trying everything to make / replace ingame shaders

#

i declare defeat

tepid yacht
#

btw does anyone have a quick example of adding a button in the settings menu. ive looked at the examples but things like moreSpeeds simply change current ones, I want to add a toggle in the existing sounds tab

distant junco
#

gurhh trying to make a tarot card

cursive gazelle
distant junco
#

no i just want it to be a tarot card

cursive gazelle
#

the set should be named Tarot then

rotund sable
#

Isn't there a comment in VanillaRemade saying this

distant junco
cursive gazelle
#

ctrl+s

distant junco
#

wait its probbaly case sensitive

cursive gazelle
#

yes

#

t uppercase

#

coding in light mode

#

respect

wispy falcon
#

How would I use G.E_MANAGER:add_event(Event({})) to stop the scoring hand before then, after the event finished, make it continue?

slim ferry
#

if i add more things to G.GAME.pool_flags will they also be saved properly in the run?

distant junco
cursive gazelle
distant junco
#

ok you know how i said works great?

cursive gazelle
#

prob a localization issue

#

it probably couldn't find 'jammbo_diamond' in G.P_CENTERS

lethal spindle
#

Guys

#

Are the legendary jokers just called "j_canio"

#

"j_perkeo" etc. in game??

cursive gazelle
#

caino for canio

lethal spindle
#

...Dude.

cursive gazelle
#

typo from local thunk

lethal spindle
#

I literally just played this

#

and crashed

#

Selling the card when the counter reached 0 should've given a Canio

cursive gazelle
#

without j

#

just use the normal key for vanilla objects

#

in your case it's caino , funny enough

#

use add_card and not create_card

#

just more simple

lethal spindle
#

Okay

#

Previously used jokerforge, switching to lua is so hard tho

cursive gazelle
#

i'm working on a tutorial explaining the basics

lethal spindle
cursive gazelle
#

should be out soon

lethal spindle
#

The auto code IS add_card tho

#

It was just using j_canio

#

that caused the problem

cursive gazelle
#

lol

#

there's another typo in the game's code but i forgot about it

pastel kernel
cursive gazelle
slim ferry
#

oh and consumeable

cursive gazelle
#

lol

#

yeah that one

#

i love how he just kept them the game

lament agate
#

what did i miss

gleaming crescent
#

How to make a joker do something as soon as it's added?

gleaming crescent
#

I mean as soon as it's spawned by judgement/soul/etc

gleaming crescent
lament agate
gleaming crescent
gleaming crescent
lament agate
#

this is for Jokers

gleaming crescent
#

Make a joker do something when another joker is added? Sure. Make a joker do something when it's added? Nope

gleaming crescent
#

Oh

#

That's SMODS api

manic rune
#

the description doesnt use ref_table and ref_value, which means the text is pretty much fixed

knotty orchid
#

Is there a way to redefine base balatro stake stickers?

gleaming crescent
knotty orchid
#

Yea

#

my current cards don't look good with them

#

I've created new stickers

#

Tried hooking start_up but doesn't seem to work

#

Something like this

gleaming crescent
#

I think you can redifine sticker's spritesheet

knotty orchid
#

never used that

#

time to learn a little

modern kindle
#

what should i be lookin at to add a button to the shop

pastel kernel
#

My “vigilant joker” now crashes the game because of the .ogg files

#

No wait

#

Ok I’ll get the log first hold on.

wispy falcon
#

I don't understand G.E_MANAGER:add_event(Event({})) <_>

bold sleet
#

It adds an event to the event queue.

pastel kernel
#

this work?lua calculate = function(self, card, context) if context.individual and context.cardarea == G.play and not context.blueprint and SMODS.has_enhancement(context.other_card, 'm_lucky') then return { x_chips = card.ability.extra.luckyxchips, dollars = card.ability.extra.luckydollar, play_sound("busterb_gunshot") } else if SMODS.pseudorandom_probability(card, 'busterb_lucky_vigi', 1, card.ability.extra.odds, 'busterb_lucky_vigi') then context.other_card:set_ability({G.P_CENTERS.m_lucky}) play_sound("busterb_vigi") end end end

bold sleet
vestal magnet
#

it's possible to ban blinds for challenges but could i do the reverse and state the only blinds that should appear

#

whitelist

gleaming crescent
hard finch
#

Hi friends! First timer, trying to learn how to mod this game.
I’m playing around with Game State and I can get a trigger to send the player to the shop but when I do it leaves the interactive element (either the cards on screen during the blind or the selectable blind on the BLIND_SELECT screen) on screen.
Any suggestions on how to clear that?

copper thorn
#

im trying to make my first booster and why is it blank ?

slim ferry
rotund sable
#

i think it's the fact that you are returning a key in loc_vars

#

so it looks into the localization file instead of loc_txt

slim ferry
#

so that isnt needed here

copper thorn
#

i triple checked and didn't noice I PU A KEY IN LOC VARS (sorry for caps my keyboard randomly shifts IN caps lock)

wispy falcon
bold sleet
#

Oh uh...

#

That's... problematic.

wispy falcon
#

Why?

undone maple
#

Where can I get a joker in the base in a 71 by 95 resolution so I can copy the style perfectly?

languid canopy
#

jokers from my custom rarity doesnt spawn at all (even with tweaked weight) can someone help ?

rocky plaza
languid canopy
long sun
#

I'd like to mark my mod as incompatible with all versions of Entropy. What string do I use for the conflict?

rocky plaza
gleaming crescent
long sun
#

Ahhhh I see, okie

#

Mod id

#

Gotchagotcha, thanks!

languid canopy
#

update they still dont spawn

rocky plaza
#

strange

languid canopy
#

maybe you need more infos...?

rocky plaza
#

your jokers dont have an in_pool function, correct?

languid canopy
#

correct

#

i have to make a pool with em in it

#

?

languid canopy
rocky plaza
languid canopy
#

huh

rocky plaza
#

to your rarity code

#

see if that works

languid canopy
rocky plaza
#

nope

#

add it in verbatim

languid canopy
#

like so ?

rocky plaza
#

yep

mossy orbit
#

Small question: what does order do for a ConsumableType (e.g: Planet)?

languid canopy
rocky plaza
languid canopy
#

and im lowkey stupid

rocky plaza
rocky plaza
languid canopy
#

thuderedge it works now

#

yeah thanks

mossy orbit
#

Inside game.lua

#

So it does nothing for the SMODS.ConsumableType? (as not specified?)

rocky plaza
rocky plaza
mossy orbit
rocky plaza
mossy orbit
#

Thanks!

#

So I specify something like above_hand: "hand_name", without the mod prefix, right?

rocky plaza
glass crown
#

what is an efficient way to make sure that wild cards cant be debuffed? i can obviously check at the start of the blind and make all the wild cards immune to being debuffed but i want it to be so that wild cards made in a blind cant be debuffed either

rocky plaza
glass crown
#

yes, im already using that to prevent the debuffs, im just wondering how i can efficiently check to make sure that the cards are debuffed from the get-go

#

*debuff-immune, not debuffed

knotty orchid
#

If I can do this without It it would be great

jolly shadow