#💻・modding-dev

1 messages · Page 433 of 1

peak tiger
#

oh

#

that also gives an error though, just a different one

wintry solar
#

What does your config table look like?

peak tiger
wintry solar
#

Your enhancement key is wrong, it should be something like m_modprefix_keyyoudefined

vast night
#

hi everyone :D
how do i prevent a card enhancement from appearing in booster packs?

#

couldnt find anything in the wiki

burnt apex
#

gonna see if anyone has any idea what the issue is one last time before i sleep,

Expected Behavior: Kings/Jacks score, flip to show the back, become queens, flip to show front and are discarded

Actual Behavior: King/Jacks flip to show back, score, become queens, flip to show front and are discarded

the scoring and becoming queens might be swapped, but there isnt a functional difference either way

hidden sable
#

any way to make chances get affected by cards like oops all 6s

burnt apex
hidden sable
burnt apex
#

What's your probability

hidden sable
#

should be 1 in 100

burnt apex
#

Code?

#

Just the pseudorandom since I'm on mobile

hidden sable
#
SMODS.Joker { -- Money Smaro Joker
    key = "moneysmaro",
    loc_txt = {
        name = "Money Smaro",
        text = {
            "{C:green}#2# in 100{} chance to",
            "gain {C:money}$#1#{} on round end"
        }
    },
    config = { extra = { money = 100, odds = 100 } },
    rarity = 1,
    atlas = "moneysmaro",
    pos = { x = 0, y = 0 },
    cost = 6,
    loc_vars = function(self, info_queue, card)
        return { vars = { card.ability.extra.money, (G.GAME.probabilities.normal or 1)} }
    end,
    calc_dollar_bonus = function(self, card)
        local normal = G.GAME.probabilities.normal or 1
        local odds = card.ability.extra.odds or 1
        if pseudorandom("moneysmaro") < normal/odds then
            return card.ability.extra.money
        end
    end
}
#

its not a long joker

vast night
#

hey

#

how do i add a random edition to a card?

tight notch
#

How would i check for cards previously played this ante in a joker, similar to the pillar

#

so like cards previously played this ante give +10 mult

tight notch
#

i checked

vast night
#

hmmm

tight notch
#

could i replace debuff card with other card

vast night
#

so whats the problem?

vast night
vast night
tight notch
#

?

vast night
tight notch
#

still confused

tight notch
#

when testing the joker it just applies the mult to every card

burnt apex
#

@willow plinth so

hidden sable
#

figured it out

burnt apex
#

But it's doing something else

burnt apex
willow plinth
burnt apex
#

I'll try that in the morning then

#

Thanks

willow plinth
#

it's morning for me

burnt apex
#

Well technically is for me too

#

But like

#

Really early morning lol

#

And I haven't slept

willow plinth
#

eastern us huh

#

go sleeep

burnt apex
#

And yeah I shuddd

runic jay
#

How would one make a joker compatible with blueprint?

hasty mist
#

blueprint_compat = true

runic jay
#

And where would you put that?

cerulean bane
#

With your eternal/perishable compat bools
I think you also need to include a blueprint context in your joker’s code for it to actually be compatible though

runic jay
#

But where would you put it specifically?

#

Nvm, figured it out

stiff quiver
#

is there a way to check if a card is being retriggered?

wintry solar
summer shore
#

how can i check if the last played card is an Ace?

lament agate
#

pardon

#

but how do you check if you already defeated a boss blind?

#

@faint yacht like this then?

faint yacht
#

That's for generally checking boss blinds... if you want current blind being a Boss one, G.GAME.blind.boss.

lament agate
#

how do you detect that you defeated them?

#

context.end_of_round?

faint yacht
#

ye.

lament agate
#

ahhh okay

#

thank you @faint yacht

snow vale
#

how can i make another currency?

red flower
#

jokes aside: that's not a straightforward question, it's a whole project

lament agate
#

do they not have example for consumables?

red flower
#

what are you trying to make

lament agate
#

a consumable

red flower
#

thank you

lament agate
#

a few of them atleast

red flower
#

what types

lament agate
#

tarot like

#

like every mods has their own

#

codes, torats, silly

lament agate
#

thanks

red flower
#

at the top it shows you how to make your own consumable type

final goblet
#

hi

#

what color is used for negatives again?

#

i keep forgetting

red flower
#

dark_edition

lament agate
#

holy jesus thats complicated

final goblet
#

tyvm

lament agate
#

im sticking to jokers for now

#

how do you check for a specific boss blind?

#

like for example, this joker only triggers at The Goad

red flower
#

iirc
G.GAME.blind.config.blind.key == "b_key"

lament agate
#

for reference

red flower
#

the localization files

native zinc
#

alternatively game.lua

lament agate
#

in vanillaremade?

#

oh okay

final goblet
#

was money used for the gold color too?

#

i'm willing to bet y'all can guess what im tryna do

#

i just havent coded in a bit

lament agate
red flower
#

==

stiff quiver
#

is there a way to make a joker trigger when a played card is retriggered?

tough temple
#

hey how do i change the mod icon?

faint yacht
#

SMODS.Atlas{key = "modicon", path = "iconfile.png", px = 32, py = 32}

tough temple
#

thanks

#

do i just like

#

but that in the metadata and reference it

#

icon = key goes here

faint yacht
#

...you just initialize the "atlas" for the mod icon and that's it.

#

Should be picked up automatically during initialization.

wintry solar
#

Maybe I should add a retriggered flag for playing cards

#

I’ve seen a lot of people asking how to check it

tough temple
#

its that easy?

faint yacht
#

Something along the lines of context.other_card.first_score?

tough temple
#

is there a way to change stats for the current round?

#

for example

#

2x hands

#

or 2x discards

#

or 2x chips production

#

using consumables

daring fern
tough temple
daring fern
tough temple
#

that’s surprisingly simple

#

for hands i’d assume i just replace “discard” with “hand”?

daring fern
tough temple
#

weird

#

hey is there any documentation on this?

daring fern
tough temple
#

how’d you learn it?

wintry solar
#

You look at the code

tough temple
#

i’m too used to in-depth documentation bruh this is to complicated 😢

wintry solar
#

There are a lot of useful functions like that in the vanilla source code that you just need to find

primal robin
#

Is anyone here who running Balatro on linux?

wintry solar
#

The functions that smods provides have some documentation on the wiki and the lsp definitions in the smods folder

#

But unless you find someone willing to document the vanilla game, you’ll just have to find them yourself or ask questions to learn from other people

tough temple
#

i reckon finding vanilla functions would be easy

#

send wiki link?

lament agate
subtle merlin
fossil lake
#

