#💻・modding-dev

1 messages · Page 441 of 1

faint yacht
#

Wheremst then?

red flower
#

you should search for the error text, it gets saved like immediately after that

worthy stirrup
#

this should remove the Enhancement, right?

card:set_ability()
faint yacht
red flower
#

G.load_preplay?

daring fern
hybrid shadow
#

does the label in dictionary count as both the name used by the consumable page and the label used by cards in that type?

red flower
#

no idea :3

worthy stirrup
#

ah, okay

hybrid shadow
#

i just cant see the name for the consumabletype defined anywhere in the localization file

wild escarp
#

Anyone know the default weight of all the rarities?

hybrid shadow
wild escarp
#

ok, thanks!

viral ember
#

How trans people saved my mod 🙏

hybrid shadow
red flower
hybrid shadow
viral ember
#

it wasn't working before for some reason

faint yacht
viral ember
#

it still isn't entirely working but whatever

vague crest
#

what would the process be to block something vanilla from appearing in the shop?

#

specifically like, for example all planet cards

#

i also have an idea for making only jokers appear in the shop but i assume excluding everything BUT something would be a lot harder

fierce frost
vague crest
#

ohhh i didnt think about challenges

north lodge
#

@vague crest look into how it chooses what cards are made. There are values for each type of card, ie G.GAME.joker_rate and G.GAME.tarot_rate. That's probably the easiest way.

vague crest
#

oh wow thats proabbly exactly what im looking for

fading hemlock
#

I'm trying to make a joker that debuffs some cards, but it isn't working:

SMODS.Joker {
    key = "cardless_joker",
    name = "jon_Cardless_Joker",
    atlas = 'jon_jokers',
    pos = {
        x = 3,
        y = 0,
    },
    rarity = 2,
    cost = 5,
    unlocked = true,
    discovered = false,
    eternal_compat = true,
    perishable_compat = true,
    blueprint_compat = false,
    config = {
        extra = {
            mult = 5,
            odds = 2,
        },
    },
    loc_txt = {
        name = "Cardless Joker",
        text = {
            "{C:green}#1# in #2#{} chance to",
            "debuff each played card.",
            "Earn {C:mult}+#3#{} mult per trigger",
            "of a debuffed card."
        }
    },
    loc_vars = function(self, info_queue, card)
        return {
            vars = {(G.GAME.probabilities.normal or 1), card.ability.extra.odds, card.ability.extra.mult}
        }
    end,
    calculate = function(self, card, context)
        if context.before and context.cardarea == G.play then
            for _, other_card in ipairs(G.play.cards) do
                if pseudorandom('cardless_joker') < G.GAME.probabilities.normal / card.ability.extra.odds then
                    other_card:set_debuff(true)
                end
            end
        end
    end,
}
function jon_handle_debuffed_card()
    for _, joker in ipairs(find_joker('jon_Cardless_Joker')) do
        card_eval_status_text(joker, 'jokers', nil, nil, nil, {
            mult_mod = joker.ability.extra.mult,
            message = localize { type = 'variable', key = 'a_mult', vars = { joker.ability.extra.mult } }
        })
    end
end

daring fern
fading hemlock
#

alr

fading hemlock
sonic cedar
#

how would i ask "if a card in your joker area has this key, but is NOT this card"

daring fern
mild grove
#

I'm trying to make a Joker card spawn a Uncommon Tag when the Boss Blind is defeated, but I keep getting nothing but crashes, Could someone explain what is wrong here?


----------------------------------------------------------------------------------------------------------------------------------------
    
    -- Trying to code, The Joker to spawn a Uncommon Tag when the Boss Blind is defeated, This will be a crashing nightmare
    
    SMODS.Tag = self.ability.name == G.GAME.blind and G.GAME.blind.boss
    
    self.name == 'Uncommon Tag' then
    
    card = create_card('Joker', _context.area, nil, 0.9, nil, nil, nil, 'uta')
    
    create_shop_card_ui(card, 'Joker', _context.area)
    
    card.states.visible = false,
    
    self:yep '+', G.C.GREEN, 
        
    card:start_materialize
            
    card.ability.couponed = true
            
    card:set_cost()
    
    end



}


----------------------------------------------
------------MOD CODE END----------------------

daring fern
fading hemlock
formal parrot
mild grove
formal parrot
#

Use

#

SMODS.joker{}

#

Smods.tag{} is used to make tags

#

What are you doing !!!!!!!!

spring lantern
#

think i'm using this wrong... the stack trace eventually points to the highlighted line where i call create_playing_card

daring fern
spring lantern
#

oh i thought add_card couldn't do playing cards

daring fern
coarse plank
#

Anyone know what the issue is here?

sonic cedar
broken cliff
#

u forgot a comma there

sterile minnow
#

whats wrong w the rarity thingy?

daring fern
sterile minnow
#

is that the prefix?

#

like

#

nvm

#

I think i get it

daring fern
sterile minnow
#

yeahh

#

so would it be

#

the prefix is GB

#

then

#

GB_UL

#

?

#

it worked thx!

sonic cedar
# daring fern Yes.

so would something like

add_to_deck = function(self, card, from_debuff)
        card:remove_sticker('hpfx_priceless')
        local pass = false
        for k, v in ipairs(SMODS.find_card('j_hpfx_ijiraq')) do
            if v ~= card then
                pass = true
            end
            if pass then
                G.E_MANAGER:add_event(Event({
                    func = function ()
                    v:start_dissolve({G.C.RED, nil, 1.6})
                    end
                }))
            end
        end
    end,

work?

daring fern
sonic cedar
#

Thats what I was thinking

#

The pass just makes it redundant

mild grove
#

So i have the joker setup, but it's the Boss Blind stuff that's giving me trouble.

What i'm trying to do is after the Boss Blind is defeated, I want the Joker to spawn a Uncommon Joker Tag, Basically like
Anaglyph Deck but if it was a joker and spawns Uncommon Joker Tag

sonic cedar
#

….what does a stack overflow error mean in the context of me console commanding add_card…

faint yacht
#

It got stuck in an infinite loop.

red flower
#

is it a card that adds itself

sonic cedar
#

I was trying to spawn the fodder

#

What’s weird is it worked before? Then I restarted the run and tried again to make sure and

#

💥

#

also now the descriptions are acting up again? loving how when it’s this close to being done all the bs wants to poke through the woodwork?

sonic cedar
#

stg

mild grove
formal parrot
#

There’s a YouTube video

#

That covers the necessary things

#

Maybe you should check that

#

Also , modding isn’t easy and you’re gonna crash a lot and learn so if you don’t have the commitment just quit

red flower
formal parrot
#

