#💻・modding-dev

1 messages · Page 556 of 1

pastel kernel
#
if randomeffect == 8 then
                for i = 1, card.ability.immutable.rnpjokers do
                    local neojokers = pseudorandom_element(G.P_CENTER_POOLS.Joker, pseudoseed('neo2')).key
                    SMODS.add_card({ key = neojokers, edition = 'e_negative', stickers = {"perishable"} })
                end
            end```
#

please help brah...

daring fern
pastel kernel
daring fern
pastel kernel
daring fern
pastel kernel
#

How about multiplying played poker hand’s level

pastel kernel
daring fern
pastel kernel
daring fern
pastel kernel
#

i've been meaning to simplify this joker's level up code, but idk how

calculate = function(self, card, context)
        if context.before and next(context.poker_hands["Flush"]) and not context.blueprint then
            G.E_MANAGER:add_event(Event({
                trigger = 'after',
                delay = 0.4,
                func = function()
                    play_sound('busterb_makudonarudo')
                    card:juice_up(0.3, 0.5)
                    update_hand_text({ sound = 'button', volume = 0.7, pitch = 0.9, delay = 0 },
                        { level = 'x' .. to_big(card.ability.extra.multiplier) })
                    for poker_hand_key, hand in pairs(G.GAME.hands) do
                        local current_level = hand.level or 1
                        local levels_to_add = math.max(0, math.floor(current_level * (to_big(card.ability.extra.multiplier) - 1)))
                        if levels_to_add > to_big(0) then
                            level_up_hand(card, poker_hand_key, true, levels_to_add)
                        end
                    end
                    update_hand_text({ sound = 'button', volume = 0.7, pitch = 1.1, delay = 0 },
                        { mult = 0, chips = 0, handname = '', level = '' })
                    return true
                end
            }))
#

(Levels up all poker hands by x2)

robust marsh
#

Is there a way to increase the interest earned to 2 per 5 bucks instead of 1 per 5? Need this for a deck

pastel kernel
#

@daring fern have you got a simpler way to level up all poker hands by x2?

daring fern
robust marsh
#

OHH

#

I thought to the moon was separate from regular interest

#

mb

#

thank you

#

alright it's G.GAME.interest_amount

pastel kernel
#
if randomeffect == 6 then
                print("Effect 6")
                if context.final_scoring_step then
                return {
                    echips = math.min(card.ability.extra.echipsemult, card.ability.immutable.echipemultincreaseprevention),
                    emult = math.min(card.ability.extra.echipsemult, card.ability.immutable.echipemultincreaseprevention),
                    print("Success")
                }
                end
            end

does not print success

pastel kernel
daring fern
pastel kernel
daring fern
pastel kernel
long sun
#

how can i get the amount of chips that a playing card will give?

#

eg. a regular 9 would give 9 chips, a bonus 3 would give 33, a hiked 5 may give 10, a stone card will give 50

red flower
#

card:get_chip_bonus() iirc

long sun
#

does that include the chips it gives normally?

red flower
#

i think so

long sun
#

ah gotcha ^u^ thanks!

cursive gazelle
#

I think yes

#

Is there a pool for tags ?

red flower
#

G.P_TAGS

long sun
#

okay one more question

#

suppose i have two of the same joker, and i sell one of them

#

and it has a remove_from_deck

#

in that function, does it still consider itself to be a card?

#

like, would SMODS.find_card count it?

red flower
#

yes

long sun
#

grand ^^ thanks

real night
#

how do i check if the nominal ranks of all scored cards in played hand adds up to 21

long sun
#

sum their .base.nominals iirc

real night
long sun
#

your_card.base.nominal gives a card's base chips

#

so 2 for 2s, 10 for face cards, 11 for aces

#

at least, iirc ^^ correct me if i'm wrong

rotund sable
#

Me when aces could count as 1

rotund sable
long sun
#

mm, this isn't correctly handling cards added by Standard Packs

#

OH wait no hold on

#

Enhanced too

red flower
#

default is for base playing cards

languid canopy
#

is there a way to make so a certain rank equals itself AND another one at the same time ? (ping me)
ex: modified ace that also counts as a two will trigger both wee joker and scholar

red flower
#

is there? yes. is it easy? no

languid canopy
#

ow shucks

#

thanks

willow scroll
hidden notch
#

Can you slow down the rate at which a Card gets removed by

if context.discard then
  return {
    message = 'removed',
    colour = G.C.RED
    remove = true -- This is too fast!
  }
end
```?
quick scarab
#

modified a bit, but it still crashes the games