Hey folks! I might be dumb dumb but I'm having trouble locating any kind of guides/documentation for modding Balatro. I was thinking about seeing if it would be possible to make a mod that removes the rumble sound effect because it's really bass-heavy and sometimes when playing Cryptid it gets locked on for all eternity and it hurts my ears plz

fossil lake
# lament agate the what

The rumble sound that plays when you're about to score over the blind's target, and the flames come up

snow vale
#

how can i create another currency??

fossil lake
#

Yeah that

summer shore
#

i am kinda new to modding,to add a consumeable, do i need to specify the key and the area?

#

SMODS.add_card

rare torrent
#

it says in the api docummentation that defining a gradient to a rarity color is deprecated, is this true? and if so is there any other way of doing it?

summer shore
#

SMODS.add_card({ key = "spritz"}) gives
unable to index center a nil value

#

the card i'm trying to add is a consumeable

#

it shows on collection

red flower
rare torrent
red flower
#

yes

cobalt iron
#

I'm trying to create a gradient but it's all white when I load the game

red flower
#

where are you using the gradient

cobalt iron
#

in a rarity

red flower
#

can i see the code

cobalt iron
#
SMODS.Gradient {
    key = 'testrar',
    colours = {
         HEX("131c5c"),
         HEX("000000"),},
    cycle = 5,
    interpolation = 'trig',
}

SMODS.Rarity ({
   key = 'test',
   loc_txt = { name = 'Testing',},
   badge_colour = G.C.speedx_testrar,
   default_weight = 100,
   pools = {["Joker"] = true},
   get_weight = function(self,weight,object_type)
      return weight
   end,
})
red flower
#

do you define G.C.speedx_testrar somewhere

summer shore
cobalt iron
red flower
#

define, not use

#

it doesn't exist unless you define it

cobalt iron
#

ahah

#

I'm not sure, how do I define it? Can't I just use the key?

red flower
#

G.ARGS.LOC_COLOURS.speedx_testrar should exist

cobalt iron
red flower
#

yes

summer shore
#
consumeable = {
        use = function(self, card, area, copier)
            return {
                message = "+200 Mult!",
                mult = 200,
                card = card
            }
        end
    }

i might be stupid,how can i add mult directly from a tarot

red flower
#

returns like that don't do anything outside calculate

#

it's not very straightforward to add mult outside scoring

summer shore
#

makes sense

cobalt iron
red flower
#

oh yeah it's not defined at the beginning

summer shore
red flower
cobalt iron
#

it works, thanks a lot

zealous mauve
#

got my mod and joker to appear :D

#

ok now how do i unlock the joker for myself

#

nvm got it