Link them the wiki

chrome widget
#

Yeah it looks like you're mixing up the code for a tag and the code for a joker. Any chance you prompted AI to write this? I could see where a prompt might cross wires given "tag" and "joker" both being in the prompt

mild grove
chrome widget
#

Point being, you're intending to make a joker that creates a tag. The code you wrote is more accurately described as code for a Tag to create a joker

#

Joker code typically uses the calculate(self, card context) function

daring fern
#

chrome widget
#

Tag:add_to_run() as well as Tag:yep() are both functions tags used when they're added to the tag stack and when they're actually activated

#

So you want to use calculate and the vanilla add_tag function

mild grove
#

ah alright

sonic cedar
daring fern
sonic cedar
#

I know i just wanted to see lmfao

#

just goofing around a bit

#

but yeah it works fine thanks 👍

chrome widget
umbral zodiac
#

is there a way to make a card just not spawn naturally

faint yacht
#

return false for in_pool.

umbral zodiac
#

was hoping itd be shorter than that

#

thanks tho

maiden phoenix
#

Is it possible to test a SMODS.Center object's in_pool function using DebugPlus' eval?

daring fern
red flower
#

G.P_CENTERS.key:in_pool()?

maiden phoenix
#

What's the keybind to open DebugPlus's console again? 😅

faint yacht
#

/ for me.

stoic fulcrum
#

man it feels good when your jokers just

#

work first try EZ

#

won't last long though i bet

maiden phoenix
gaunt phoenix
#

My idea is to create a random consumable when blind is selected, but that's make me crash... Any ideas why ?

primal robin
#

You're not specify what card type you want to create

gaunt phoenix
#

the set ?

#

like tarot/planet etc ?

daring fern
sturdy compass
fading hemlock
#

How do I add mult outside of the joker calculate function?

daring fern
fading hemlock
maiden phoenix
maiden phoenix
#

Nvm it keeps giving me false wha

fading hemlock
daring fern
fading hemlock
fading hemlock
# daring fern Was that not what the patch was for?

this is the code for the debuff handling:


function jon_handle_debuffed_card()
    for _, joker in ipairs(find_joker('jon_Cardless_Joker')) do
        card_eval_status_text(joker, 'jokers', nil, nil, nil, {
            message = localize { type = 'variable', key = 'a_mult', vars = { joker.ability.extra.mult } }
        })
    end
end
[manifest]
version = "1.0.0"
dump_lua = true
priority = 0

[[patches]]
[patches.pattern]
target = "=[SMODS _ \"src/utils.lua\"]"
pattern = """
if scoring_hand and card.debuff then
    if in_scoring then
"""
position = "after"
payload = '''
jon_handle_debuffed_card()
'''
match_indent = true
mild grove
#

Still trying to figure out how to make a Joker card spawn a uncommon tag when the boss blind is defeated.

The Joker part is finished, but the tag spawning part is giving me issues, Yes I am actively reading from the wiki and looking at the code of balatro

chrome widget
daring fern
fading hemlock
daring fern
wintry solar
#

it'll do the message for you if you just use mult

fading hemlock
#

you can try tag_uncommon

fading hemlock
pallid sleet
#

Hai 👋
Lol anyways are there any good beginner videos making mods for balatro? Just to get me started…
Thx! 🙃

hybrid shadow
#

how do i have a consumable increase the chips/mult given by level ups?

daring fern
hybrid shadow
daring fern
hybrid shadow
#

ooh that might work

subtle merlin
#

Eh, close enough, game

hybrid shadow
mild grove
#

well, um I think i'm making progress?

daring fern
subtle merlin
hybrid shadow
#

weird

subtle merlin
#

yea

vague crest
#

where would i find the art of the actual playing cards? like just the numbered ones for example

tawny lake
#