#
SMODS.Joker {
    key = "helpy",
    blueprint_compat = true,
    rarity = 1,
    cost = 5,
    atlas = 'Joker',
    pos = { x = 9, y = 0 },
    config = { extra = { broke = 40 } },
    loc_vars = function(self, info_queue, card)
        info_queue[#info_queue + 1] = { key = "fnaf_sprite_WIP", set = "Other" }
        info_queue[#info_queue + 1] = { key = "fnaf_code_WIP", set = "Other" }
        return { vars = { card.ability.extra.broke } }
    end,
    calculate = function(self, card, context)
        if G.GAME.dollars < 0 and context.end_of_round and G.GAME.blind.boss then
            G.STATE = G.STATES.GAME_OVER
            G.STATE_COMPLETE = false
        end
    end,
    add_to_deck = function(self, card, from_debuff)
        G.GAME.bankrupt_at = G.GAME.bankrupt_at - card.ability.extra.broke
    end,
    remove_from_deck = function(self, card, from_debuff)
        G.GAME.bankrupt_at = G.GAME.bankrupt_at + card.ability.extra.broke
    end
}
pastel kernel
#

does not print "success"

if randomeffect == 3 then
                print("Effect 3")
                if context.cardarea == G.play and context.retrigger_check then
                    return {
                        repetitions = math.min(card.ability.extra.retriggerallplayed, card.ability.immutable.totalretriggerlimit),
                        print("Success")
                    }
                end
quick scarab
pastel kernel
#

oh no it just does not trigger repetition

quick scarab
#

oh ok

daring fern
pastel kernel
#

oh

#

context.repetition?

daring fern
pastel kernel
# daring fern Yes.

ok, but what about effect 2?

if randomeffect == 2 then
                print("Effect 2")
                if context.retrigger_joker_check and context.other_card == G.jokers[1] or context.other_card == G.jokers[#G.jokers] then
                    return {
                    repetitions = math.min(card.ability.extra.leftmostrightmostjokers, card.ability.immutable.totalretriggerlimit),
                    message = localize("k_again_ex"),
                    print("Success")
                    }
                end
            end
quick scarab
pastel kernel
#

also doesn't work

daring fern
willow scroll
#

to_big(x) yourself, now ⛈️

pastel kernel
# daring fern It's `G.jokers.cards`

like this?```lua
if context.retrigger_joker_check and context.other_card == G.jokers.cards[1] or context.other_card == G.jokers.cards[#G.jokers] then

daring fern
quick scarab
hidden notch
# red flower wdym

I want my Card to say "Target", then wait half a second before my Joker destroys the card.
Full code as Example:

-- I removed other Conditions for Simplicity
if context.discard and not (context.blueprint) then
  G.E_MANAGER:add_event(Event({
    trigger = 'after',
    func = function()
      attention_text({
        text = 'Target',
        scale = 0.8,
        hold = 1.0,
        major = context.other_card,
        colour = G.C.RED,
        align = 'cm',
        offset = { x = 0, y = 0 },
        silent = true
      })
      return true
    end
  }))
  delay(0.5)
  --SMODS.destroy_cards(context.other_card) -- Doesn't actually destroy the card :))
  return {
    message = 'Acquired!',
    colour = G.C.RED,
    remove = true -- is too fast.
  }
end
#

Using the "remove" destroyes it Immidiatly, using SMODS.destroy_cards doesn't actually destroy the card :)

red flower
#

does this work

local other_card = context.other_card
SMODS.destroy_cards(other_card)
hidden notch
#

Lemme try, one sec

pastel kernel
#

i don't actually know how to use this.


if randomeffect == 7 then
                print("Effect 7")
                    if context.before and context.scoring_name then
                        return {
                            level_up = G.GAME.hands[context.scoring_name].level*(card.ability.extra.lvl-1),
                            message = localize("k_upgrade_ex"),
                            print("Success")
                    }
                end
red flower
#

oh so it creates ghost cards ok

hidden notch
#

Oh-
Sorry I should've mentioned that x'3

pastel kernel
#

how do i make this happen

dapper sun
#

does anyone know if it's possible to interface with the bsky/atproto api in lua?

#

i wanna make smtn similar to membership card but for my bsky acc

#

i've found the thing in the bsky api docs for getting the acc data (eg: follower count) but idk how to get it using the smods http api

pastel kernel
#

hello?

red flower
#

but i would need to test

dapper sun
#

have you tried adding remove = true to the return table?

#

it lets the game know you're destroying cards

#

wait i can't read

#

you did that already

red flower
#

maybe you can do it in pre_discard idk

hidden notch
red flower
hidden notch
#

Yeah I was about to say.. That kinda leads to it's own problems x'3

#

I remember I tried to do something like this before and Just gave up
That was months ago and I tought;

Surely, now it'll be easier!

long sun
#

how can i change this patch, so that it replaces all instances of the pattern with the payload?

red flower
#

what i would do is use SMODS.destroy_cards and set a flag on the card so then you can patch this in G.FUNCS.discard_cards_from_highlighted and do removed = G.hand.highlighted[i].removed or removed before the condition

long sun
#

mm, weird

sturdy compass
#

You’re not cutting off a times argument are you?

daring fern
long sun
#

it's not, strangely

long sun
#

i want this to work like a find and replace

sturdy compass
daring fern
long sun
#

ah i see

#

i'll do it line-by-line then

red flower
#

yeah i think you need regex for that

long sun
#

oh?

red flower
#

do not ask me what the pattern would be

long sun
#

do i just change pattern to regex, and replace all the special characters with escaped ones?

red flower
#

i mean, try it but i think you need to make the pattern match the line

sturdy compass
#

Very much recommend

long sun
#

trying this

#

ah it needs pattern

#

alright, retrying

hidden notch
#

If it ends up being a Problem with other Mods, I'll just update the Keyword from the normal "removed" to some custom one x3

red flower
#

i was thinking of something different and then i got distracted lol

pastel kernel
red flower
#

you would need to patch this part so it doesnt draw if it is removed

pastel kernel
#

How are you supposed to fit all of these in one joker

hidden notch
dapper sun
# dapper sun does anyone know if it's possible to interface with the bsky/atproto api in lua?

i managed to find this, which seems to be what i need
https://docs.bsky.app/docs/api/app-bsky-actor-get-profile

*This endpoint is part of the Bluesky application Lexicon APIs (app.bsky.*). Public endpoints which don't require authentication can be made directly against the public Bluesky AppView API: https://public.api.bsky.app. Authenticated requests are usually made to the user's PDS, with automatic service proxying. Authenticated requests can be used...

pastel kernel
long sun
#

why is this happening?

#

i guess this is my cue to just patch the relevant lines individually 😭

hidden notch
long sun
#

nice :D at last

#

woah, i just noticed, these are all Phanta jokers :D

crystal perch
#

bump

obtuse silo
#

this hook is apparently relevant to everything going to shit when i look at the editions in the collection

red flower
#

try context.type == 'store_joker_modify'

obtuse silo
#

oh right

red flower
#

i think that will stop the crashing but viewing the collection will still trigger the context

proven adder
#

does anyone know if it is possible to bump the amount of consumables the user can select at once up to 2, and when 2 are selected, grab the id or name of them??

long sun
#

what FPS do Blind chips animate at?

daring fern
obtuse silo
long sun
hidden notch
proven adder
red flower
#

<@&1133519078540185692>

exotic hedge
#

💔

hidden notch
dreamy lodge
#

How do I check how many of a certain joker you have? (I'm trying to make a joker that gives chips for each copy of itself you have)

red flower
#

maybe try another flag name

red flower
obtuse silo
dapper sun
hidden notch
dapper sun
#

idk what the problem isss

#

it's definitely getting the right follower count so why isn't it using it

robust marsh
#

Is there a way to straight up just remove vouchers from the shop on each re-entry?

#

I have a card that's meant to spawn vouchers in but they just persist between shops until an ante is cleared and i cant find a workaround

dapper sun
#

it's bc the http call is asynchronous

#

i'm dumbb

#

how do i make the joker's value updated when the value updates?

slim ferry
#

i'd imagine you use the update function for a joker since thats for stuff that runs every frame

hidden notch
#

-# I'd actually suggest to only get the value at the start of each run-

slim ferry
#

or if you really want to update it then just do it at the end of round or smth

sturdy compass
#

I agree with this

dapper sun
#

either way

#

how do i make it show the right value in the collection and when in shop?

hidden notch
#

You could save the Value in a G.GAME global and call it from there? lewxen_Noblewoman_Laugh

sturdy compass
#

That’s not a bad idea

slim ferry
#

doesnt G.GAME only exist in runs tho

red flower
#

nope

#

it exists at all times but gets reset in runs

rotund sable
#

Did I live in lies this entire time

red flower
#

yes

dapper sun
#

if it gets reset in runs how do i make sure it exists at the start of the run

hidden notch
#

function SMODS.current_mod.reset_game_globals(run_start)
if run_start then
--code
end
end

sturdy compass
#

You can hook either start_run or init_game_objects

obtuse silo
#

i'm trying to make a copy of lines 487-489 that subtract hand size when a negative joker gets it's edition removed
how would i check for that?

hidden notch
sturdy compass
dapper sun
#

i'm still confusedd

sturdy compass
#

What about exactly?

dapper sun
#

idk

#

i just

thorn pumice
#

hii! could someone help me understand how to create stickers 3:

cursive gazelle
#

It should be like other game objects

thorn pumice
#

both places

#

i have it enabled on a stake but it seems to be applying to every card (tarots and planets) and also not performing the behavior i want

cursive gazelle
#

You should find parameters to fix that

daring fern
#

thorn pumice
#

yes that's why i'm asking for help here because i've already spent a couple hours reading the wiki and look at vre and bunco sticker examples

slim ferry
thorn pumice
slim ferry
#

as that determines what card types it goes on

thorn pumice
#

thank you i'll do that first

red flower
#

get_sell_cost doesn't exist

thorn pumice
#

got it

quick scarab
#

Trying to create a consumable that can create a booster pack but either bugs and the screen gets all messed up or it crashes, any help?

#
SMODS.Consumable{
    key = 'boost', 
    set = 'fnaf_item', 
    atlas = 'TarotFnaf', 
    pos = {x = 7, y = 1},
    config = { extra = { cards = 2 } },
    loc_vars = function(self, info_queue, card)
        info_queue[#info_queue + 1] = {key = "fnaf_sprite_WIP", set = "Other"}
        info_queue[#info_queue + 1] = { key = "fnaf_code_WIP", set = "Other" }
        return { vars = { card.ability.extra.cards } }
    end,
    use = function(self, card, area, copier)
        SMODS.create_card { key = 'p_standard_mega_1', area = G.play }
        G.FUNCS.use_card({ config = { ref_table = booster } })
    end,
    can_use = function(self, card)
        return #G.deck.cards >= 3 -- placeholder
    end
}

daring fern
quick scarab
#

oh wait

robust marsh
#

can you remove a voucher after it has already been redeemed

quick scarab
#
SMODS.Consumable{
    key = 'boost', 
    set = 'fnaf_item', 
    atlas = 'TarotFnaf', 
    pos = {x = 7, y = 1},
    config = { extra = { cards = 2 } },
    loc_vars = function(self, info_queue, card)
        info_queue[#info_queue + 1] = {key = "fnaf_sprite_WIP", set = "Other"}
        info_queue[#info_queue + 1] = { key = "fnaf_code_WIP", set = "Other" }
        return { vars = { card.ability.extra.cards } }
    end,
    use = function(self, card, area, copier)
        local booster = SMODS.create_card { key = 'p_standard_mega_1', area = G.play }
        G.FUNCS.use_card({ config = { ref_table = booster } })
        booster:start_materialize()
    end,
    can_use = function(self, card)
        return #G.deck.cards >= 3 -- placeholder
    end
}

red flower
#

opening boosters is wonky, i would recommend restricting the usage to the shop only

high sinew
#

Just curious lets say you wanna remove a certain voucher from pool for a deck whats the easiest way to do this?

quick scarab
#

like I should have done to begin with

red flower
#

that's easy yeah

hidden notch
# hidden notch Already tried that and it didn't fix it <:shrug_yui:610855026096865301>

Okay so.. Oh my god that took so long and I cannot fathom why this works now--
The final Puzzle-Piece:, is to:
Call SMODS.destroy_cards with the immediate Parameter set to true BUT
Then putting that into an G.E_MANAGER:add_event set to trigger = 'after'
So, why not just call card:start_dissolve() in a Event?
Because then other Jokers listening for a Destruction Event won't trigger!
And don't get funny ideas, calling SMODS.calculate_context in this Situation also Crashes the Game!
YIPPEEEEE!! yippee

Update for anyone Stumbling into this:
First of all, Hi! :3 - I hope you're not going as mad as I did :3
You might notice that the Game doesn't draw Back enough cards!
You can always just put the Hand-Draw event into your Return or;
Use best of both worlds! (Get a Custom Color and all SMODS Advantages!)
context.other_card:start_dissolve({{1, 0, 0, 1}, {1, 0.5, 0.5, 1}}, false, nil, false)
SMODS.destroy_cards(context.other_card, nil, true, true)
The order, surprisingly, matters owo'

thorn pumice
#

yayyy :D

hidden notch
#

But I have discovered a Bug with another Joker using SMODS.calculate_context,
so while the amount of my gray hair has increased... So has the amount of my Bugs to fix :')

versed swan
hidden notch
#

Okay I'm gonna start packing for an upcoming convention now, that sounds MUCH more pleasant after all of those shenanigans wheeze lewxen_cry

daring fern
#

hidden notch
#

Ping me when there's an Answer ... Or if you're patient enough I'll look into it more next week owo'

frigid cargo
#

I wanna start learning ui except im not sure if the smods thing has everything i need to know. Does it have everything i need to know for basics?

red flower
#

its the only resource so

frigid cargo
#

Aw ok

thorn pumice
slim ferry
#

i mean that looks correct

#

idk what the issue is here tbh

thorn pumice
#

also it spawns on literally every card and i'm not sure how to fix that, i don't see anything in the docs but in vre i see rate=0 for the pinned sticker?

#

okay thank you

red flower
#

i think should_apply overrides everything

#

so you would need to check the set and make a pseudorandom call in there

#

but i never made a sticker so i might be wrong

thorn pumice
#

aghhh this is so confusing

languid canopy
#

im trying to make so a custom joker appears on the main menu but it crashes, what do i do wrong ?

red flower
#

:create_joker doesnt exist

languid canopy
#

i see

#

but what does tho ?

daring fern
languid canopy
#

yeah sure, howd i do that

#

i know nothing abt that toml thingy

red flower
#

you want to add a card or replace the existing ace?

languid canopy
#

add one (yeah it says replace i just wanted to know how it works before modifying it) code from talisman

red flower
languid canopy
#

oh wait nvm

#

do i have to shove that in a new lua file or in the main ?

red flower
#

wherever you want

slim ferry
#

it basically never matters where you put any code as long as you load it

languid canopy
#

hum

#

well it works..halfy

#

theres indeed 2 cards but the one thats not the ace of spade is invisible

red flower
#

show code

languid canopy
#

surely

red flower
#

oh i also forgot to highlight the next part that makes it visible below hah

languid canopy
red flower
#

the timing on that is kinda bad tho i never got around to fix it

languid canopy
#

i need the whole spash part in between ?

red flower
#

no that's for the background

languid canopy
#

like this so

#

wait i didn't read it if i need to get rid of undefined things

#

uh should be good

#

it works !!

languid canopy
red flower
#

ah yeah that you need to resize as well

languid canopy
#

oh well

#

is there no parameter for a float sprites in there ?

red flower
#

try

newcard.children.floating_sprite.T.w = newcard.children.floating_sprite.T.w * 1.1 * 1.2
newcard.children.floating_sprite.T.h = newcard.children.floating_sprite.T.h * 1.1 * 1.2
languid canopy
#

as new lines or i replace those newcard lines in there

red flower
#

new

languid canopy
#

nvm ill try both way

#

kai

#

nope, no effect

#

i mean its fine lol ill just get another card instead of that one with the floating sprite

#

its not like my life depends on that one sprite resize xd

red flower
#

you can also check aiko's mod

languid canopy
#

👌

red flower
#

it has the legendary in the title

languid canopy
#

i see

cursive gazelle
#

How do i add talisman compat ?

red flower
#

last question on the vanillaremade faq

cursive gazelle
#

Much love

zealous glen
robust marsh
#

mmm what's the G.jokers.highlighted equivelent for consumables?

red flower
#

G.consumeables

#

.highlighted

robust marsh
#

ah

#

the spelling is different, forgot

zealous glen
#

With extra tables in calculation returns, what's the order again

#

Deep first?

slender bay
#

This doesn't work, any idea what I'm doing wrong?

slim ferry
#

what isnt working

#

also you should use SMODS.pseudorandom_probability and SMODS.get_probability_vars

slender bay
#

so what would that look like?

red flower
slim ferry
rotund sable
rotund sable
# slim ferry

we love the fact that this is technically outdated (they added a 6th parameter to the function)

slim ferry
#

okay but you dont need it

#

also this is like the only documentation

red flower
slim ferry
#

*doesnt

red flower
#

yeah that

#

my phone is acting weird

robust marsh
#

uhhhh is there a way to make it so the consumable doesn't get deselected when you try to select another one or is that too niche

red flower
#

you need to modify the highlight limit

slim ferry
#

G.consumeables.config.max_highlighted i think

slender bay
slim ferry
#

individual

#

also use vanillaremade as reference...

#

its peak

gilded goblet
#

i was about to ask what was the easiest way to debuff a playing card with debugplus because i couldnt figure it out how to not mispell G.hand.highlighted[4].debuff = true

i kept doing shit like g.hand.highlighted[4].debuff = true and G.hang.highlighted[4].debuff = true 😭

umbral zodiac
#

with debugplus dp.hovered is a way to get the card youre currently hovering over with your mouse

red flower
#

you can also highlight a card and do dp.hovered.debuff = true or use SMODS.debuff_card

umbral zodiac
#

^

zealous glen
#

@red flower Do probability modification effects apply if you don't own a card?

gilded goblet
#

good to know 🙏

#

ty gng

robust marsh
#

thank you <3

zealous glen
# red flower wdym

If you own the card, I know it applies to the UI, but I suppose it doesn't work if you don't own it

red flower
#

if you hover it in the collection it should work too for example

zealous glen
red flower
#

ah yeah

zealous glen
#

Not sure how I want to handle that

inner salmon
#

Unsure if im being blind or stupid but are there any resources or documentation for starting off making a balatro mod?

slim ferry
ocean sinew
#

how do I make a joker effect not work If It's being retriggered by another joker

clear ocean
#

sorry this is more for this channel

#

here's what it looks like

hasty kelp
#

will this legendary troll joker do anything since it return nil at the end and have no config or a return vars

    key = 'nichts',
    loc_txt = {
        name = 'Nichts',
        text = {
            ''
        }
    },
    atlas = 'Jokers',
    rarity = 4,
    cost = 12,
    unlocked = true,
    discovered = true,
    blueprint_compat = true,
    eternal_compat = false, 
    perishable_compat = false,
    config = {}
    loc_vars = function(self, info_queue, card)
        return {vars = {}}
    end,
    calculate = function(self, card, context)
        return {
            nil
        }
    end,

}```
slim ferry
#

you could just

#

not return

#

or not have a calculate at all for that matter

hasty kelp
#

and what should the troll text description be for it

slim ferry
#

also you could leave out config and loc_vars too

hasty kelp
#

but what should the troll text description of the joker be

clear ocean
slim ferry
clear ocean
# clear ocean here's what it looks like

the only two things is to make sure it cannot apply for egg or rental jokers and only set the sell cost to zero if it has the sticker which is what i was asking here

#

yup...

#

ooh i see why this happens

hasty kelp
#

tf does this mean

cyan dust
#

mismatched brackets

#

in src/jokers.lua, line 400

zealous glen
hasty kelp
modern kindle
#

my brain is empty right now is there a way i can have a blind influence data on the cash out screen? i have blinds which give rewards during it and i want those to appear visually at the cash out screen even if the rewards are given mid blind

ocean sinew
#

thanks

zealous glen
clear ocean
#

don't think that's supposed to happen

modern kindle
hasty kelp
#

now i get this

clear ocean
#
    should_apply = function(self, card, center, area, bypass_roll)
        -- G.GAME.modifiers['enable_'..self.key] and
        return not card.ability.rental
    end,
hasty kelp
#
    key = 'blankjoker',
    loc_txt = {
        name = 'Nichts',
        text = {
            '{100} mult (real) (not clickbait)'
        }
    },
    atlas = 'Jokers',
    rarity = 4,
    cost = 12,
    unlocked = true,
    discovered = true,
    blueprint_compat = true,
    eternal_compat = false, 
    perishable_compat = false,
    config = {},
    loc_vars = function(self, info_queue, card)
        return {vars = {}}
    end
}``` this is the code
hasty kelp
#

i saved

heady siren
#

I've asked this before, but I don't think I ever really got an answer. Is it possible to hotswap an atlas on the fly based on a condition? I have my own deckskin, and I wanna make the atlas for the deckskin swap to a different image if the player currently has the Smeared Joker, because the new image is the deckskin with hearts and diamonds using an averaged color, and spades and clubs using an averaged color

clear ocean
#

but everything else works looks like it all i have left is to:

  1. fix this
  2. make a stake later on which enables it
  3. make jokers like egg incompatible with duff
modern kindle
# zealous glen Cashout

yea, i was thinking it would just pull the key of the blind or whatever and then under that just have normal text that says the rewards

in this case i give joker slots, dollars, and perma mult

so itd be like

Blind Name

+x joker slots
+x dollars
+x mult

zealous glen
clear ocean
zealous glen
clear ocean
hasty kelp
zealous glen
#

also I think it might be confusing if it recalls stuff you've already gained without extra context

rotund sable
hasty kelp
rotund sable
#

Then I have no idea why it's crashing saying the key is missing

gilded goblet
heady siren
modern kindle
clear ocean
zealous glen
heady siren
#

Should I talk to Hatred specifically or go find her mod and check out the code there?

clear ocean
#

unless rental and duff together is fine and i can just move duff to the side

gilded goblet
clear ocean
#

like would a joker that takes three dollars away but selling it gives you back nothing is balanced or something?

zealous glen
#

Just because the cashout screen is meant for new winnings not to recapitulate old winnings

modern kindle
modern kindle
#

yes

zealous glen
#

so I'd expect a message mid-Blind

#

not post-Blind

modern kindle
#

meaning when you win the blind, the cashout would reflect what youve won

clear ocean
#

okay another problem

heady siren
clear ocean
#

have no idea why either are happening like i read the docs right?

#

return not card.ability.rental and sets is joker = true

modern kindle
#

i was about to say

red flower
#

discord is bad you need to write whole words

heady siren
#

Discord's forums search function sucks

modern kindle
#

idk i have never fumbled looking for something

#

shrimply become more skilled

clear ocean
#

same thing with planet and tarot cards

heady siren
#

I have no idea what to look for in the code

hasty kelp
#

anyone know the missing parameter decleration key thing

zealous glen
#

find the name of the bald atlas

clear ocean
#

i don't get this i don't get this

slim ferry
#

where is Card:redeem even called? i see that it gets used in G.FUNCS.use_card, though that isnt ever called on a voucher anywhere from what i see

red flower
#

in apply_to_run

clear ocean
#

so i set the value to self.ability.Farceur_Duff because of this and but now its not working i think i am going insane

#

AND I DON'T KNOW HOW TO NOT HAVE IT APPEAR ON CARDS OTHER THAN JOKERS AH

gilded goblet
#

id help you out if i knew how lol

clear ocean
#

maybe if i make a stake that enables it maybe it solve it

heady siren
# zealous glen take a look at the images

The way that mod does it is by hijacking the set_sprites function, is there a way to detect which deckskin is currently being used and whether it's low contrast or high contrast?

slim ferry
clear ocean
red flower
#

oh wait

#

it is actually called in use_card for vouchers

clear ocean
#

the stake works part works

#

feel free to look at it @red flower but honestly i am running out of ideas to solve it

red flower
clear ocean
#

no?

red flower
#

then you didn't run out :3

hasty kelp
#

this is a fun trolling joker it sais +100 mult

#

but actually does nothing

red flower
# clear ocean no?

the thing about applying to everything is because the should apply always returns true when it meets the condition, you need to check for the set and make a pseudorandom call

what was the other problem? the cost not updating?

clear ocean
#

the cost was updating but i only want it to only do that when you have the sticker but it isn't working anymore

#

it worked when it was true but that meant every cards even without the sticker has its value set to zero

red flower
#

you need to call set_cost when the sticker is applied

clear ocean
red flower
#

dunno

#

probably

clear ocean
#

so the self.sell_cost = 0 or function Card:set_cost()

red flower
#

just card:set_cost()

clear ocean
#

i just don't get this

#

the apply thing works

rotund sable
#

Maybe the rental is applied after your sticker

clear ocean
#

maybe idk

#

i mean it can be rental compatable just not sure if that would be fair

rotund sable
#

Would be annoying

clear ocean
#

it would but ugh

#

i don't like doing this like i like making up concepts but actually programming it in and just spending several hours debuging isnt fun

#

but i guess that's part of the deal idk

rotund sable
#

Sometimes I wonder if I'm weird for liking coding the mods more than playing them

clear ocean
rotund sable
#

No idea

clear ocean
#

is the compat_exceptions meant to be what i am supposed to use so only jokers (outside of egg) can have it?

slim ferry
#

compat_exceptions is for well, exceptions to the compatibility

#

it would just let you exclude specific cards from getting the sticker

clear ocean
#

well i mean it would prevent planet and tarot cards and egg from getting it but that won't prevent modded stuff from getting it that can't or won't need it

#

so it has to be like the other way

#

but again ugh

clear ocean
#

this is probably why i get no where with this kind of stuff and i am not having fun doing this but i don't like just outsourcing the work to someone else

#

like i spent a hour or two JUST for this sticker and debugging it

hushed field
slim ferry
red flower
#

this is a hard skill to teach but the reason i almost never asked a question is because i am good at just reading the code instead

clear ocean
#

maybe this kind of stuff aint for me

slim ferry
#

unless youre using should_apply

#

which overrides sets

clear ocean
#

that's probably why i stopped programming as much as i used to as a kid

#

i don't have the time or energy to waste

heady siren
clear ocean
#

like i have a five hour shift in a hour but with everything like ugh

red flower
#

my coworkers say i have really good memory because i remember a lot of stuff about our codebase haha

clear ocean
#

i do like computers and i am interested by how they work but i guess i am more of a designer than programmer

red flower
#

i hate computers

clear ocean
#

i mean is it normal for someone to like make the concepts and art and have someone else do the programming or something like a team effort?

#

but i am not much of an artist either i just feel like a dj khalid

red flower
#

it is normal in the sense that people do it, but many don't have the luxury to have the coder/artist to pair with haha

heady siren
clear ocean
#

i mean i could just work on concepts and such in my free time and if anyone wants a crack at it idk

heady siren
#

If Smeared Joker is there, and you're using my deckskin, then it just makes it use the Smeared version

clear ocean
#

was fun and good luck

heady siren
#

You can take a break and tackle the problem later if that works for you

#

I've been trying to get my thing working for weeks

clear ocean
#

it's more that i just don't have the time in the long run i have a job, got other hobbies, and school

zealous glen
clear ocean
#

and i rather spend my free time doing something i can enjoy short and long term

heady siren
clear ocean
#

welp gotta get ready for work by eating dinner and such

zealous glen
heady siren
zealous glen
near heart
#

how can i use set to specify multiple consumable types? like if i want to generate a random consumable thats not just confined to one set how might i do that

red flower
#

you would need to randomly pick between those yourself

near heart
#

so just like generate a random number and have the number determine which it creates

red flower
#

it's easier to use pseudorandom_element

rotund sable
#

Pseudorandom preferably

zealous glen
#

why

rotund sable
#

Imagine you play seeded and each time you restart, the (insert what he's using it for) has different results

zealous glen
rotund sable
#

I wasn't saying that to N 😭

zealous glen
red flower
#

they posted it just after me give them a break 😭

zealous glen
#

I mean, that's why I asked for clarification

timid zinc
#

managed to make an error i dont think i've seen in my life

#

this is the code

rocky plaza
#

so like "pack_test_music" would work for a music track

timid zinc
#

Oh

near heart
#

btw spectral set auto ignores soul & black hole and planet set auto ignores locked hands right?

red flower
#

yes

timid zinc
#

why does my custom deck become nebula deck sometimes?

#

this is the atlas info

cursive gazelle
cursive gazelle
#

And make sure it load before the deck

timid zinc
#

that makes sense, i load the files first in my main file

feral tree
#

How do i have a joker detect if you have another specific joker in hand?

faint yacht
#

if next(SMODS.find_card('j_modprefix_key'))

lost current
red flower
#

try changing the context to press_play

#

also #G.hand is not correct which doesn't matter here because you want that number to be 0 anyway but it's weird

#

also on_draw doesn't exist

#

unless you added it of course

red flower
#

also index doesn't exist lol

#

and calculate is missing an argument

#

i will come back in 20 minutes with more

stiff locust
#

can somoene explain pools to me

bold sleet
#

they have water and you swim in then

red flower
#

pools are tables of objects, usually to pick from for a random spawning effect

stiff locust
#

ok but what do i do to make one and how do i use it

#

say if i wanted to make a pack that contains jokers from x pool

red flower
#

i was going to link to ali's repo lol im going to let them explain

faint yacht
stiff locust
#

ah

red flower
#

for a booster you can return { set = "objecttype key" } then

#

(no mod prefix)

stiff locust
#

where would i return that

red flower
#

in create_card

stiff locust
#

okay

#

i can do that

red flower
#

you need the area as well i think

stiff locust
#

question

faint yacht
#
create_card = function(self, card)
    return SMODS.create_card({ set = 'TOGAJKR', area = G.pack_cards, key_append = 'toga'})
end,

I just use it like so myself.

stiff locust
#

if i put a card key in the pool that doesnt exist

#

and it gets spawned by the pack

#

what happens

#

does it crash or does it go to default

faint yacht
#

If the pool doesn't exist, it'll crash on startup when trying to add items iirc?

red flower
#

i think it crashes on startup yeah

stiff locust
#

i meant

#

the card key doesnt exist

#

but the pool does

faint yacht
#

It should use the fallback one.

stiff locust
#

gotcha gotcha

#

thats convenient

#

this is gonna be really nice

faint yacht
#

You should probably define the cards in the ObjectType to include those that are for sure to exist, then use pools = for conditionally registered items.

red flower
#

i think it might crash too

stiff locust
#

I can access it like a table right

heady siren
faint yacht
heady siren
#

But that might be a little bit too much work, and it'd conflict with mods that replace joker sprites

stiff locust
red flower
#

you want G.P_CENTER_POOLS.objecttypekey

hallow slate
#

Where would be the best place in the code to alter the G.deck.cards card order

red flower
#

inside the .lua file

#

joking aside, you need to be more specific

hallow slate
#

Where does it shuffle the deck at the beginning of each blind?

formal quest
#

I'm creating a custom context here in card.setability so I can alter what type of planet card spawns. How can I make the spawning planet card accessible to a joker in calculate using the custom context?

hallow slate
#

I have this one enhancement which sends the card to the back of the deck

red flower
#

i have a patch for that part in my mod because i disable shuffling for an effect

hallow slate
#

"G.deck:shuffle('nr'..G.GAME.round_resets.ante)"

red flower
hallow slate
#

Thx!

solemn shuttle
#

this is a very silly question to ask and im guessing the answer is no but

is there a way to add images to a card description

#

-# like if i hovered over a joker to see the effect all i get is an image LOL

frosty rampart
#

i think the answer might be yes actually
i don't know even the first step of how you'd go about that, but i feel pretty confident that the answer is not a firm no

solemn shuttle
#

hmmmm

wind steppe
pastel kernel
#

Gradients doesn’t work idk why

wind steppe
#

line 80 is if e.config.ref_table.ref_value == "unfiltered" then

#

and i dont know why this crashes

#

val is true e is nil

faint yacht
#

...for UI, isn't it optimal to have e first like vanilla? And to just prevent crashes, check if e is valid and a table.

wind steppe
#

i dont know

wind steppe
faint yacht
#

¯_(ツ)_/¯

wind steppe
#

and i do like my ui to do things

formal quest
#

Is there something wrong with this pseudorandom?

#

Not getting any successes

frosty rampart
#

probably not the direct issue, but don't use G.GAME.probabilities.normal in your pseudorandom probability calls. the function handles that already

#

i don't see anything else overtly wrong, it might be an issue with your context in that case. what happens if you always do the thing without the probability part?

formal quest
#

Custom context, sets planet card to be a black hole as it spawns

frosty rampart
#

i see
throw a print statement in the calculate to see if the context is running at all

formal quest
#

I know it is because it's just adding a custom context to something I was doing before

#

I had this doing what the joker does, inside the hook, I just added the context as a proxy

frosty rampart
#

oh you know what
you're setting [card].center in the calculate function when you should be setting [card].config.center

viral ember
#

Is there any way to get context in update?

daring fern
formal quest
viral ember
# daring fern What is the goal?

I'm trying to make takingtoolong become true after spending too much time idling (it all works I'm just trying to make sure it only happens in a blind)

daring fern
formal quest
daring fern
viral ember
formal quest
#

So it's only possible to change the spawning of a card from inside the hook even if I use a custom context?

daring fern
viral ember
#

nevermind

daring fern
formal quest
#

I'm replacing it with black hole so it won't loop anyways

formal quest
daring fern
formal quest
#

The RNG works too, and the joker is finally copyable

charred widget
#

Hello friends, I have two tweaks i'd like to make for a joker of mine

#

Rayquaza here eats played stone cards, and gains 0.1x mult for every stone card eaten

#

however, it doesn't show the current mult in the joker's description

#

i'd like it to show the mult

median veldt
#

Okay so like technically

#

But like my mod uses like. one function from cryptlib at the moment, which exists in Cryptid (which i DO have activated rn)

#

So it shouldnt cause any problems right

#

Or would it be better to just have cryptid and cryptlib enabled

stiff locust
#

so with the new context.money_altered, can I see how much the money was changed by and if it is more or less than the previous money value?

daring fern
remote shell
#

guys i forgot my deck

#

good thing i start with all these standard tags ;3

gray void
stiff locust
daring fern
stiff locust
#

gotcha

#

okay

modern kindle
#

if im blocking the players screen with an overlay, is there a way i can make it so they cannot select buttons by clicking? ive been blindly clicking things which is not ideal while blind and id like to prevent that

specifically this is in blind

tall wharf
#

i will need help from someone who knows about LSP

#

why do these definitions not show up in language server when i try to do stuff with it

tired otter
#

Hey so i have a joker that sometimes creates a negative RANDOM joker everytime shop is entered
Why does it say that it spawns SPECIFICALLY a Jimbo with i want the joker created to be random?

daring fern
tired otter
mystic river
#

remove the part where you're appending to info_queue

#

in loc_vars

#

like, you actively put in code that looks something like info_queue[#info_queue+1] = G.P_CENTERS.j_joker, this isn't a default feature that you have to turn off when you're not using it

daring scroll
#

Hey, y'all. Just messing around with Joker Forge to familiarize myself and experiment. Is there any way for me to obtain this in the site, or would I have better luck trying to code it directly?

#

Essentially turns each Discard into 2 Hands at the start of a round, then when a hand plays, the joker has XMult equal to the hands left (Kinda like Bunco's Righthook Joker retriggering cards an amount equal to hands remaining)

rocky osprey
#

so you basically wanna set discardslost to the base discards the player has then minus round discards by the amount of discardslost

#

make sure duration is this round

#

then you wanna set addhands to discardslost

#

then double the value of addhands

#

then add the hands with the new value of addhands

#

also make sure that's also the duration of this round

#

then when you play a hand, set xmult to hands remaining

#

then multiply mult by the value of xmult

#

done

daring scroll
#

Hell yea, thanks. I used to mess with this stuff for Civ VI modding, but it's all left my head 💀

rocky osprey
#

no problem

robust marsh
#

i swear, i dont know why but jokerforge looks more complicated than doing it by hand

#

i never used it so ig thats why lmao

daring scroll
#

I'm a visual learner, so I either gotta think about functions as blocks of code, or literally see them like that

rocky osprey
#

yeah it's like scratch but balatro

#

people have different preferences

#

hello chat what causes this

#

i've been trying to figure out

lament agate
#

@daring fern are you available right now

lament agate
#

i looked at the globals.lua and i want to grab the value of the music's volume

#

this is for the name right

#

if i wanted to grab the vol instead

#

what do i change

daring fern
lament agate
#

?

#

can you explain like, each one of them and what do they do if you can?

daring fern
daring fern
lament agate
#

i see now

#

which lua is responsible for saving the player's data again

#

i.e best hand, win streak, etc.

daring fern
lament agate
lament agate
daring fern
lament agate
#

right

#

thanks

primal robin
#

nxkoo, pro tip: use console to see value of stuff

lament agate
#

enlighten me

vast bough
rocky osprey
#

wow thank you

#

tbh my 4 years experience of scratch really helped

thorn basin
#

small question: how can I check if a card is held in hand at the end of the round?

daring fern
thorn basin
#

aight, thx

wispy falcon
#

Is there a table for cards that are in scoring right now?

daring fern
wispy falcon
daring fern
fluid nebula
#

hello, i never modded Balatro before, is there some guide i can follow to code? all i wanna do is add few Jokers.

lament agate
#

@daring fern about the volume mult thing

#

it doesnt update like immediately

#

i think its per instance

#

what to do with it to make it update in real time

daring fern
lament agate
#

like?

wispy falcon
#

Nevermind, I need a table with all cards, not just the scoring ones

daring fern
# lament agate like?
update = function(self, card, dt)
    card.ability.variable = G.SETTINGS.SOUND.music_volume
end
lament agate
daring fern
lament agate
#

alrighty

lament agate
daring fern
lament agate
lament agate
daring fern
lament agate
daring fern
lament agate
#

fair

#

so like

#

config starts at 0?

daring fern
frail parcel
#

how to check for a specific group of jokers?

fluid nebula
#

I just started making one joker, just for testing and i can't seem to load it in the game..

#

i am following a tutorial

fluid nebula
#

but in the tutorial video, the guy did not had a json file and yet they got their joker in the game!

cursive gazelle
#

It should load without it but you need a json file anyways

fluid nebula
#

ahh

cursive gazelle
#

Metadata is now stored in a json file instead of header

fluid nebula
#

alright, thx

cursive gazelle
robust marsh
#

the header works but it's just a lot messier compared to a json

cursive gazelle
#

This is a simple joker mod example

fluid nebula
#

omfg it worked

cursive gazelle
#

I recommend reading the wiki

#

Like

#

A lot

obtuse silo
#

question
how would i make the "select_card" variable on a booster pack vary depending on consumable type?

#

because if i have the "select_card" in use then i can't have it so that some cards are used immediately

robust marsh
#

is there a way to make all consumables usable unconditionally

obtuse silo
#

wdym?

primal robin
daring fern
primal robin
#

Also G.FUNCS.can_use_consumeable

daring fern
primal robin
#

It has oen checks aswell

#

Like for stop use

daring fern
primal robin
#

I see, ok

obtuse silo
wispy falcon
#

How do I make a hand not count in a boss blind, like psychic but with different conditions?

frail parcel
#

how do i get current blind score

pastel kernel
#

uhh, does this actually remove stickers?

if randomeffect == 5 then
                print("Effect 5")
                local total = 0
                for i, v in pairs(SMODS.Sticker.obj_table) do
                    for i2, v2 in pairs(G.jokers.cards) do
                        if v2.ability and v2.ability[i] then
                            total = total + 1
                            print("Success")
                        end
                    end
                end
                return total,
            end
rotund sable
#

it just counts the sticker it seems?

pastel kernel
#

how do i actually remove it then?

#

remove the stickers i mean

pastel kernel
rotund sable
pastel kernel
rotund sable
#

in your case v2:remove_sticker(sticker) i believe

red flower
rotund sable
pastel kernel
rotund sable
#

you're iterating over all the stickers

#

you can just pass that in

pastel kernel
#

(Sticker)?

rotund sable
#

v2:remove_sticker(v) i think?

pastel kernel
#

like this?

 if randomeffect == 5 then
                print("Effect 5")
                local total = 0
                for i, v in pairs(SMODS.Sticker.obj_table) do
                    for i2, v2 in pairs(G.jokers.cards) do
                        if v2.ability and v2.ability[i] then
                            v2:remove_sticker(v)
                            total = total + 1
                            print("Success")
                        end
                    end
                end
                return total
            end
rotund sable
#

it should work

#

wait

#

v2:remove_sticker(i) actually

robust marsh
red flower
red flower
robust marsh
wispy falcon
red flower
robust marsh
#

thank you

red flower
wispy falcon
# red flower yeah, thats why the eye is better because it doesnt use a config option

I was wondering why that doesn't work for me but uniqueRanks always gets set back to 0, doesn't it?

        local ranks = {}
        local seen = {}
        local uniqueRanks = 0
        if context.scoring_hand then
            for _, card in ipairs(context.full_hand) do
                table.insert(ranks, card:get_id())
                if not seen[card:get_id()] then
                    seen[card:get_id()] = true
                    uniqueRanks = uniqueRanks + 1
                end
            end
            print("All Cards: ", ranks)
            print("-----------------------------------------------------")
            print("Unique Ranks: ", uniqueRanks)
            print("-----------------------------------------------------")
        end

        if context.debuff_hand then
            if uniqueRanks > self.config.maxRanks then
                blind.triggered = true
                return {
                    debuff = true
                }
            end
        end
    end```
red flower
#

yes

#

hmm i actually dont remember the stuff in debuff_hand let me check

wispy falcon
#

Damn... Where should I put the local uniqueRanks = 0 instead?

red flower
#

what does uniqueRanks print

wispy falcon
#

The amount of unique ranks selected

crisp coral
#

try putting the vars outside the calculate

red flower
wispy falcon
crisp coral
#

uhm,, na

#

just outside the SMODS.Blind scope

wispy falcon
#

Wait, it's randomly working now. I changed literally nothing and I did save it before testing

red flower
#

yeah as far as i see it it should have worked haha

wispy falcon
#

But why didn't it before TwT

pastel kernel
#

what am i doing wrong?```lua
SMODS.Gradient{
key = "Epileptic",
colours = {
HEX('FF0000'),
HEX('FF7F00'),
HEX('FFFF00'),
HEX('00FF00'),
HEX('00FFFF'),
HEX('0000FF'),
HEX('8B00FF'),
HEX('FF00FF')
},
cycle = 0.1,
interpolation = 'trig',
}

red flower
#

🤷

red flower
pastel kernel
#

white badge color for rarity

#

it's supposed to be epileptic

#

not white

red flower
#

you probably set it wrong in the rarity not in the gradient

#

i think white is the default

frail parcel
#

is there a easy way to disable all vanilla jokers for a challenge rather than typing out every single id

pastel kernel
red flower
#

are you defining the gradient before the rarity

pastel kernel
#
    key = "Grandiose",
    loc_txt = {
    name = "Grandiose",
    },
    default_weight = 0,
    pools = { ["Grandiose"] = true },
--    badge_colour = HEX('f7b4c6'),
    badge_colour = SMODS.Gradients["busterb_epileptic"],
    get_weight = function(self, weight, object_type)
        return weight
    end,
}```
red flower
pastel kernel
#

they're in separate lua files

red flower
pastel kernel
#

rarities.lua

red flower
red flower
pastel kernel
#

ok that's too epileptic

languid canopy
#

hello, about custom decks, how can i change the base hand size ?

red flower
#

have you checked painted deck

languid canopy
#

not yet, ill do it right away

#

lowk forgot abt it

sonic cedar
#

Is there a context for taking a card from a booster pack?

#

actually found a diff idea instead

cursive gazelle
#

how can i add text styling to a gui node

red flower
#

manually

#

theres a function for it but most of the time its easier to do it yourself

#

i couldnt find what the function was called lol, its loc_parse_string

sonic cedar
red flower
#

no, locals are reset between calls

sonic cedar
#

crikey

#

card.ability then?

red flower
#

yeah

sonic cedar
#

nice

red flower
#

whats the effect tho

knotty orchid
#

Is there any tutorial on shaders?

hallow slate
#

No

#

You steal

primal robin
hallow slate
#

:trole:

primal robin
#

While first part is relatively easy, actual localizing is problematic

#

Unless your mod for SMODS of course

knotty orchid
hallow slate
#

Shader making is the worst part

cursive gazelle
#

i don't wanna localize

knotty orchid
#

wanted to learn anyways

frail parcel
#

im trying to ban all vannila jokers for a challenge
this doesnt work but it also doesnt crash

red flower
#

dont call the function

#

also what smods version do you have

frail parcel
#

1.0.0-beta-0827c

red flower
#

hmm, let me see how this feature works its pretty new

red flower
knotty orchid
#

Not what I was looking for but I like it

frail parcel
#

so i have to do it manually?

red flower
#

no, the function works

knotty orchid
#

You can make a function that returns that table

red flower
#

but the return has to be in that format

#

and it has to be banned_cards instead of banned_keys

frail parcel
#

so how would i do that
im a bit confused

red flower
#

can you copy the code here

#

so i can modify it

frail parcel
#

restrictions = {
banned_cards = {
local banned = {}
for k, value in pairs(G.P_CENTER_POOLS.Joker) do
if not value.nimsi then
table.insert(banned, value.key)
end
end
return banned
end,
}
}

slim ferry
#

you just made a table but with function code inside it

#

should be banned_cards = function() ... end

frosty rampart
frosty rampart
slim ferry
#

oh i see

frosty rampart
#

that way it can be automated based on a value stored in the joker instead of having to manually write out a fuckton of cards

red flower
frosty rampart
#

oh right you can just make banned_cards a function too

red flower
#

yes, if you call it it's not going to work for other modded jokers

languid canopy
#

how can i hide certain modded hands unless the player play a specific deck ?

willow scroll
#

how would i target the card that is the view deck button?

red flower
languid canopy
#

alright

slim ferry
#

steamhappy

willow scroll
slim ferry
#

im pretty sure G.deck.cards[1] is the bottom of the deck iirc

hardy viper
#

it's probably G.deck.cards(#G.deck.cards)

#

[]

#

not ()

red flower
#

i think the card at the top is G.deck.cards[1]

slim ferry
#

buh

red flower
#

not the top of the deck but the top of the area

#

like the one that shows up at the top, not the actual card that is drawn

willow scroll
#

i have a dumb idea on how i want to display my permanent buffs

red flower
#

its what smods uses to display messages

hardy viper
#

oh odd

#

yeah that's fucked up

#

oh wait

#

okay yeah

slim ferry
hardy viper
#

okay nvm that's optimal

slim ferry
#

:3

sonic cedar
#

how can i check the value of a card ability ingame? tried doing an eval dp.hovered but im not seeing anything

hardy viper
slim ferry
hardy viper
willow scroll
#

oh wait yeah mb .ability

hardy viper
#

if it's nothing then uh you're not hovering anything

sonic cedar
#

thank you 😭

#

no i meant nothing as in no ability info

#

mb

#

why did that freeze my game Fear

#

balatro please

hardy viper
#

are you storing any sort of object in ability

#

because that would be Bad

sonic cedar
hardy viper
#

deck?

sonic cedar
#

deck

hardy viper
#

elaborate

sonic cedar
hardy viper
# sonic cedar

idk if it's causing the issue but you should remove deck from where it is in this screenshot

#

idfk what the other issue is

#

probably nothing that can be ascertained from what you've given

sonic cedar
hardy viper
#

you don't in the first place

#

if you really want to you can do like deck = 0

#

as it is rn it causes a hole in the table

#

which doesn't do anything necessarily

sonic cedar
#

oh lmao

hollow horizon
#

Hi there! Is there a context for checking if THIS joker was destroyed? In every documentation I've seen there's only checking for selling it or destroying playing cards

#

Like I'd like to check if this joker was sold OR destroyed and then do something

slim ferry
#

another joker or itself only?

hollow horizon
#

itself

slim ferry
#

do it in remove_from_deck

#

since that gets called when its removed in any way

hollow horizon
#

So should I do
if context.selling_self or context.remove_from_deck then
or simply
if context.remove_from_deck then?

slim ferry
#

remove_from_deck is another function on the joker

#

you wouldnt do it in calculate

hollow horizon
#

I see

#

so just write whatever I wanna do in remove_from_deck just like I'd do in calculate?

slim ferry
#

yeah

hollow horizon
#

Great

#

Thanks

jolly pivot
#

anyone know why there are these white pixels on the edge if you have pixel smoothing enabled?

#

is it just a balatro thing or something on my part?

#

the atlas doesnt have anything there its just transparent

hollow horizon
#

This may be a stupid question, but to make sure... Does "G.GAME.round_resets.ante" does what it sounds like it does? That is Changes ante to 1? I don't want to reset the whole game or anything. Just go back to 1 with all the jokers and stuff

rocky plaza
hollow horizon
#

Ooooh ok

#

So it wasn't that stupid question

#

Can I just... G.GAME.round_resets.ante = 1?

red flower
#

use ease_ante() instead

hollow horizon
#

just that? just if SOMETHING then ease_ante() end?