copper thorn
#
SMODS.Joker{
    key = "Albert",
    loc_txt = {
        name = "Albert Cosme",
        text = {
            "This Joker retriggers",
            "all {C:red}scoring {C:blue}stone cards"
            "and transforms any {C:red}non-scoring cards"
            "into {C:blue}stone cards"
        }
    },
    atlas = "Albert",
    soul_pos = {x = 0, y = 1},
    rarity = 4,
    pos = { x = 0, y = 0},
    cost = 10,
    unlocked = true,
    discovered = true,
    blueprint_compat = true,
    eternal_comat = true,
    perishable_compat = true,
    config = { extra = { repetitions = 1 } },

    loc_vars = function(self,info_queue,center)
        info_queue[#info_queue+1] = G.P_CENTERS.m_stone
    end,

    calculate = function(self, card, context)
        if context.cardarea == G.play and context.repetition and not context.repetition_only then
            if context.other_card.config.center.key == 'm_stone' then
                return {
                    message = 'Again!',
                    repetitions = card.ability.extra.repetitions,
                    card = context.other_card
                }
            end
        end
    end

    calculate = function(self, card, context)
        if context.before and not card.debuff then
            card.ability.extra.AddChips = 0
            for i=1, #context.full_hand do
                local card_is_scoring = false
                for j=1, #context.scoring_hand do
                    if context.full_hand[i] == context.scoring_hand[j] then
                        card_is_scoring = true
                    end
                end
                if card_is_scoring == false and not context.full_hand[i].debuff and not context.full_hand[i].clown_destroying then
                            context.full_hand[i]:flip();
                           ```
#

context.full_hand[i]:set_ability(G.P_CENTERS.m_stone);
                            context.full_hand[i]:flip();
                end
            end
        end
}
#

help

#

it crashes

#

haven't got nitro i need to make multiple messages sorry

#

iget these crashes evry time and i don't tget why

violet gulch
#

Is that the only code in the file?

copper thorn
zealous mauve
#

is there any way i can spawn a joker in a run?

copper thorn
zealous mauve
#

for testing obviously

#

i have debugplus

daring fern
#

Is there a reason why when I try to use quantum enhancements it lags the game extremely and fills the event queue?

violet gulch
copper thorn
#

it should spawn

zealous mauve
#

it worked

#

thank you!

copper thorn
#

no problem x)

#

:)*

harsh shoal
#

was editing my sprites for some jokers and i started to have this visual bug where theres a 1px from another joker on the soulpos and idk why it happens as the code is correct as well as the image for it

#

its very subtle but still

copper thorn
#

i don't see it

harsh shoal
#

its like a line on the right of the 1st joker

copper thorn
#

oh

harsh shoal
#

yeah in the image doesnt show properly but ingame is very worse

copper thorn
#
soul_pos = {x = 0, y = 1},
pos = { x = 0, y = 0},```
#

should be like that to work

#

or restart the game

harsh shoal
#

thats the thing i already have that

#

and the image proportions are correct

copper thorn
#

put the 1 in y not x

formal parrot
#

I think you have one less pixel in the width of your spritesheet

formal parrot
#

Its supposed to be a 71x N
N being the number of jokers you have

#

All jokers are separated by 2 pixels

copper thorn
#

or like 71*190 for leg if you have one sprite for each joker

formal parrot
harsh shoal
violet gulch
# copper thorn

Couple things. You've got two calculate functions. Need a comma after the end of the first one. Also may need another end after the second one, or that might be the discord two messages. May also need some additional commas in your loc_text['text'] But also, why two calculate functions?

formal parrot
#

Your sprite sheet should look something like this

limber blaze
#

atlas sizes include the border

#

but yeah

#

it should look like that

formal parrot
#

Basically shift every joker one pixel to the right if you have the right width

copper thorn
harsh shoal
#

ok yeah i might be stupid LOL ty now it works

#

😭

#

i didnt notice the sprite was wrong

formal parrot
#

:P

violet gulch
copper thorn
manic rune
#

how do i add my own calculate to an object? 🤔
-# or is it already added

copper thorn
copper thorn
rare torrent
#

anyone know why my booster pack is crashing when i open it?

daring fern
rare torrent
copper thorn
daring fern
violet gulch
manic rune
#

thats useful

spice wadi
manic rune
#

adding a method for people to add their own relics calculate and stuff

zealous mauve
#

uhhh what did i do wrong here

manic rune
#

im literally hard coding my relics rn

zealous mauve
#

i am following a tutorial on youtube

rare torrent
manic rune
hard flume
#

Hiiii

manic rune
#
calculate = function(self,card,context)

end,
spice wadi
manic rune
#

hi carrot

violet gulch
# copper thorn

All your logic with context needs to be within the calculate function

daring fern
zealous mauve
#

ok

spice wadi
manic rune
#

-# which might take a couple of days for me to figure out the optimal approach (and because im lazy)

spice wadi
manic rune
rare torrent
manic rune
#

i think eremel would be happy to help you out
-# then i will ask you about it later :3

daring fern
daring fern
violet gulch
rare torrent
manic rune
daring fern
manic rune
#

:3

copper thorn
copper thorn
manic rune
#

really? it should tell you if you are missing a syntax, end or whatever

#

did you download the one by sumneko

daring fern
violet gulch
hard flume
#

I'm gonna work on my mod todah

rare torrent
copper thorn
manic rune
daring fern
copper thorn
manic rune
#

oh

violet gulch
hard flume
copper thorn
copper thorn
#

i re-searched for it and found it stf

#

wtf*

violet gulch
manic rune
#

-# i didnt ctrl + Z enough, dont mind that "use"

copper thorn
#

quick question how do i make the "cards into" not in C:attention ?

 "This Joker retriggers",
            "all scoring {C:attention}stone cards",
            "and transforms any",
            "{C:attention}non-scoring cards into {C:attention}stone cards"```
manic rune
#

you can use {} to stop {C:attention}

violet gulch
#

"{C:attention}non-scoring{} cards into {C:attention}stone cards{}"

rare torrent
copper thorn
daring fern
cobalt iron
#

how do I create a joker of a custom rarity?

daring fern
manic rune
thorn basin
#

So I applied both changes but now the problem is that the joker upgrades even when the played cards are not faces.
(Sorry for the late response)

wintry solar
manic rune
rare torrent
spice wadi
#

sharing the error would be helpful

cobalt iron
spice wadi
#

also this might be a stupid question but is it possible to have conditional lovely patches?
like i can control whether a patch activates from elsewhere

thorn basin
manic rune
spice wadi
#

😔

rare torrent
spice wadi
#

guess im going to have to write robust code in my patch instead

daring fern
manic rune
#

thats crazy

#

😭

wintry solar
# daring fern

Not 100% sure on why that would be, my initial thoughts are that the deck cardarea is enabled so it’s checking every card in every context, could try adding some area restrictions to see if that improves (I think the problem is worse for wild cards fwiw because they effect poker hand evaluation, but I’d need to do some proper testing)

thorn basin
# manic rune

for some reason, now it doesn't upgrade when 2 different face cards scored.
(By different I mean they can have the same suit but different rank or same rank but different suit)

daring fern
merry raven
#

local new_card = Card(G.hand.T.x, G.hand.T.y - 6, G.CARD_W, G.CARD_H, {[suit value], [rank value]}, enhancement)

I want to create a new card through my Joker with a random enhancement, but what values should I put in [suit value] and [rank value] if I just want a random suit and rank?

If I do something like this:

local suit = pseudorandom_element(SMODS.Suit.obj_buffer, pseudoseed('suit'))
local rank = pseudorandom_element(SMODS.Rank.obj_buffer, pseudoseed('rank'))
local new_card = Card(G.hand.T.x, G.hand.T.y - 5, G.CARD_W, G.CARD_H, {suit=suit, value=rank}, enhancement)

Then if I reload the game with the debug tool by pressing L, the suit and rank will visually disappear

cobalt iron
manic rune
#

did you try adding type = "Joker" in there too?

cobalt iron
manic rune
#

mm, can you show me the code?

thorn basin
manic rune
thorn basin
#

yeah

manic rune
#

:3

#

i dont see whats wrong here

#

oh wait, i see your effect on the comment above now

thorn basin
cobalt iron
#

Don't tell me I have to use an event

manic rune
manic rune
#

and also, set = "Joker" should be inside that table too

cobalt iron
#

oh, okay

#

it works! thank you

burnt apex
manic rune
#

oh, and also, trigger = "after", not trigger = after

merry raven
#

How do you check if a playing card (card in hand, not a Joker) has a sticker

burnt apex
manic rune
rare torrent
#

Is it possible to save the amount of lost run's as variable? and if so how?

wintry solar
burnt apex
burnt apex
thorn basin
manic rune
#

v:get_id() returns the id of the card

#

J is 11, Q is 12, K is 13, A is 14 for instance

thorn basin
#

alright

#

thank you again!

burnt apex
#

I don't know why its ignoring context

merry raven
#

How do I add an effect immediately when a blind starts

calculate = function(self, card, context)
        -- At the start of each blind, apply Catatonic to a random card
        if context.setting_blind then
            -- Find eligible cards (not already Catatonic)
            local eligible = {}
            for _, handCard in ipairs(G.hand.cards) do
                if not handCard.ability.fm_catatonic then
                    table.insert(eligible, handCard)
                end
            end
            if #eligible > 0 then
                local target = eligible[math.random(#eligible)]
                SMODS.calculate_effect({
                    message = "Decimated!",
                    sound = "fm_resonance_fragment",
                    colour = G.C.BLACK
                }, target)
                G.E_MANAGER:add_event(Event({
                    func = function()
                        target:juice_up()
                        SMODS.Stickers.fm_catatonic:apply(target, true)
                        return true
                    end
                }))
            end
        end
...

Even with setting_blind, currently I have to play a hand before this custom sticker gets applied, I want to make it so that the sticker is applied immediately when the blind begins

burnt apex
wintry solar
#

This video doesn’t work on mobile

burnt apex
#

ah

#

the kings/jacks get played, flip, get scored, flip to show queens and then discard

#

it should be play, score, flip, flip, discard

manic rune
#

weird, context.after shouldnt make the animation play before the scoring

burnt apex
#

without the blockable false however they flip while being discarded

burnt apex
manic rune
#

setting blockable to false would make it run regardless of other events that should be run before it

wintry solar
#

Have you tried removing all the blocking things?

#

You generally don’t need them at all

manic rune
#

^

burnt apex
#

i did remove the redundant blocking ones

wintry solar
#

Can you remove them and show the new code?

burnt apex
wintry solar
#

after needs to be a string not a variable

burnt apex
# burnt apex

this though, makes the card flips happen while they are discarded

wintry solar
#

And you need delay = 0.5 in both

wintry solar
#

I also think your ordering is probably not what you intend, this will flip the first card, change it, then flip it back, then repeat for each other card

unkempt rover
burnt apex
#

so they just flip over to show a queen

#

whitch is the behavior when it was missing the second card flip event

manic rune
#

can you try removing the event?

#

🤔

#

and also, i would use pseudorandom_element instead of math.random

#

unless you want your players to be able to reenter the run until that effect hits the card they want

wintry solar
burnt apex
#

it should show the back like death/strength do

#

current code

wintry solar
#

They just instantly flip back over, right?

obtuse silo
#

how would i create the text effect that Misprint has for something with an existing loc_txt?

burnt apex
#

its just super fast

burnt quartz
#

How I can add a seal label from a localization file?

wintry solar
#

Or increase the delay in the second event

burnt apex
#

Ive managed to fix it by just increasing the delay for event 2

#

just need to find the spot where its not too slow now

#

thanks for all the help!

thorn basin
manic rune
#

...i mean, you coded it like that so i just fixed your code

#

🥀

#

yeah sure, one sec

thorn basin
manic rune
# thorn basin forgot to add to the comment the second requirement
local faces = {}
local suits = {}
local passed = false
for i,v in ipairs(context.scoring_hand) do
  if #context.scoring_hand >= 2 then
    if v:is_face() then
      if i >= 2 and not faces[v:get_id()] then passed = true; break end
      if not faces[v:get_id()] then faces[v:get_id()] = true end

      if i >= 2 then
        local unique_suit = true
        for suit,_ in pairs(suits) do
          if v:is_suit(suit) then unique_suit = false; break end
        end
        if unique_suit then passed = true; break end
      end
      if not suits[v.base.suit] then suits[v.base.suit] = true end
    end
  end
end

probably this?

#

-# i apologize for the indentation, i typed it on discord lol

zealous mauve
#

hey can anyone tell me where i can find all of the "codes" (idk what to call them) like the default joker is j_joker

burnt quartz
#

The var label goes into the localization file?

burnt quartz
snow vale
#

what's wrong in here?

zealous mauve
burnt quartz
thorn basin
zealous mauve
#

but thank you

burnt quartz
#

Was that enough?

burnt quartz
#

i mean, what is wrong?

snow vale
#

if i discard 1 face card, it adds 5, if i discard 2, it adds 20, instead of 10, if i discard 1 face card an 1 number card, it adds 10

burnt quartz
#

mmm maybe is validating if atleast one is a face card and then add the number of discarted cards time 5

snow vale
#

hmm

#

not sure

burnt quartz
#

that is the entire calc function?

snow vale
#

the other part is simply the return of joker_main

#

nothing else

daring heron
#

not my mod but how would i make this be able to also copy negative edition?

wintry solar
#

Delete the bit about editions

daring heron
#

do i also replace it with another "nil" or no?

#

nvm i got it

#

thanks 👍

snow vale
#

then how do i fix my error?

echo aurora
#

what effect do you want it to do?

snow vale
#

give mult for every discarded face card

#

this is the code

formal parrot
#

Is incorrect

#

You need the context for discard cards I believe

snow vale
#

G.hand.highlighted?

#

oh

formal parrot
snow vale
#

yeah, but ill discard selected cards

formal parrot
#

Check castle’s code

snow vale
#

also it only bugs if i discard a face card

formal parrot
#

Should be the same

snow vale
#

ok

formal parrot
#

Change the test for suit to face cards and it should work

snow vale
#

ok it works thanks

finite onyx
#

Hello, does anyone know how to stop the sound if it is still playing in the function (if context.end_of_round)

snow vale
#

this was the code :P

#

thought it was somewhat harder

formal parrot
#

I didnt think of other hand

#

Myself

snow vale
#

dw

formal parrot
#

You need to add a trigger for stop i believe

daring heron
#

hmm, this seems to only copy the first 5 joker slots, and not grow exponentially as it should

finite onyx
# formal parrot No idea

mhhh i tried G.SOUND:stop() not work i look into SMODs github sound there no explained how to stop the sound

#

until the sound duration runs out on its own

formal parrot
#

I have no idea honestly i didnt add custom sounds before

finite onyx
#

i see

quiet bear
#

is this the chat for developing mods and community help about them?

snow vale
#

somehow

#

and modding chat is for talking abt your results or talking abt any other mod in general

quiet bear
#

uhh how do you set the edition of a card? Im just starting out at modding

wintry solar
#

card:set_edition('editionkey')

quiet bear
#

is editionkey like m_stone?

#

like it is in other parts of the code?

#

oh oops i meant modification sorry

#

how do

formal parrot
wild escarp
#

How could I create tags based on their position in the collection? Trying to kind of make ace equilibrium from cryptid for tags.

wintry solar
#

an enhancement would be card:set_ability('key')

quiet bear
#

oh, thank you.

snow vale
#

wait nvm

quiet bear
#

it is supposed to be ('gold') ?

wild escarp
#

You'll want to use'm_gold'

quiet bear
#

thanks.

formal parrot
#

m_ for enhancement

#

e_

#

for editions

snow vale
#

how can i add myself chips without going through scoring process?

manic rune
#

change G.GAME.chips

snow vale
#

ok

formal parrot
#

AHHHHHHHHHHHH

quiet bear
#

did you know, when you replace a joker's enhancement, it just turns into that card?

#

news to me

snow vale
#

that card

quiet bear
#

?

snow vale
#

i mean

quiet bear
#

oh i see

#

yeah

floral narwhal
#

Hi

quiet bear
#

where are the values for the 'poll_edition' variables stored?

floral narwhal
#

did you remmember that "black market" i wanted to add? now im in trouble with it :when i click on next in shop it goes to select blind and do nothing

nova finch
#

how would I make a joker name that would randomly switch between a set of names?

spice wadi
floral narwhal
#

i was searching on internet i dont rememmber where was it

spice wadi
#

if you ever find it again lmk

#

if you remember ofc

floral narwhal
#

Sure! im searching for it

#

ah... i asked where is Lovely.Hooks.on from gpt but it said:it not used officially in anywhere!

thorn furnace
#

bump

exotic imp
#

why does this loop after each round and not based off number of jokers?

gilded blaze
#

for some damn reason context.individual fails to work here

#

like wtf

#

it's not even printing anything

quiet bear
#

hey i'm quite new at lua, how do variables work? i can see that 'self' is used when adressing an item but I dont really know how to use them. i want to turn self.ability.name into a list...

gilded blaze
#

take a look at smods API

GitHub

A Balatro Modding Framework. Contribute to Steamodded/smods development by creating an account on GitHub.

quiet bear
#

ok

gilded blaze
#

also why would you want self.ability.name to be a list
it stores the object name (or key if not specified) for convenient use in English when you want to refer to it, although it's not recommended

mossy helm
#

good day good people!
How exactly do you make a starting deck? I couldn't find info about it in the API documentation that wasn't outdated

gilded blaze
#

doesn't look outdated to me

#

you can still take a look at it, as well as some other mods that add decks

mossy helm
#

thank you guys!

red flower
gilded blaze
exotic imp
# red flower can you elaborate?

I want it to increase by 1 hand size for each joker that has anime = true in config and yet it retriggers each round and increases at the end of each round instead of just when a new joker is addes with that config

summer shore
#

how can i add mult when a consumeable is used?

red flower
summer shore
#

a tarot has the calculate() function but it doesn't add the mult

gilded blaze
#

💀

red flower
gilded blaze
#

I love it when my brain cells confuse context.cardarea with context.area

spice wadi
gilded blaze
spice wadi
#

like what is the goal

exotic imp
modern kindle
#

Good schmorning chat

red flower
#

hii

modern kindle
#

How's my goat N

red flower
#

😷

modern kindle
#

Still sickly

#

Sadness

#

I must cure you

red flower
#

that sounds scary

modern kindle
#

A cure can sometimes be scary..but necessary

nova eagle
#

Is it possible to create a joker, and then destroy that same joker at the end of the round without using perishable debuffs?

summer shore
#
    key = 'spritz',
    set = 'Tarot',
    loc_txt = {
        name = 'Spritz',
        text = {
            "Add {C:mult}+100{} Mult to your score"
        }
    },
    rarity = 1,
    cost = 10,
    atlas = 'spritzAtlas',
    pos = { x = 0, y = 0 },
    consumeable = true,
    use = function (self, card, area, copier)
        --add 100 mult to current hand
    end,
    can_use = function(self, card)
        return true
    end
}```
gilded blaze
#

you mean it's a one-time thing?

#

use and give +100 mult to next hand

summer shore
#

yeah

pulsar furnace
#

Can you add shaders to a deck?

summer shore
#

idk if it is possible

gilded blaze
chrome widget
#

Hi dilly!!!

summer shore
#

does the game have a var for mult that i can change?

modern kindle
#

how are you bestie

chrome widget
#

workin' on blinds, packing for a flight

modern kindle
#

ooo vacation time

#

what region you goin to

chrome widget
#

Denver

modern kindle
#

hell yea, colorado is suppose to be very pretty

chrome widget
#

girlfriend in Denverish so Im going to visit for a couple weeks

modern kindle
#

hell yea
i hope its a wonderful time

stiff quiver
#

how can i change a cards soul_pos value? i did this but it isnt updating unless i leave the run lua if card.ability.extra.mult > 0 and card.ability.extra.mult <= 15 then card.config.center.soul_pos = {x = 1, y = 2} end

mossy helm
#

hey so, just to make sure, this is how I would do if I wanted my deck to start with a joker right?

#

thanks in advance

burnt quartz
#

The label must be defined in the localization file?

nova finch
mossy helm
red flower
mossy helm
#

inside the jokers brackets?

red flower
#

yes

mossy helm
#

alright, thank you!

#

wooooo!

#

wait, I kinda wanna make the joker eternal, any way I could do that?

shell timber
#

look at blasphemous deck morefluff

mossy helm
#

is that from a mod? Which one?

red flower
#

morefluff

mossy helm
#

ah

fallow condor
#

How do I remove the space between NkY?

red flower
#

it's a vanilla bug, it should be fixed in latest smods

wild escarp
#

What can I all do with add_tag? Anything besides just giving a tag based on its key?

copper thorn
#

what syntax error have i made ?! why is it marked as red

gilded blaze
#

show the full calculate()

copper thorn
#
calculate = function(self,card,context)
        
        if context.before and #context.scoring_hand == 3 then
            card.ability.extra.xmult = card.ability.extra.xmult + card.ability.extra.xmult_gain
            return { 
                message = localize('k_upgrade_ex') 
            }
        end
        if context.joker_main then
            return {
                   
                card = card,
                Xmult_mod = card.ability.extra.xmult,
                message = "X" .. card.ability.extra.xmult,
                colour = G.C.MULT,
            }
        end
    end
    if card_is_scoring == false and not context.full_hand[i].debuff and not context.full_hand[i].clown_destroying then
                            context.full_hand[i]:flip();
                            context.full_hand[i]:set_ability(G.P_CENTERS.m_stone);
                            context.full_hand[i]:flip();
    
    
        in_pool = function(self,wawa,wawa2)
        return true
    end```
nova finch
chrome widget
#

So I'm trying to replace the chips text with a different dynatext object, but for some reason it hangs up here until I select something

#

How can I force it it to update/recalculate the first time?

#

Nvm I got it. I'm very smart

copper thorn
copper thorn
red flower
nova finch
#

i need to test tho

wild escarp
#

How can I have a joker give the tags in order, two at a time when the blind is selected?

stiff quiver
#

how can i update the art for a joker? I want to change its soul_pos in calculation but it only upates after going to the main menu

gilded blaze
#

therefore can't suggest a way to fix all syntax errors

copper thorn
stiff quiver
# copper thorn wdym ?

if the joker has mult between 0 and 15 i want it to replace its soul_pos with another lua if card.ability.extra.mult > 0 and card.ability.extra.mult <= 15 then card.config.center.soul_pos = {x = 1, y = 2} -- previously soul_pos = nil end

faint yacht
#

card.children.floating_sprite:set_sprite_pos({x = 1, y = 2})

thorn furnace
#

How would I go about making a window pop up on screen above everything else when the game starts?

stiff quiver
gilded blaze
#

and switch context.cardarea check to "unscored" where applicable

copper thorn
#

i don't think it answers my question

faint yacht
nova finch
#

the horses are plentiful

snow vale
#

how can i make a joker add +1 joker slot while you have it? It's not an edition, just a joker

red flower
summer shore
#

i was trying to make a Tarot that added mult to your score and ended up making a consumeable that when used, it stores 100 mult on a custom joker.
The mult is consumed when an hand is played.

gilded blaze
red flower
#

yes

gilded blaze
#

nice

pulsar furnace
#

someone help me how do i give parameters to the :draw_shader()?

spice wadi
#

if im using G.FUNCS.overlay_menu, how can i either queue multiple menus or detect when one has been closed? do i need to hook G.FUNCS.exit_overlay_menu or is there a better way

stiff quiver
copper thorn
# snow vale bump
config = { extra = {jokerslots = 1}},

    loc_vars = function(self, info_queue, center)
    add_to_deck = function(self, card, from_debuff)
        G.jokers.config.card_limit = G.jokers.config.card_limit + card.ability.extra.jokerslots
    end,

    remove_from_deck = function(self, card, from_debuff)
        G.jokers.config.card_limit = G.jokers.config.card_limit - card.ability.extra.jokerslots
    end,```

i think
exotic imp
#

what config do I need to set all everything negative?

snow vale
#

wait why's my game hard crashing?

copper thorn
snow vale
#

it's a hard crash

copper thorn
#

oh sorry

snow vale
#

there's no screen

copper thorn
#

read it wrong

wild escarp
#

How can I add tags based on their position in the collection?

snow vale
#

it happens when i try to unlock using debugger my 2 newest added cards

pulsar furnace
#

oops

copper thorn
snow vale
#

what could be wrong here

#

i hate these kinds of crashes

copper thorn
#

quick question, can't I get the name to be bigger ?

snow vale
#

{S:2}

#

or any number above 1

copper thorn
faint yacht
red flower
copper thorn
copper thorn
snow vale
#

I GOT SOME INFO

#

YES

red flower
snow vale
#

now what's the error

red flower
snow vale
#

wait where?

red flower
#

idk

#

what's the code

copper thorn
snow vale
red flower
copper thorn
red flower
snow vale
#

ill see

copper thorn
#

it did ot register the second half but i find it somechat funnier

snow vale
#

😭

red flower
stiff quiver
rare torrent
#

does anybody know why my booster pack is crashing when openning it?

empty sedge
#

do you guys know if its possible to make a joker that makes all chips turn to mult

copper thorn
#
loc_vars = function(self, info_queue, card)
        return {vars = {card.ability.extra.xmult}}
    end,
    calculate = function(self,card,context)

        
        if context.before and #context.scoring_hand == 1 then
            card.ability.extra.xmult = card.ability.extra.xmult + card.ability.extra.xmult_gain
            return {
                message = localize('k_upgrade_ex')
            }
        end
        if context.joker_main then
            return {

                card = card,
                Xmult_mod = card.ability.extra.xmult,
                message = "X" .. card.ability.extra.xmult,
                colour = G.C.MULT
            }
                 end
                 
                if card_is_scoring == false and not context.full_hand[i].debuff and not context.full_hand[i].clown_destroying then
                            context.full_hand[i]:flip();
                            context.full_hand[i]:set_ability(G.P_CENTERS.m_stone);
                            context.full_hand[i]:flip();

            }
        end
    end
}```

in VSC wiht my lua extension, my very last "}" is marked as red and i don't know how to fix it
copper thorn
thorn furnace
#

How do I access metadata from a mod's json file

daring fern
thorn furnace
burnt apex
#

How do i have text get updated when oops! all sixes is present? Like with vanila jokers that have chances

thorn furnace
daring fern
copper thorn
#

i need help, my card is supposed to turn non-scoring cards into stone card, but it doesn't (andit also get x0.2 every time a hand contains one card but that's not the subject this part works just fine)

config = { extra = {
        xmult = 1,
        xmult_gain = 0.2
    }
    },
    loc_vars = function(self, info_queue, card)
        return {vars = {card.ability.extra.xmult}}
    end,
    calculate = function(self,card,context)

        
        if context.before and #context.scoring_hand == 1 then
            card.ability.extra.xmult = card.ability.extra.xmult + card.ability.extra.xmult_gain
            return {
                message = localize('k_upgrade_ex')
            }
        end
        if context.joker_main then
            return {

                card = card,
                Xmult_mod = card.ability.extra.xmult,
                message = "X" .. card.ability.extra.xmult,
                colour = G.C.MULT
            }
                 end
                if context.before and not card.debuff then
            card.ability.extra.AddChips = 0
            for i=1, #context.full_hand do
                local card_is_scoring = false
                for j=1, #context.scoring_hand do
                    if context.full_hand[i] == context.scoring_hand[j] then
                        card_is_scoring = true
                    end
                end 
                if card_is_scoring == false and not context.full_hand[i].debuff and not context.full_hand[i].clown_destroying then
                     
                            context.full_hand[i]:flip();
                            context.full_hand[i]:set_ability(G.P_CENTERS.m_stone);
                            context.full_hand[i]:flip();
                     
                
             end
            end
         end
      end```