I tried a bunch of things so far, but am finally letting myself ask for help
I am trying to code a joker that makes a negative clone of itself at the end of every boss blind (it's only functionality)
However it creates infinite copies of itself when the condition is met. Does anyone have a clue as to how to limit each instance of the joker only generate a singular copy of the joker?

calculate = function(self, card, context)
        if not context.individual and not context.repetition and not card.debuff and context.end_of_round and not context.blueprint and G.GAME.blind.boss then
            print("Card Created!")
            local new_card = copy_card(card)
            new_card:set_edition("e_negative", true)
            new_card:add_to_deck()
            G.jokers:emplace(new_card)
            return
        end
    end
vague crest
#

i found it actually 🙏 nvm

tawny lake
mild grove
daring fern
coarse plank
#

how do i make a consumable only useable during the blind?

mild grove
daring fern
daring fern
hybrid shadow
mild grove
#

you mean this?


SMODS.Joker {

    -- How the code refers to the joker.
    
    key = 'uncommon_tag_joker',
    
    -- loc_text is the actual name and description that show in-game for the card.
    
    loc_txt = {
    
    
        name = '{C:green,E:1}Uncommon Tag Joker{}',
        
        text = {
        
        'Create a {C:green, E:1,}Uncommon Tag{} When',
        
        '{C:mult}Boss Blind{} {C:edition,E:1,s:2}is Defeated!{}',
        
        }
    },
        
    config = { extra = { tag = 1 } },
    
    -- Sets rarity. 1 common, 2 uncommon, 3 rare, 4 legendary.
    
    rarity = 2,
    
    -- Which atlas key to pull from.
    
    atlas = 'TagJoker',
    
    -- This card's position on the atlas, starting at {x=0,y=0} for the very top left.
    
    pos = { x = 0, y = 0 },
    
    -- Cost of card in shop.
    
    cost = 8,
    
}
    
-- Trying to spawn a Uncommon Joker Tag after Boss Blind is defeated
    
    calculate = function(self, card, context)
    
        if context.setting_blind then
                
                G.E_MANAGER:add_event(Event({
                    
                    func = (function()
                        
                        add_tag(Tag('tag_uncommon'))
                        
                        play_sound('generic1', 0.9 + math.random()*0.1, 0.8)
                        
                        play_sound('holo1', 1.2 + math.random()*0.1, 0.4)
                        
                        return true
                    
                    end)
                
        end        }))

    end

----------------------------------------------
------------MOD CODE END----------------------


daring fern
mild grove
stoic fulcrum
#

how can i replicate the tilde on a card's name?
i tried using ` but the game seems to ignore that character

tepid crow
#

do you have an example of what you mean?

stoic fulcrum
#

driver's license

tepid crow
#

' should work?

stoic fulcrum
#

that comments out the rest of the name

mild grove
#

alright so it stopped crashing

tepid crow
stoic fulcrum
#

i'll try that

tepid crow
#

or escape the character (I'm assuming that works in Lua)

mild grove
#

quickly tested editions

hybrid shadow
#

how would i go about changing for i = 1, #G.hand.highlighted to affect the whole hand/entire deck?

daring fern
hybrid shadow
#

ill see if that works

coarse plank
#

how do you modify the score requirment for one round? trying to make a consumable that impacts the score requirment

sonic cedar
#

How can I have a card send a message within the Event Manager?

daring fern
sonic cedar
#

bro 😭

daring fern
#

How would one rotate the display?

hybrid shadow
sonic cedar
#

it IS in func, but just having message = did nothing

hybrid shadow
#

uh lemme double check smth

unborn bay
#

nvm

lament agate
#

for some reason, using Hanged Man does not scale this

stoic fulcrum
#

how do i call for the played hand not scoring?

#

i tried referencing the psychic but that didn't seem to help

daring fern
lament agate
# daring fern Code?
    loc_vars = function(self, info_queue, card)
        info_queue[#info_queue + 1] = G.P_CENTERS.c_hanged_man
        return { vars = { card.ability.extra.xchips, card.ability.extra.xchips_gain } }
    end,
    calculate = function(self, card, context)
        if context.consumeable and context.other_consumeable and context.other_consumeable.config and context.other_consumeable.config.center and context.other_consumeable.config.center.key == "c_hanged_man" then
            card.ability.extra.xchips = card.ability.extra.xchips + card.ability.extra.xchips_gain
            return {
                message = "Severe lapse in my judgement.",
                colour = G.C.TAROT
            }
        end

        if context.joker_main then
            return {
                x_chips = card.ability.extra.xchips
            }
        end
    end
}
unborn bay
#

context.other_consumeable is for scoring

daring fern
lament agate
formal parrot
#

I still find consumables named consumeables in modding funny

lament agate
#

it works now thank you

mild grove
formal parrot
#

It already did

#

Lmfao

formal parrot
unborn bay
#

thunk moment

#

the consumables area is misspelled as consumeables

unborn bay
#

same with canio being misspelled as caino

#

so if you wonder why referencing canio's key via j_canio doesn't work

#

that's why

daring fern
#

Where is the code that creates the vouchers and booster packs?

formal parrot
#

Grape juice

formal parrot
# daring fern Where is the code that creates the vouchers and booster packs?
    key = "ss",
    loc_txt = {
        name = "place holder",
        text = {
            "This text holds the place",
        }
    },
    config = {},
    rarity = 3,
    cost = 8, 
    unlocked = true,
    discovered = true,
    blueprint_compat = true,
    calculate = function(self, card, context)
        if context.reroll_shop then
            G.E_MANAGER:add_event(Event({
                trigger = 'after',
                delay = 0.1,
                func = function()
                    -- Reroll packs
                    local boosterno = math.max(#G.shop_booster.cards, G.GAME.starting_params.boosters_in_shop + (G.GAME.modifiers.extra_boosters or 0) )
                    for i = #G.shop_booster.cards,1, -1 do
                        local c = G.shop_booster:remove_card(G.shop_booster.cards[i])
                        c:remove()
                        c = nil
                    end
                    for i=1, boosterno do
                        SMODS.add_booster_to_shop()
                    end
                    -- Reroll vouchers
                    local voucherno = math.max(#G.shop_vouchers.cards, G.GAME.starting_params.vouchers_in_shop + (G.GAME.modifiers.extra_vouchers or 0))
                    for i = #G.shop_vouchers.cards,1, -1 do
                        local c = G.shop_vouchers:remove_card(G.shop_vouchers.cards[i])
                        c:remove()
                        c = nil
                    end
                    for i=1, voucherno do
                        SMODS.add_voucher_to_shop()
                    end
                    return true
                end
            }))
            return {
                message = "hold",
                card = card,
                colour = G.C.MONEY
            }
        end
    end
}```
#

I have this joker that rerolls packs and vouchers

daring fern
#

Why does my quantum enhancements move the card when I try to highlight it?

gaunt phoenix
#

I want to do a joker kinda similar to The Bull, what context should I check to make the Currently +XX Chips update the most frequently possible ?

daring fern
gaunt phoenix
#

Maybe my question was misformulated, I'm talking about a context to update it

#

not really when to "print" it

#

(Or I misunderstood your answer, also possible lol)

#

OH I think I understood

#

will try some things

worthy stirrup
formal parrot
#

Judgment?(insert minor prime uppercut)

hybrid shadow
#

do spectral cards have issues with multiple textboxes

formal parrot
#

It should work fine

hybrid shadow
#

i... spelled my key wrong in the consumable code...

#

that was incredibly stupid of me

gilded narwhal
formal parrot
gilded narwhal
#

shush

#

its fine

#

hes my baby

formal parrot
#

Jerko

#

Really😭

subtle merlin
hybrid shadow
#

are spectrals only able to add perma mult and dollars?

formal parrot
#

Wdym perma

hybrid shadow
subtle merlin
hybrid shadow
#

nvm i had it as chips and not bonus
xchips and xmult were fucked but i think i was doing it wrong anyway

formal parrot
#

Can i see the code ?

hybrid shadow
#

lemme do it the other way and see if that fixes the issue first

subtle merlin
hybrid shadow
#

unfortunately the game doesnt like it when you try to multiply perma bonuses

#

so i have to deal with some... odd scaling, to say the least

#

i could try an alternate method

hidden sable
#

how do i make it so glass cards are guaranteed to break when played with a joker

daring fern
hidden sable
#

i think i didnt format my quesiton correctly

#

i mean

#

a joker

#

that makes it guaranteed to break

daring fern
hidden sable
#

without patching?

#

id like to avoid patching as much as possible

formal parrot
daring fern
hidden sable
daring fern
formal parrot
formal parrot
hybrid shadow
# hidden sable without patching?
if context.destroy_card and context.cardarea == G.play and SMODS.has_enhancement(context.destroy_card, 'm_glass') then
    return { remove = true }
end```
formal parrot
#

You can just destroy if it has glass enhancements

daring fern
hybrid shadow
#

doesnt glass breaking happen during context.destroy_card anyway

mild grove
#

Still trying to get a uncommon tag to spawn after the boss blind gets defeated


SMODS.Atlas {

    -- Key for code to find it with
    
    key = "TagJoker",
    
    -- The 1x sprite
    
    path = "TagJokers.png",
    
    -- Width of each sprite in 1x size
    
    --px = 35,
    
    px = 71,
    
    -- Height of each sprite in 1x size
    
    --py = 47
    
    py = 95
    
}


SMODS.Joker {

    -- How the code refers to the joker.
    
    key = 'uncommon_tag_joker',
    
    -- loc_text is the actual name and description that show in-game for the card.
    
    loc_txt = {
    
    
        name = '{C:green,E:1}Uncommon Tag Joker{}',
        
        text = {
        
        'Create a {C:green, E:1,}Uncommon Tag{} When',
        
        '{C:mult}Boss Blind{} {C:edition,E:1,s:2}is Defeated!{}',
        
        }
    },
        
    config = { extra = { tag = 1 } },
    
    -- Sets rarity. 1 common, 2 uncommon, 3 rare, 4 legendary.
    
    rarity = 2,
    
    -- Which atlas key to pull from.
    
    atlas = 'TagJoker',
    
    -- This card's position on the atlas, starting at {x=0,y=0} for the very top left.
    
    pos = { x = 0, y = 0 },
    
    -- Cost of card in shop.
    
    cost = 8,

    -- Trying to spawn a Uncommon Joker Tag after Boss Blind is defeated
    
    calculate = function(self, card, context)
    
        if context.setting_blind then
                
                G.GAME.blind.boss:add_event(Event({
                    
                    func = (function()
                        
                        add_tag(Tag('tag_uncommon'))
                        
                        play_sound('generic1', 0.9 + math.random()*0.1, 0.8)
                        
                        play_sound('holo1', 1.2 + math.random()*0.1, 0.4)
                        
                        return true
                    
                    end)
                
        end        }))

    end


}

hybrid shadow
#

alr fuck it i cant get this scaling to work

#

the spectral works now im just trying to work on the scaling

#

wait

#

oh my god is the perma bonus for xchips counting 0.5 as as 1.5 in game

daring fern
hybrid shadow
daring fern
#

formal quest
#

I'm not new to modding, but I'm getting started modding balatro. I have steammodded up and running already. How do I get started on the skeleton of my mod?

hidden sable
#

what is card currently played in context.indivusal

daring fern
sterile minnow
#

how would I make it be the same colour?

#

instead of C:attention do I put C:Spades?

worthy stirrup
#

Yea

hidden sable
sterile minnow
#

ok

worthy stirrup
#

Or Spade, I don’t remember which

sterile minnow
#

bet thx

red flower
daring fern
hidden sable
#

will removing a glass card during destroy_card play the glass breka noise

sterile minnow
#

ok thx yall

lament agate
#

you really cant leave some txt blank huh

lament agate
#

cuz if you do

#

you got ipairs error

hidden sable
formal parrot
hidden sable
#

like in calculate sound is only mentioned as a sidenote on message

hybrid shadow
#

once you start getting better at modding some things become way easier

hidden sable
formal parrot
hidden sable
#

though sometimes its better to ask here for 1 detail that one guy will surely know instead of sifting through the wiki for a check you need

formal parrot
formal parrot
#

Sometimes you just can’t find whatever the fuck you’re looking for

#

Lmao

hidden sable
#

also somebody in here is gonna get really mad when they find out i use individual pngs for my jokers

#

i dont combine them into a sheet

#

too much effort

#

only make sheets for jokers that need atlas pos

#

like soul_pos and changing a jokers pos

tranquil gull
#

how do you do the soul thing with the image floating in front of a card again?

sturdy compass
tranquil gull
#

how do you set that up?

hidden sable
daring fern
hidden sable
tranquil gull
#

thanks

lament agate
#

i suppose drawstep is another way to draw image over something?

lament agate
#

or SMODS. hooks is a thing?

lament agate
daring fern
daring fern
lament agate
#

not possible on jokers?

daring fern
lament agate
#

well fuck me

#

im confused

#

does Balatro uses F# or GLSL for shaders?

formal parrot
lament agate
#

pardon?

formal parrot
#

Check this

hybrid shadow
#

whats the variable for most played hand and how can i use it

formal parrot
#

In vanilla remade

hybrid shadow
#

ill check the voucher

formal parrot
formal parrot
lament agate
#

if i made a shader, would it instantly shows up in my mod or do i have to do something first

hybrid shadow
formal parrot
#

You have to make it an edition

#

To show in editions

lament agate
#

hows that

#

actually hold on

formal parrot
#

Smods.edition

lament agate
#

found it

formal parrot
#

Reading the wiki explains the wiki

hybrid shadow
#

G.GAME.current_round.most_played_poker_hand

lament agate
#

i am reading it

formal parrot
hybrid shadow
formal parrot
coarse plank
#

how would I make a joker that makes all tarot cards negative?

hybrid shadow
formal parrot
#

Try G.GAME.most_played_poker_hand

formal parrot
#

Not really sure

daring fern
lament agate
#

im gonna do the unspeakable

#

imma try writing a shader

#

pray for me

hybrid shadow
formal parrot
#

🙏

hybrid shadow
#

im eating rn, will try in a bit

coarse plank
daring fern
coarse plank
#

be able to stack many tarots at one time

#

this is my little joker

daring fern
coarse plank
daring fern
coarse plank
#

thank you

hybrid shadow
formal parrot
hybrid shadow
formal parrot
#

The crash

hybrid shadow
red flower
#

you have to get the most played hand manually

hybrid shadow
red flower
#

just for the ante iirc

chrome widget
#

G.GAME.current_round.most_played_poker_hand is used for The Ox. However, mind that Vanilla code only updates it once at the beginning of each Ante

sonic cedar
#

ok so, i currently have a successfully set up table-that-stores-the-key-of-a-joker-before-a-certain-event
is there a way i can use said table to have a joker mimic the effects of the jokers in that table?

chrome widget
#

There is but it's more complicated than you probably assume

sonic cedar
#

me already assuming it's complicated Fear

hybrid shadow
red flower
#

trying to copy and mess with the obelisk code

chrome widget
#
for k, v in pairs(G.GAME.hands) do
    if v.played > _played or (v.played == _played and _order > v.order) then 
        _played = v.played
        _handname = k
    end
end```
#

I would just steal the thing that most_played_poker_hand does

loud gorge
#

how do u make an atlas?

hybrid shadow
chrome widget
chrome widget
hybrid shadow
#

i think i just need the handname

#

idk lemme test

stoic fulcrum
#

is there a way to make it so a specific joker doesn't show up on the shop or is summoned by judgement? (besides making it legendary)

#

(if so, how)

chrome widget
sonic cedar
# loud gorge how do u make an atlas?
SMODS.Atlas{
  key = --'atlas-key',
  path = --'filename-of-your-atlas',
  px = --width of each sprite (typically 71),
  py = --height of each sprite (typically 95)
}
chrome widget
#

Whatever boolean in_pool() returns will determine if it can be spawned in whatever given scenario

daring fern
#

Also you are missing ,s

hybrid shadow
#

k is nil

sonic cedar
chrome widget
# hybrid shadow k is nil

Because k is a local value inside the loop. Like I said before, after the loop is finished _handname is the key of the most played hand

hybrid shadow
#

lemme try that again then

sonic cedar
#

if any
-# also oml more fodder joker tomfoolery

chrome widget
#

Youll need to use G.GAME.hands[_handname] to get the l_mult and l_chips

chrome widget
stoic fulcrum
red flower
sonic cedar
lament agate
#

@formal parrot did i fuck up or what

#

why doesnt it show up

formal parrot
#

Smods.edition

lament agate
#

im

#

so

#

fucking

#

stupid

formal parrot
#

I still love you

#

:>

lament agate
#

mwah

sonic cedar
#

everyone gets one

formal parrot
#

Sure lmao

lament agate
formal parrot
#

Should work

hybrid shadow
chrome widget
sonic cedar
#

wdym?

lament agate
#

ah fuck uhhhh

sonic cedar
#

oh duh

#

maybe i'll add a blueprint compatibility check? (before it adds the key to the table)

loud gorge
#

why is it givin an eror

formal parrot
#

debug plus

formal parrot
#

At the end

#

,

loud gorge
#

oh ok

formal parrot
#

Also

#

Path is

#

“Imagename.png”

loud gorge
#

oh so i put .png?

formal parrot
#

Put your sprite sheet

#

.png

#

Make sure its a png

sonic cedar
formal parrot
#

Last line need no comma

#

@lament agate how’s the

#

Shader

subtle merlin
lament agate
formal parrot
subtle merlin
#

the game just closes itself after a minute

formal parrot
#

I’ll consider that a crash

formal parrot
subtle merlin
#

individually they work

buoyant shard
#

My joker keeps spewing out spectrals during blinds and I don't know how to make it stop

formal parrot
#

Too much for the game to handle lol

hybrid shadow
#

all my cards work now, woohoo

formal parrot
#

Yeyyy

formal parrot
buoyant shard
formal parrot
formal parrot
#

Change your if end if end

#

To if elseif

#

End

subtle merlin
buoyant shard
stoic fulcrum
#

is there a typo here? i keep getting syntax errors when i try to add it

#

i added the brackets to the return call but looks like that changed nothing

lyric maple
#

i just started developing my first mod, and it says this. i've checked every bracket and it seems to have closed properly

here is the code from line 10 to 26:

SMODS.Atlas{
    key = 'Jokers',
    path = 'Jokers.png',
    px = 71,
    py = 95
}
SMODS.Joker{
    key = 'white'
    loc_txt = {
        name = 'White',
        text = {
            'Insert some really cool placeholder text.'
        }
    },
    atlas = 'Jokers',
    pos = {x = 0, y = 0}
}
urban wasp
stoic fulcrum
#

that's not the error

#

but sure lol

formal parrot
#

I know

#

Lol

#

I CANT FIND IT

daring fern
urban wasp
#

same with discards?

daring fern
urban wasp
#

gotcha

formal parrot
#

Says

stoic fulcrum
#

syntax error on 2072 (the in_pool line)

daring fern
formal parrot
#

Bro it looks fine

stoic fulcrum
daring fern
urban wasp
daring fern
urban wasp
#

round_resets?

daring fern
urban wasp
#

i see

buoyant shard
#

Is this how you get a joker to make everything in the shop half off? It's not working for me

  if self.area == G.shop_jokers or self.area == G.shop_booster or self.area == G.shop_vouchers then
    G.GAME.discount_percent = 50
   end
end```
buoyant shard
daring fern
buoyant shard
buoyant shard
daring fern
hidden sable
#

anyone got the "font" for the "joker" text on jokers

sonic cedar
#

is this how i would check for blueprint compatibility on another joker?

lament agate
#

@formal parrot im stuck

ivory coral
sonic cedar
#

niiiice thanku

buoyant shard
normal crest
#

when the joker is debuffed/sold/destroyed

ivory coral
buoyant shard
lucid owl
#

could i check if a card has the variable (card).ability.played_this_ante before it's set? right now this joker gives $1 no matter what, since cards have that variable set to true immediately upon being played

ivory coral
near bay
#

how to add value to a variable.

normal crest
lucid owl
hidden sable
#

like this part

lucid owl
ivory coral
wanton lance
lucid owl
wanton lance
lucid owl
#

we need context, code, an explanation of what you're looking to do

near bay
ivory coral
near bay
#

but it doesnt like the second variable

lucid owl
near bay
lucid owl
#

code screenshots/snippets would be very helpful

ivory coral
#

and then do the effect if it passes true

lucid owl
ivory coral
#

wait no the reverse

lucid owl
#

which happens before my joker's calculation

median veldt
#

hellos hai hello
has anyone recreated pareidolia

lucid owl
#

so every single card will give $1

median veldt
#

i'm trying to make similar cards

ivory coral
#

im not sure when it gets set exactly, maybe try iterating through the played hand in context.before? and marking cards for later there

wanton lance
lucid owl
#

as far as i'm aware, it's set instantly upon cards being played (pressing the play button, which calls G.FUNCS.play_cards_from_highlighted())

ivory coral
#

ah yes indeed youre right
in that case you'll probably just have to make your own variable to track

lucid owl
# near bay

there's a lot going on here, so you're looking for it to increase in xmult every time it calculates?

sonic cedar
#

guys if i wanted blueprint_effect to factor in all keys in a table, how would i do that?
unsurprisingly, this does not work.

near bay
#

like from 0.1 to -0.1

ivory coral
# near bay

the problem is that this isnt what the return{} is for
if you want to modify a value beforehand do it before your return{}
you probably want to randomly modify the cards Xmult config value before the return{}

median veldt
# lucid owl https://github.com/nh6574/VanillaRemade/blob/main/src/jokers.lua#L882

alright I have NO idea what I'm doing

local card_get_id_ref = Card.get_id
function Card:get_id(from_boss)
    return card_get_id_ref(self, from_boss) or (1 and next(SMODS.find_card("j_equality_equalace")))
end

tried to make pareidolia but for ace cards but i have no idea what exactly I'm looking at
i thought it would be similar to how the recreated pareidolia works

local card_is_face_ref = Card.is_face
function Card:is_face(from_boss)
    return card_is_face_ref(self, from_boss) or (self:get_id() and next(SMODS.find_card("j_vremade_pareidolia")))
end

but it errored out about a null value

lucid owl
# near bay

you're going to want to set a variable of xmultadd in your card's config, so it can be a default of 0 for example
and also set xmult in the config to 1 as a default

if context.joker_main then
  local change = pseudorandom_element({0.1, -0.1}, pseudoseed("seed")
  card.ability.extra.xmultadd = card.ability.extra.xmultadd + change
  card.ability.extra.xmult = card.ability.extra.xmult + card.ability.extra.xmultadd
  return {
    xmult = card.ability.extra.xmult
    card = card
  }
end
ivory coral
#

that way the random change will be permanant after it calculates

lucid owl
ivory coral
#

ooh wait youre right actually

near bay
#

no no i need that

ivory coral
#

oh i see

#

alright then

lucid owl
#

and apparently also sometimes just... return this for some reason?

#

definitely don't use that

ivory coral
#

thats weird

lucid owl
#

testing data shows that this is absolutely unhinged

ivory coral
#

what on earth

#

uhhhh

#

ok yeah i have no idea why that happens

#

try math.random(-0.1, 0.1)

#

cuz that shouldnt happen lol

lucid owl
#

pseudorandom_element({0.1, -0.1}, pseudoseed("seed") also works

wheat jewel
#

I'm trying to make my mod compatible with Talisman but i keep getting crashes at line 1420 even if i defined to_big to help with calculating some values

median veldt
wheat jewel
ivory coral
# wheat jewel

sounds about right
just you have to_big() defined in your mod elsewhere
should look something like to_big = to_big or function(x) return x end

#

actually wait

#

hold on

#

should you be using to_number()

ivory coral
#

because to_big() converts a number into a talisman bignum table which you cant exactly do normal arithmetic on
to_number() does the opposite which is what i think you want

#

define to_number the same way you did to_big and swap it out and it should work

wheat jewel
pastel kernel
#
on_discard = function(self, context)
    if context.discards_used > 0 then
        local total = context.discards_used
        local extra = self.ability.extra
        for _ = 1, total do
            for _ = 1, 2 do
                local card = SMODS.add_card({ set = "Spectral", edition = "e_negative" })
                if card then G.consumeables:emplace(card) end
            end
        end

should make 2 negative spectral on discard, don't know why it's not working

wheat jewel
#

so do i do soemthing like to_number(G.GAME.dollars) ?

median veldt
wheat jewel
#

and define it the same way to_big is defined

ivory coral
ivory coral
median veldt
#

yep

wheat jewel
ivory coral
#

thats not quite the same as what pareidolia does

wheat jewel
#

this should work maybe??

#

i'll keep ya posted

ivory coral
# median veldt yep

im honestly not sure how one would do that
most game effects just check the cards rank directly so itd be kinda impossible to change it

median veldt
ivory coral
#

suits shouldnt be hard thats just what smeared already does basically

median veldt
ivory coral
#

but anything that changes how ranks are counted is hard since most of it is hard coded or logically difficult

median veldt
#

oh true i forgot about smeared

ivory coral
lucid owl
#

what pareidolia does is simply returning true for every check of is_face, so every card "counts" as a face card

median veldt
#

does a card's ID number include the suit because it looks like some cards use the ID to know what card it is

lucid owl
#

you'd likely need to hook get_id() and make it always return 14 if your joker is present

#

although that could seriously mess things up

median veldt
lucid owl
#

given get_id is used a lot more impactfully than is_face

ivory coral
fierce frost
#

my joker is triggering twice when i click

ivory coral
median veldt
#

worth a shot

#

how do I do that
I tried but I definitely don't know what I'm doing since it just doesn't do anything at all

median veldt
#

no

native zinc
#

talisman incompat is G.GAME.round_resets comparison right

ivory coral
#

alright ill give the rundown
basically you make a local variable to reference a certain vanilla function
then define that function yourself afterwards
there you can drop in whatever code you want
at the end of your new function you call that local variable from earlier so the rest of the vanilla function continues as normal
let me pull up an example

#
function Card:is_face(from_boss)
    if self.debuff and not from_boss then return end
    if <some condition> then
        return true
    end
    return _is_face(self,from_boss)
end```
#

this hook would let me add my own check for whether a card should be considered a face card

ivory coral
median veldt
#

yeah so like i did

local _get_id = Card.get_id
function Card:get_id(from_boss)
    if next(SMODS.find_card("j_equality_equalace") then
        return 14
    end
    return _get_id(self, from_boss)
end
#

it could also be the id am I doing that right

the card is equalace and in the mod JSON the prefix is equality

median veldt
#

lemme try it again

hasty mist
#

i'm trying to hook SMODS.calculate_individual_effect so that jokers in the G.GAME.scoreop_mod table's scoring effects' operator's are increased, for example j_joker would give X4 mult instead of +4, how would i go about doing this?

ivory coral
median veldt
#

wonderful

mild grove
hidden sable
#

what are the dimensions of a consumable card

wild escarp
#

How could I have this change suit after every hand played instead of every round?

local function reset_willatro_jokeinthebox()
    G.GAME.current_round.willatro_jokeinthebox = G.GAME.current_round.willatro_jokeinthebox or { suit = 'Spades' }
    local joke_suits = {}
    for k, v in ipairs({ 'Spades', 'Hearts', 'Clubs', 'Diamonds' }) do
        if v ~= G.GAME.current_round.willatro_jokeinthebox.suit then joke_suits[#joke_suits + 1] = v end
    end
    local jokeinthebox_card = pseudorandom_element(joke_suits, pseudoseed('willatro_jokeinthebox' .. G.GAME.round_resets.ante))
    G.GAME.current_round.willatro_jokeinthebox.suit = jokeinthebox_card
end

function SMODS.current_mod.reset_game_globals(run_start)
    reset_willatro_jokeinthebox()
end
sonic cedar
#

has anyone here used SMODS.merge_effects? how does it work?

median veldt
ivory coral
hasty mist
ivory coral
#

other than that it should be fine at least for vanilla

median veldt
#

also what colour is this

hasty mist
hasty mist
paper zealot
#

For some unknown reason

ivory coral
hasty mist
#

hm

hasty mist
#

never used filter

median veldt
#

attention works

hasty mist
#

maybe both work?

median veldt
#

maybe

paper zealot
loud gorge
#

how do i add cards with vanilla remade? other mods use a assets folder with 1x and 2x

hasty mist
#

interesting

#

good to know

ivory coral
hasty mist
paper zealot
# hasty mist good to know

It stood out to me when I was writing the text styling guide, I could never work out where the name FILTER came from

hasty mist
#

thunk is weird

ivory coral
hasty mist
median veldt
# median veldt attention works

what rarity do u guys think this (and the same card for all other ranks, and the same card for all suits in case it should be different) should be

hasty mist
ivory coral
median veldt
#

good point

ivory coral
#

like being able to play a 5oak for literally free is very strong

median veldt
#

that is a great point actually

#

i mean no matter what I'm gonna do it's not gonna be very balanced but I'm gonna try to make it as balanced as possible without changing what the actual card does so yeah
rare and like. eight dollars i guess

ivory coral
#

fair enough

#

you should consider what happens if you have multiple of the rank ones together

thorn bough
#

Does anybody know why my joker doesn't detect playing card destructions?

mild grove
#

Alright i got somewhere with a joker spawning tags, But sadly this is only the code copied from the diet cola joker.

Does anyone know how i can get it to work something like an investment tag or the rocket, where after defeating the boss blind, the player is given an uncommon tag.

ivory coral
#

so if aces are higher up in that itll stop there

#

but it would be counterintuitive

median veldt
#

either that or the one furthest to the right i guess?? i have no idea

#

i'll try it gimme a sec to make the rest of the cards

ivory coral
ivory coral
median veldt
#

okay I need to reword this

wild escarp
#

Does anyone perhaps have an example of changing the required suit for a joker (similar to ancient joker or castle) after every played hand?

mild grove
errant fulcrum
#

When I try and sell this card, I get an error saying "attempt to index loval 'center' [a nil value] but I have no idea what that means

median veldt
ivory coral
#

it has a recreation of castle with plenty of comments to help

near bay
#

how do i make a joker card display a message with the yellow effect underneath them.

ivory coral
wild escarp
#

I saw that VanillaRemade uses G.GAME.current_round, but I don't know of a hand equivalent.

urban wasp
#

a large issue with this code for a joker that makes all enhanced card have the positive effects of all vanilla, cryptid, and cryptposting enhancements is causing all the effects below one another to not trigger if the one above it has. for example, if a played hand has 5 or more scoring cards, the first effect occurs, but not anything below it for some reason. any fixes?

if context.individual and context.cardarea == G.play and context.other_card.ability.set == 'Enhanced' then
    if #context.scoring_hand >= 5 then
        context.other_card.ability.perma_x_mult = lenient_bignum(context.other_card.ability.perma_x_mult) + lenient_bignum(card.ability.extra.light_xmult_mod)
        return {
            extra = { message = localize("k_upgrade_ex"), colour = G.C.MULT },
            card = card
        }
    end
    if card.ability.extra.lucky_mult_chance == math.random(1, card.ability.extra.lucky_mult_chance) then
        return {
            mult = lenient_bignum(card.ability.extra.lucky_mult),
        }
    end
    if card.ability.extra.lucky_money_chance == math.random(1, card.ability.extra.lucky_money_chance) then
        return {
            message = "+" .. lenient_bignum(card.ability.extra.lucky_money) .. "$",
            ease_dollars(lenient_bignum(card.ability.extra.lucky_money)),
            colour = G.C.MONEY
        }
    end
    return {
        chips = lenient_bignum(card.ability.extra.bonus_chips),
        extra = {
            mult = lenient_bignum(card.ability.extra.mult_mult),
            extra = {
                Xmult = lenient_bignum(card.ability.extra.glass_xmult),
                extra = {
                    message = "^" .. lenient_bignum(card.ability.extra.abstract_emult) .. " Mult",
                    Emult_mod = lenient_bignum(card.ability.extra.abstract_emult),
                    colour = G.C.DARK_EDITION,
                }
            }
        }
    }
end
ivory coral
#

between that and the event

hasty mist
#

filling all the key substitutes later this is pretty rudimentary

ivory coral
#

since it just checks for the key

thorn bough
hasty mist
#

is there a list anywhere of like every effect that i can use as a cheat sheet

ivory coral
mild grove
ivory coral
#

in the source code

hasty mist
#

smods is kinda complex

urban wasp
ivory coral
pastel kernel
#

can i get some help?

hasty mist
ivory coral
# mild grove is this correct?
calculate = function(self,card,context)
  if context.end_of_round and ... then
    G.E_MANAGER:add_event ... end) }))
  end