fathom valve
#

Can someone help me format a lovely patch to replace things? I think I did it wrong and midunderstood the instructions

burnt apex
daring fern
gaunt thistle
#

regex being one of them, or making your changes at runtime in lua instead of as a patch

fathom valve
gaunt thistle
#

are you using smods?

fathom valve
#

I have smods and lovely?

gaunt thistle
#

but are you using smods to develop your mod?

fathom valve
#

I'm using notepad ++ and winging it

gaunt thistle
#

ah

#

well props for going about it the hard way haha

fathom valve
#

DLASKFHLSADKHF thats the hard way???

gaunt thistle
#

if you're committed to doing everything with lovely then do what I recommended

#

either switch over to regex, find some other way to simplify your patterns / patches, or change the necessary values at runtime

gaunt thistle
#

pure lovely is a lot more difficult in terms of complexity and also compat with other mods

fathom valve
#

It's just changing base values of cards/packs/tarots/etc\

gaunt thistle
#

and you'll be having a lot of compatibility issues with the amount of "at" patches you have

burnt apex
daring fern
# copper thorn bump
if context.individual and context.cardarea == "unscored" then
    context.other_card:set_ability("m_stone")
end
```?
daring fern
copper thorn
#
config = { extra = {
        xmult = 1,
        xmult_gain = 0.2
    }
    },
    loc_vars = function(self, info_queue, card)
        return {vars = {card.ability.extra.xmult}}
    end,
    calculate = function(self,card,context)

        
        if context.before and #context.scoring_hand == 1 then
            card.ability.extra.xmult = card.ability.extra.xmult + card.ability.extra.xmult_gain
            return {
                message = localize('k_upgrade_ex')
            }
        end
        if context.joker_main then
            return {

                card = card,
                Xmult_mod = card.ability.extra.xmult,
                message = "X" .. card.ability.extra.xmult,
                colour = G.C.MULT
            }
                 end
                if context.before and not card.debuff then
            card.ability.extra.AddChips = 0
            for i=1, #context.full_hand do
                local card_is_scoring = false
                for j=1, #context.scoring_hand do
                    if context.full_hand[i] == context.scoring_hand[j] then
                        card_is_scoring = true
                    end
                end 
                if context.individual and context.cardarea == "unscored" then
    context.other_card:set_ability("m_stone")
end
                     
                
             end
            end
         end
    

}

SMODS.current_mod.optional_features = {
    cardareas = {
        unscored = true,
    },
}```
burnt apex
#

Ok, last thing and then my joker is fully functional, how do i make it actually not compatible with blueprint?

daring fern
burnt apex
daring fern
burnt apex
#

ah ok

copper thorn
#

like this ?

daring fern
copper thorn
#

now it works but doesn't do the flip animation

daring fern
copper thorn
#

ima try something

#

if it doesn't work i'll keep your solution, thanks for it !

hidden notch
#

How do I get the localised Edition for my Description?
-# For Context: The Edition Changes every round

daring fern
copper thorn
#

but i'll see if i can fix it tomorrow ima go eepy sleepy now

hidden notch
#

Thank you!! You are truly the greatest 🙏

daring fern
#

How does one change what the suit says on a playing card?

#

For example Ace of Hearts/Spades/Clubs?

tall jewel
#

How would I get a random value tied to the run's random state?

#

if it exists

#

if not dw

daring fern
tall jewel
#

like, predictable pack opening

#

where reset won't change it

daring fern
tall jewel
#

moreso trying to get predictable random values tied to the seed of the run

#

I don't want to roll my own random implementation just for what im trying to do

daring fern
hidden notch
tall jewel
#

Well, seperate question, how would I create_card using a custom pool where all elements of the pool have omit = true

#

every method I've tried has resulted in the default value sigh

#

SMODS.ObjectType {
    key="FishingRods",
    rarities={
        {
            key='Common',
            rate=0.7,
        },
        {
            key='Uncommon',
            rate=0.4,
        },
        {
            key='Rare',
            rate=0.05,
        },
        {
            key='Legendary',
            rate=0.0005,
        },
    },
}