end```
wild escarp
#

Is there a current hand equivalent to G.GAME.current_round? G.GAME.current_hand doesn't exist.

ivory coral
#

calculate is run whenever something in the game, calculates what effect it should have
the if context checks just narrow down when that should be to only certain scenarios
in this case, when defeating a boss blind

ivory coral
median veldt
#

are the colours for suits just the names of the suits

ivory coral
#

plural, yes

hasty mist
median veldt
#

so "hearts"

hallow forge
#

toh pfp

hasty mist
#

i love toh

ivory coral
hallow forge
#

and it's the otter with a dark side scene, perfect

loud gorge
#

how do i add cards with vanilla remade? other mods use a assets folder with 1x and 2x

mild grove
#

@ivory coral Is this around the right thing?

urban wasp
ivory coral
loud gorge
#

i keep calling jokers card sory

ivory coral
#

it doesnt?
im not sure how it does it but it must have something similair

#

also what do you mean add jokers with vanilla remade
its its own thing

manic rune
#

can someone explain this phenomenon thats happening before my very eyes at this moment

ivory coral
hidden sable
#

how do i make a custom modded consumable type

ivory coral
#

but otherwise yeah

loud gorge
#

idk i thought it would be more convenient for coding

mild grove
#

Um, something is going wrong

hidden sable
#

why are you even using ...

#

looks ai generated tbh

ivory coral
hidden sable
#

like the ai wanted you to fill something in there

ivory coral
#

no it was me

hidden sable
ivory coral
#

i typed that

hasty mist
hidden sable
#

we gottem

#

wrap it up

ivory coral
#

no

#

im trying to help but my instructions arent quite getting through how i mean

hidden sable
#

im joking, if you cant tell...

#

but yeah they shoulda replaced the line

#

thats the issue

ivory coral
#

i dont mean literally copy paste im not coding it for you im just helping you along

hidden sable
mild grove
hasty mist
#

is there a way to permanently flip a playing card

hidden sable
ivory coral
vague crest
#

hello, im trying to create a joker that checks for adjacent ranks held in hand, how would i set up a for loop to check each held in hand card? all the attempts i have tried have just crashed

rapid stag
#

how do i change the speed at which a dynatext cycles?

ivory coral
# mild grove I'm sorry, i'm not good when it comes to lua coding in general

thats okay but personally id recommend you acquire a basic understanding of how coding functions
its not a lua thing here its just technical knowledge
you dont need a phd in lua or anything to make a mod but i would recommend learning at least a bit on how code is actually read by a computer and what some key terms mean
itll probably make it a whole lot easier

hidden sable
#

hex code?

hasty mist
#

checking for playing cards highlighted is #G.cards.highlighted, right?

hidden sable
#

table with rgba?

ivory coral
hidden sable
ivory coral
#

HEX('4F6C74') for example

ivory coral
ivory coral
#

actually no

#

in this case for i = 1, #G.hand.cards might be better

near bay
#

how do i multiply chip value?

ivory coral
#

then check the ranks of [i+1] and [i-1]

vague crest
#

G.hand cards was what i was missing ty

ivory coral
ivory coral
manic rune
#

i have several questions

near bay
ivory coral
#

just return xchips = <some value>
its already supported by smods

near bay
#

alright!!

ivory coral
#

same as xmult just replace the xmult with xchips

ivory coral
near bay
median veldt
ivory coral
digital niche
ivory coral
#

once a function calls a return it stops

hasty mist
#

maybe i can add them to a table or something

hasty mist
#

and automatically flip if drawn?

urban wasp
#

how do i fix that 😭

median veldt
#

it also just occurred to me that they're still scored like the cards they normally are but.
a) i don't care enough to try to fix that
b) i think if it did it'd be way more busted

ivory coral
near bay
# digital niche wym?

When the xmult applys to the multiplier, itll show how much xmult is added.
how do i do that for xchips?

digital niche
digital niche
urban wasp
#

yeah but like how do i have it return without ending everything

#

or is there like an alternative

ivory coral
manic rune
#

oh my fucking god

ivory coral
lament agate
#

do you guys have any ideas how to move the Aces on the main menu?

near bay
ivory coral
#

so like
it sets a value to true and later in the return just add (... and value == true) so it checks for it

#

maybe

#

im not sure

ivory coral
near bay
formal quest
#

What IDE setup should I use for balatro modding?

hasty mist
#

that seems bad

lament agate
#

the logo is bal tro

#

but i want it to be

#

b latro

#

move the ace there

ivory coral
# ivory coral what do you mean

like its default position on the menu?
im pretty sure thats its own cardarea so youd have to do some ui shenanigans to move it

ivory coral
ivory coral
#

uhhh
the bal tro sprite doesnt actually have the a behind the ace anyway

digital niche
hasty mist
#

uh maybe i can just stop balatro from unflipping cards when put back in the deck?

#

is that possible?

near bay
ivory coral
ivory coral
hidden sable
hasty mist
ivory coral
#

actually

#

apparently stay_flipped is a thing
im not sure what it is or how it works exactly but maybe thats worth looking into

median veldt
#

i thought i was onto something

#

but it is not a flush

near bay
hidden sable
digital niche
ivory coral
hidden sable
near bay
hidden sable
#

only thing ive added

ivory coral
hidden sable
#

i have a sneaking suspicion its the HEX

ivory coral
digital niche
#

you did xchip

sturdy compass
digital niche
#

and then called xchips

median veldt
#

ah

digital niche
#

@near bay

ivory coral
median veldt
#

sorry i copied from smear to see if i could modify it i didnt notice that

ivory coral
#

how did you put it

hidden sable
median veldt
#

wait no
cuz

near bay
sturdy compass
#

Like you can but it's not super recommended

ivory coral
#

maybe

median veldt
ivory coral
#

otherwise it looks fine

hidden sable
ivory coral
ivory coral
median veldt
#

clearly its a thing tho

#

the remake uses find_card tho

#

hmmmm

ivory coral
#

hm

#

probably use find_card then

#

thats not the issue

vague crest
#

its saying it's indexing a nil value

median veldt
#

okay i had to make them seperate elseif statements instead of just or???

#

that's weird

#

but ok

hidden sable
ivory coral
#

oh ok at least it works

ivory coral
#

uhhh

hasty mist
#

hm, still trying to figure out how to flip cards in the first place

hidden sable
#

fuller error if it helps

digital niche
hasty mist
#

im trying to flip all highlighted cards

digital niche
#

i think it could be what is causing the error (im not sure tho)

median veldt
#

the real question is what suit this is

sturdy compass
vague crest
#

oh

#

ohhhh

near bay
vague crest
#

ok so would i just add like, if i = 1 dont do that

#

or its proabbly doing that at the end too isnt it

#

how would i catch this for the last card also

digital niche
sturdy compass
#

What I would do is start the loop at i = 2 and then set it to stop at #G.hand.cards - 1

ivory coral
# hidden sable tried didnt work

ive done this before without issue
maybe try adding a default paramater to your consumabletype
and/or adding an undiscovered paramater to its loc_txt

vague crest
#

ohhhh thats smart ok

#

how do i stop it prematurely again?

#

been a while i mostly just used loops in java in grade 11 😭

hasty mist
#

so im lost

sturdy compass
#

loop arguments in lua are weird lol

#

hold on

ivory coral
sturdy compass
#

You could but that's just an extra step

ivory coral
#

fair

sturdy compass
vague crest
#

ohhh shit thats just a thing that works

#

heartwarming and beautiful will try

sturdy compass
#

hope it helps

hasty mist
sturdy compass
# hasty mist bump
  1. No can_use function. This will make it so you can actually use the card when the given arguments are true and can make it so you don't have to check for highlighted cards in the use function itself
  2. Loop through the highlighted array and just run :flip() on them
manic rune
sturdy compass
#

Basically that lol

manic rune
#

thats the flip all highlighted card function

vague crest
#

it doesnt crash anymore 🙏 it doesnt Work however

sturdy compass
#

The lack of formatting is killing my braincells lol

#

Do you have the Lua VSC extension

vague crest
#

ooh i do not

sturdy compass
hasty mist
#

my goal is to make it permanent

sturdy compass
#

yes

#

I think

hasty mist
#

so, flipped cards are always drawn flipped

sturdy compass
#

maybe?

pure salmon
#

no

sturdy compass
#

I forgort things are weird

hasty mist
#

how would i make it permanent

gilded blaze
hidden sable
#

game launched when i commented this out

manic rune
#

whats the problem

sturdy compass
gilded blaze
hidden sable
#

WAIT IM STUPID

vague crest
#

hopefully formatted it a little better?

hasty mist
sturdy compass
#

Nope, sorry

hasty mist
#

hm

viral ember
#
SMODS.Challenge {
    key = 'easy_challenge',
    loc_txt = 'Easy Dubz',
    jokers = {
        { id = 'j_mvan_astral' }
    },
    rules = {
        custom = {
            { id = "win_ante", value = 10 },
        },
        modifiers = {
            { id = "joker_slots", value = 10 },
        },
    },
    unlocked = true
}```
Everything works except the win ante not being set to 10?
hasty mist
#

thats fine, ty anyways

sturdy compass
#

That's definitely a more in-depth addition than something I can just help you implement off-rip lol

hasty mist
#

yeah fair