FishingMod.FishingRod = SMODS.Joker:extend{
    omit = true,
    can_sell = true,
    pools = { ["FishingRods"] = true, FishingPack=true, Joker=false},
...
#

when using create_card("FishingRods", ...) it always results in the default value

snow vale
tall jewel
#

screw it im setting it to a new set type

tough temple
#

how can i halve the minimum score for the round?

#

using a consumable

worthy stirrup
#

Does anyone have any idea how I could have this still change in the collection?

    update = function(self, card, dt)
        -- Store animation state in self
        self._counter = self._counter or 0
        self._timer = (self._timer or 0) + dt

        -- Update animation every 0.05 seconds
        if self._timer >= 0.5 then
            self._timer = self._timer - 0.5
            self._counter = (self._counter + 1) % 8
            self.pos.x = self._counter -- Update self's position directly
        end
    end
}
daring fern
daring fern
tough temple
worthy stirrup
#

i always forget, how do you hook to that?

daring fern
tough temple
#

thanks man

daring fern
worthy stirrup
#

oh

#

thank you

red flower
snow vale
#

wait do i need to do so?

#

cuz i dont

red flower
#

no it's the opposite

snow vale
#

oh

#

then i didnt

#

but i did have the dark fountain inside the dark fountain

#

somehow

red flower
#

oh ok

snow vale
#

oh it works now

faint yacht
worthy stirrup
daring fern
worthy stirrup
#

okay, just wanted to check, thanks

snow vale
#

how can i make a joker unsellable?

worthy stirrup
daring fern
daring fern
worthy stirrup
daring fern
worthy stirrup
#

oh, oops

tribal umbra
#

hey

#

how do you make a texture pack

snow vale
daring fern
# snow vale i still dont know how to hook something 😔 i dont understand how it works
Klei Entertainment Forums

In LUA, it is a very important concept to understand that everything is a variable and all variables may be edited in runtime. This includes functions. With modding other peoples' LUA files, like Klei's basegame code, you may find yourself wanting to run your code before or after the original fun...

worthy stirrup
#

sorry for all the questions, how do i now have this like, adapted for my code?"

        -- Store animation state in self
        self._counter = self._counter or 0
        self._timer = (self._timer or 0) + dt

        -- Update animation every 0.05 seconds
        if self._timer >= 0.5 then
            self._timer = self._timer - 0.5
            self._counter = (self._counter + 1) % 8
            self.pos.x = self._counter -- Update self's position directly
        end
    end
#

ive got the hook in my code, outside of the jokers but dont know what to do with them

worthy stirrup
#

Ill look into it, thanks

tribal umbra
daring fern
#

Don't do that.

gaunt thistle
#

and you can't redistribute your changes

#

so use malverk

worthy stirrup
#

Double Checking, if im calling for my own joker, would i call for j_prefix_key?

worthy stirrup
#

Thank you

tribal umbra
#

not even by verifying gamefiles?

gaunt thistle
#

no like you can't share your changes with other people

snow vale
gaunt thistle
#

you can uninstall it by verifying your game files

daring fern
daring fern
snow vale
#

i think i now understand how hooking works

#

ty

tight notch
#

im trying to make a joker that makes cards played this ante give +10 mult when scored, but for some reason it triggeres on every card

quiet bear
#

if i have a list, how would i check if a specific item is in it? would this work?

i = 1,100
list = {'item', 'item', 'item'}
variable1 = list[i]
if variable2 == variable1 then
do the thing
end

daring fern
snow vale
quiet bear
#

thank you both!

daring fern
snow vale
#

thank somethingcom, he gave me that code lmao

hasty mist
#

why does fmult not trigger?

daring fern
#

SMODS.calculate_effect is just a return function but it doesn't return.

#

Also you should just do return {fmult = number}

snow vale
#

what context do i use if i want something to happen when i play hand?

daring fern
snow vale
#

when you press play

#

mainly, when hands are used

daring fern
snow vale
#

ok

pulsar furnace
#

How do I add another tab in collections?

hidden sable
#

how can i change the titles texture using a mod

daring fern
pulsar furnace
daring fern
daring fern
hidden sable
daring fern
hidden sable
#

any chance you know the pixel dimensions of the texture

hidden sable
#

one final question, where can i find the raw texture for the title

#

so i can edit it

daring fern
hidden sable
#

thanks

pulsar furnace
#

im trying to make a new collection tab, it crashes when selecting collection > other

worthy stirrup
#

How would i do this better? Im trying to change each card that was discarded individually

    calculate = function(self, card, context)
        if context.pre_discard then
            print("Test")
            full_hand = G.hand.highlighted
            for i in #full_hand do
                local other_card = full_hand[i]
                print(other_card)
            end
        end
    end,
wild escarp
#

Could someone help me out with this joker? I'm trying to (kind of) make ace equilibrium for cryptid, except it creates tags on blind selection and gets destroyed after the last one. Trying to implement cryptid code is a nightmare though, and I've got this, which does nothing. Anyone smarter than me willing to help?

daring fern
worthy stirrup
#

Thank you

#

the game freezes when I discard 5 cards, how could i prevent this?

#

nvm

thorn furnace
#

Experiencing a bit of a weird crash messing with UI stuff
(Image 1 is the error, images 2 and 3 are the code snippet)
It's only my second time trying to do UI stuff so I probably messed something up somewhere but the error is particularly unhelpful it seems

red flower
#

can you send more of the error

daring fern
# thorn furnace

I think func should be a string of the G.FUNCS[functionname] not a function.

thorn furnace
#

oh

worthy stirrup
#

How would i change the cards Edition?

        if context.discard then
            print("Test")
            full_hand = context.full_hand
            for i=1, #context.full_hand do
                context.other_card = full_hand[i]
                other_card = context.other_card
                other_card.edition = poll_edition('aura', nil, true, true)
            end
        end
thorn furnace
red flower
worthy stirrup
#

ohh

thorn furnace
burnt apex
#

How would I have a joker always sell for 0, but still cost 2?

daring fern
burnt apex
#

How do i do hooks?

daring fern
worthy stirrup
#

to change the suit, is it card.suit = "Spades"

red flower
#

SMODS.change_base

worthy stirrup
#

oh

#

i didnt know they had that

daring fern
red flower
thorn furnace
#

wha
nothing is even called there

worthy stirrup
#

How do i set a cards enhacement?

thorn furnace
worthy stirrup
#

ohh

#
    calculate = function(self, card, context)
        if context.discard then
            print("Test")
            full_hand = context.full_hand
            for i=1, #context.full_hand do
                context.other_card = full_hand[i]
                other_card = context.other_card
                other_card:set_edition(poll_edition('Jevil', nil, true, true))
                other_card:set_seal(SMODS.poll_seal('Jevil', nil, true, true))
                other_card:set_ability(SMODS.poll_enhancement('Jevil', nil, true, true))
                SMODS.change_base(other_card, "Spades")
            end
        end
    end,
#

It doesnt crash every time but only occasionally

daring fern
#

Aswell as SMODS.poll_seal

worthy stirrup
#

wait sorry, what should i be giving it, in the wiki it says it defaults to all avalible enhacments and seals

daring fern
vast night
#

hey quick q. to set a generated tarot to wheel of fortune do i need to do _card:set_ability('t_wheel_of_fortune')?

daring fern
daring fern
worthy stirrup
#

so wait, would i just slap in {} for it then?

#
                other_card:set_ability(SMODS.poll_enhancement({'Jevil', nil, true, true}))
daring fern
worthy stirrup
#

ohh

#

thank you so much for your time, i know im probably being annoying

harsh raft
#

Anyone know the code name for the hierophant I'm getting this error
INFO - [G] Error: Center not found for c_hierophant

red flower
#

i think the original has a typo i'd recommend ctrl+f-ing the localization files

harsh raft
#

ok thx

daring fern
#

Is there a way to stop rescoring from causing an infinite loop?

formal parrot
#

So chat

#

I used draw step to draw shaders on all my cards and now i wanna remove them

#

How

red flower
#

add an if condition to the step

formal parrot
#

How ?

#

I remove the whole function and they still have the shader lmao

red flower
exotic imp
#

what config do I need to set everything negative?

daring fern
thorn furnace
daring fern
thorn furnace
#

O

exotic imp
#

what config do I need to set all jokers to negative?

daring fern
exotic imp
daring fern
exotic imp
daring fern
wild escarp
#

How would I make a joker add a joker with a sticker and edition?

daring fern
daring fern
# exotic imp oh

Something like: ```lua
local oldcreatecard = create_card
function create_card(_type, area, legendary, _rarity, skip_materialize, soulable, forced_key, key_append)
local g = oldcreatecard(_type, area, legendary, _rarity, skip_materialize, soulable, forced_key, key_append)
g:set_edition("e_negative", true, true)
return g
end

rugged pier
#
if context.setting_blind then
            card_params = {
              key = "j_artb_mitosis",
              set = "Joker",
              area = G.jokers,
              edition = "e_negative"
            }
            SMODS.create_card(card_params)
        end 

what am i doing wrong here

#

its creating the card but its

#

not doing anything

#

its not activating

maiden phoenix
#

replace create_card by add_card

rugged pier
#

tysm

#

what is create card for then?

maiden phoenix
#

If you want to do things to it before adding it

#

for some reasons 🤷

rugged pier
#

interesting lol

maiden phoenix
#

add_card uses create_card itself so maybe thats why

red flower
#

i use create_card sometimes for UI stuff

rugged pier
#

game just crashes

maiden phoenix
#

isn't fake_card a thing?

rugged pier
#

like no crash log

#

just "not responding"

#
if context.setting_blind then
            card_params = {
              key = "j_artb_mitosis",
              set = "Joker",
              area = G.jokers,
              edition = "e_negative"
            }
            SMODS.add_card(card_params)
        end 
red flower
#

is it adding itself

rugged pier
#

yes

red flower
#

well,

rugged pier
#

oh so

#

every joker its creating

#

is adding itself

red flower
#

yes

rugged pier
#

oh boy

#

i have a hacky fix for this

red flower
#

just add a flag to the card

rugged pier
#

that wouldnt help right, because those new jokers would still run it

red flower
#
if context.setting_blind then
  if not card.added_by_mitosis then
    local other_card = SMODS.add_card(...)
    other_card.added_by_mitosis = true
  end
  card.added_by_mitosis = nil
end 
#

like that i mean

rugged pier
#

hmm i see, let me try that

#

thank you

daring fern
#

I have solved this issue by doing multiple seals a different way, I still do not know what was causing this.

signal lotus
#

@pure salmon this doesnt work with blueprint why

pure salmon
#

unsure, haven't tested all my jokers with blueprint

pulsar furnace
#

I'm trying to create a collections tab but it crashes, I have no idea what's wrong

formal parrot
#

You have a nil node

short girder
#

little bit embarrassing lmao but how would i make a deck give mult during main eval

faint yacht
#

Decks can have calculate too.

short girder
#

oh shit fr?

#

thanks you

pulsar furnace
#

is there any template for collection ui?