#💻・modding-dev

1 messages · Page 608 of 1

harsh belfry
#

you may have deleted too much

red flower
#

if you turn a playing card negative it should not have the shader now but you also removed the non-editioned sprite

#

that's the incorrect drawstep anyway

rigid pebble
#

have you ever heard of a lovely patch? Maybe you could just lovely patch it out

true jasper
rigid pebble
#

have you ever heard of a lovely patch? Maybe you could just lovely patch it out

#

kel is crashing out in vc lol

#

(in coldbean server)

queen meadow
#

💔🥀

fluid steppe
#

why is SMODS.scale_card not on the SMODS wiki

#

now i have to recode all my scaling jokers to use SMODS.scale_card just so they work with cryptid's scalae

#

:(

#

can someone that knows how it works pull request smods to add a wiki entry for SMODS.scale_card in. idk, utility functions

#

im going to bed i havent slept for >36 hours

red flower
#

mostly because no one can be bothered to update the wiki :3

red flower
#

also you can just put the couple of lines you want to edit instead of the entire thing that's bad practice

queen meadow
red flower
#

you might need to remove the center and the front? idk

rigid pebble
red flower
#

nah that's just something i say

timid zinc
#

what atlas do vanilla decks use?

daring fern
timid zinc
#

so:

#
        key = { 
            mod = false
        },
        atlas = false,
    },
    atlas = 'centers',```
red flower
#

if you omit the atlas in SMODS.Back it will just use the default

timid zinc
#

yeah but i'm trying to use the backs atlas for a different object type

red flower
#

that should work then yeah

timid zinc
#

i removed atlas = false

#

thank you

vernal seal
#

ok i maneged to fix it by myself

obsidian spear
#

does anyone have an answer for this

#

it sounds hard but would create a great mod

daring fern
obsidian spear
#

yea

stoic void
#

I dont think i can code :P

primal robin
stoic void
#

HEY! >:(

#

i know i suk :(

#

I think i got it right this time

next timber
#

I've seen that jokers have an ID assigned to them, is this ID always unique? can i use it to tell between jokers without any danger of a conflict?

daring fern
next timber
#

what's the difference?

daring fern
next timber
#

ah ok

plucky berry
#

how do you replace the main joker on the win/lose screens

rigid solar
#

If I run find_joker() in the remove_from_deck() part of a joker, can it find itself? Like I have a Joker named X and i run find_joker("X") in its remove_from_deck() function while it's the only one I had, does it find 0 or 1 joker? I'd test but rn I can't

rigid solar
#

Nah on the contrary I want it to not find itself, so that's great aha

#

thx

stoic void
#

I don get it :(

daring fern
#

But you should be using SMODS.find_card

rigid solar
#

🤔 why

#

what's the diff

daring fern
daring fern
stoic void
#

It crashes when i hover over it

daring fern
stoic void
#

Ill go find it

#

here

wheat rapids
#

Guys how do I make a joker spawn in my Joker slots?

red flower
solid salmon
#

how do i update my steammodded

#

nevermind found it

maiden phoenix
#

More wip

tiny sparrow
#

Guys, I'm new here and building mods, so, I need help with the custom rarities bc they're not working well and I don't know what the error is

umbral spire
#

also can I see your joker code?

tiny sparrow
umbral spire
#

do you get a crash?

umbral spire
tiny sparrow
#

No, just that the rarity doesn't shows in game

#

But it works

umbral spire
#

Fm1 is your mod prefix?

tiny sparrow
#

Yes

umbral spire
umbral spire
tiny sparrow
#

No, i'm going to add it later cuz i'm busy rn

umbral spire
#

Well that should fix it.

tiny sparrow
#

Okay, when I add it I'm gonna tell if it works

#

Thanks

umbral spire
#

Alr.

long sun
#

what would be the best way for a Joker to cap the score to 1 point below the score requirements?

#

failing that, i could patch the game to not progress until my Joker wants it to

#

(actually maybe i'll do that instead)

#

(nevermind)

faint yacht
#

...doesn't AikoShen have a deck that does not end the round automatically, but gives you an "End" button for it instead?

long sun
#

i'm pretty sure, ya

final jewel
#

if SMODS.pseudorandom_probability(card, 'giga_snapchatGirl', card.ability.extra.odds, card.ability.extra.chances, 'scg_prob') then
Why does it alway triggers on the first time of the run

faint yacht
#

...probably seed says so.

final jewel
#

yeah but is putting the date_time make it more random

faint yacht
#

@tall wharf 🫲

final jewel
#
if #G.jokers.cards > 1 then
    G.jokers:shuffle('ok')
    delay(0.5)
end

And why does that just put the Joker in alphabetical order

long sun
#

have you tried wrapping pseudoseed() around your seed?

final jewel
long sun
#

i see it a lot in random calls, so i assume u need it

final jewel
#

do I just write pseudoseed() and it does its thing

long sun
#

you need to wrap that around your seed

final jewel
#

ok like

long sun
#

so pseudoseed('ok')

final jewel
#

oh ok

#

nice I'll do that

tepid crow
daring fern
long sun
#

ah i see

daring fern
long sun
#

oh ic

tall wharf
faint yacht
tall wharf
#

no?

maiden phoenix
tepid crow
#

thank you 😌

median rose
#

I'm looking through vanilla remake to see how chances work, and I noticed the string vremade_bloodstone within bloodstone. What's its purpose, Do I need to worry about that all for what I want my joker to do? My joker description "1 in 900 chance for +300 mult"
this is bloodstone code

loc_vars = function(self, info_queue, card)
        local numerator, denominator = SMODS.get_probability_vars(card, 1, card.ability.extra.odds, 'vremade_bloodstone')
        return { vars = { numerator, denominator, card.ability.extra.Xmult } }
    end,
    calculate = function(self, card, context)
        if context.individual and context.cardarea == G.play and context.other_card:is_suit("Hearts") and
            SMODS.pseudorandom_probability(card, 'vremade_bloodstone', 1, card.ability.extra.odds) then
            return {
                xmult = card.ability.extra.Xmult
            }
        end
    end,

This is my code

loc_vars = function(self, info_queue, card)
        local numerator, denominator = SMODS.get_probability_vars(card, G.GAME.probabilities.normal, card.ability.extra.odds)
        return { vars = { numerator, denominator, card.ability.extra.mult } }
    end,
    calculate = function(self, card, context)
        if context.joker_main then
            SMODS.pseudorandom_probability(card, "", )
            return {
                mult = card.ability.extra.mult
            }
        end
    end
tepid crow
#

You're misreading the code btw (which tbf is arguably badly formatted)

it's

        if context.individual and context.cardarea == G.play and context.other_card:is_suit("Hearts") and  -- notice the AND here
            SMODS.pseudorandom_probability(card, 'vremade_bloodstone', 1, card.ability.extra.odds) then    -- and the THEN here

not

        if context.joker_main then
            SMODS.pseudorandom_probability(card, "", )
maiden phoenix
tepid crow
#

I'm trying to find the docs for smods' pseudorandom stuff but can't 🙄

gilded goblet
maiden phoenix
#

Check the release logs

#

Yea that

tepid crow
#

there ya go ^

gilded goblet
tepid crow
#

oh yeah don't do that

median rose
#

don't do that, or I don't need to do that?

tepid crow
#

don't use G.GAME.probabilities.normal, use the smods probability functions

dapper sun
#

i'm having a bug regarding jokers with additional data/behaviour outside of calculate not being changed when the card's ability changes

#

should i put that data somewhere else (instead at the root of the joker) or should i patch in handling for it?

#

like,, putting it in config

gilded goblet
dapper sun
gilded goblet
final jewel
#

why does my mod look like that

bold sleet
#

SMODS metadata file

final jewel
#

cause in my computer it looks fine

bold sleet
dapper sun
dapper sun
#

😭

willow scroll
#

im checking out scoring parameters, copying the juice example as stated, but then running SMODS.set_scoring_calculation('[modprefix]_juice') causes this crash, anyone know why?

dapper sun
#

show code

willow scroll
#

its the example juice code from the 827c announcement

dapper sun
#

okay but can i see it in your code

#

idk the example code

willow scroll
#

its too long to copy paste into a single message

#

ah i may be smart

dapper sun
#

oh idk anything about this sorry

willow scroll
#

goddamnit

#

"you can copy this code"
replace_ui proceeds to have a couple of hardcoded modprefixes

#

foiled again by not inspecting the code closely

#

does the scoring calculation type reset after every round?

median rose
#

is there an easier way to test the trigger effects besides making the numerator bigger for debug testing? This is 1 in 900

median rose
#

facepalm

gilded goblet
#

btw u can just hover over a card and press ctrl c to duplicate it

#

it ignores limits

gilded goblet
median rose
gilded goblet
#

ctrl + r to delete them so you dont have to sell them (takes time)

umbral spire
#

how can i load every .ogg in /sounds/ ?
instead of 50 SMODS.Sound{} usages

tepid crow
#

you could probably just iterate over the filenames

umbral spire
#

ah

tepid crow
#

similar to how some mods automatically load all lua files in a specific directory

slim ferry
#

i love NFS.getdirectorydata ❤️

rocky plaza
#

i love NFS.getDirectoryItems so much i made a recursive file loading function using it

daring fern
faint yacht
#

...all I do with NFS is have it load and play an audio file in the crash handler. fool

topaz berry
#

Hi, is there a function to check the current blind requirement, I only see the one that shows the scaling which may not factor bosses that change the requirement

slim ferry
#

G.GAME.blind.chips

willow scroll
#
SMODS.Scoring_Parameter({
  key = 'juice',
  default_value = 0,
  colour = mix_colours(G.C.PURPLE, G.C.YELLOW, 0.5),
  calculation_keys = {'bribe'},
})

SMODS.Back{
    key = "bribe",
    pos = { x = 0, y = 0 },
    unlocked = true,
    discovered = true,
    config = {
    },
    atlas = 'CustomDecks',
    apply = function(self)

    end,
    calculate = function(self, back, context)
        if context.final_scoring_step then
            return {
                bribe = G.GAME.dollars
            }
        end
    end,
}

whats the proper way to do this? I want the scoring parameter to mirror G.GAME.dollars, but i failed so far with modify and or calc_effect

#

its part of a deck specific scoring calculation but id rather the functionality be fully inside the scoring parameter/scoring calculation stuff

#

lol i can hijack money gain by defining one of the calculation keys as dollars

atomic edge
#

does anyone know which function determines played hand?

daring fern
slim ferry
#

in calculate you can also use context.scoring_name in most contexts that are apart of the main scoring loop

atomic edge
#

thanks

#

is there a function for adding money?

slim ferry
#

ease_dollars

loud summit
#

thats called fraud ease_dollars

atomic edge
#

ease_dollars(amount) ?

slim ferry
#

yes

atomic edge
#

thanks

slim ferry
#

in calculate you can also return dollars = amount

loud summit
#

is that amount added or set

slim ferry
#

added

#

=$ isnt real

round lion
#

will smods detect contexts made via lovely patches

slim ferry
#

wdym by detect

#

if you calculate the context itll calculate it

loud summit
slim ferry
#

dollars = -G.GAME.dollars + 10

#

wait no

loud summit
#

lol

#

oh yea how do you do negative mult

slim ferry
#

you can just return a negative amount i think

loud summit
#

you cant

#

ive tried

slim ferry
#

then probably patch SMODS.calculate_individual_effect so it lets you do that

umbral spire
#

how can i make showdowns appear last in the collection

shell timber
#

just register them last?

loud summit
#

or set the order variable really high

elder rune
umbral spire
#

no?

topaz berry
#

how would I get the current total round score while in a blind

umbral spire
#

how can i debuff cards with X seal?

dapper sun
#

that's your score

#

and G.GAME.blind.chips is the blind requirement

umbral spire
daring fern
bleak shore
#

hi i was wondering if there is a way to transform a joker into an other joker ?

fluid steppe
#

if youre pr'ing a feature, add a wiki page for it

#

simple

red flower
fluid steppe
#

god damn it why do you have to go and give me good ideas

#

aaa

red flower
#

that's literally the point of open source

fluid steppe
#

..i'll do it later i feel like shit right now

#

sinuses clogged and got way too much sleep last night

#

might be sick

normal crest
red flower
#

it would be ideal but I don't like insulting the people who make the PRs when the features are literally documented

round lion
#

when to use self over card

red flower
#

self == card.config.center

#

(in the SMODS objects)

round lion
#

so if i declare a variable from self it effectively becomes immutable?

red flower
#

well, it's not immutable but it's best practice to not change the center so practically it is

umbral spire
#

how can i make it where (for a blind btw) per played hand, it removes a random tag.

#

and how can I check if you have 'X' joker

fluid steppe
#

how would i use SMODS.scale_card on something similar to cloud 9

red flower
fluid steppe
#

do i just. reset every time context.before comes up and loop SMODS.scale_card for every instance of a certain card that fits the parameters defined?

red flower
#

cloud 9 doesnt use scale_card afaik

fluid steppe
#

i guess

#

what about fortune teller

#

that's def scaling but it uses a persistent value

#

i guess just. when that value changes?

#

and on pickup

daring fern
red flower
bleak shore
red flower
fluid steppe
#

or i guess

red flower
#

not really, you have to transform it back manually

fluid steppe
#

just have it blueprint-copy a joker that doesn't exist in the joker slots

#

damn

red flower
fluid steppe
#

how would i spoof a joker

red flower
#

somethingcom knows about that

#

or you can check ortalab too

#

pinkprint specifically

fluid steppe
#

ive had this for a while but i could never get it working

#

commented out ofc

daring fern
fluid steppe
#

hey what' sthe context for "when the joker initially spawns

red flower
#

if you want it as soon as the card is created then set_ability

daring fern
# fluid steppe mind if i steal your code
if context.end_of_round and context.main_eval and not context.game_over then
    SMODS.calculate_effect({message = localize('k_reset')}, card)
    local jokers = {}
    for k, v in pairs(G.P_CENTER_POOLS.Joker) do
        if v.key ~= self.key then
            table.insert(jokers, v.key)
        end
    end
    card.ability.extra.currentjoker = pseudorandom_element(jokers, pseudoseed("seed"))
end
-- Insert the other code I sent here
next timber
#

is there a way to make a specific consumable type always act as if you have showman? preferably without patching

red flower
next timber
#

yeah, really the wanted behaviour is specifically that they can still appear if you have one already but i dont mind multiple showing up in the same pack

red flower
#

you can hook SMODS.showman but I think it's easier to just give them all the same in_pool function with true, {allow_duplicates = true}

next timber
#

oh yeah that does sound easier

dense fulcrum
#

does anyone here know how to restart songs ingame

fluid steppe
#

what the fuck is that pfp

#

stop starin at me with them big ol eyes.....

dense fulcrum
fluid steppe
#

of course

dense fulcrum
#

your pfp is fluffy :3

fluid steppe
#

ty :3

dense fulcrum
atomic edge
#

what functions creates a random consumeable from a given consumable key

red flower
atomic edge
#

maybe i said it wrong

dense fulcrum
#

pool key?

atomic edge
#

i meant for example only a random tarot

#

or planet

#

yyes pool key sry

fluid steppe
#

N' are you dead and haunting this channel or smth you're always here

dense fulcrum
#

N' is super goated

red flower
atomic edge
#

thanks

dense fulcrum
red flower
#

im trying to be less in here because i kinda lost patience recently lol but thank you

dense fulcrum
#

fair

daring fern
dense fulcrum
#

theres something oddly satisfying about spamming that in debugplus lol

fluid steppe
#

man

#

why inst there a soul_atlas

red flower
obtuse silo
#

do i put the logic for the undebuffing in a calculate function or would this need to be a hook or something

frosty rampart
#

SMODS.current_mod.set_debuff is just a function that you can define in your mod that SMODS calls frequently to determine debuff behavior

#

e.g. here's how paperback makes the Sleeved enhancement unable to be debuffed

mystic river
#

what meta said, yes

obtuse silo
#

ok ok
now
i want this flag to return to false when the round ends
any way i can go about setting that up?

frosty rampart
#

you should set a flag on the card when you want it to not be debuffed, and then re-set it to false when the round ends. then just check for the flag in the set_debuff function

median rose
#

I am looking to put all my descriptions within a localization file in case I want to add additional languages later.
I originally had this all to together in one file, which worked fine. But I broke it up in the following files:

-- `localization/en-us.lua`
return {
    descriptions = {
        Joker = {
            j_TechnicallyMathematicallyBalancedJokers_1 = {
                name = "Technically Mathematically Balanced Joker 1",
                text = {
                    "{C:green}#1# in #2#{} chance for {C:mult}+#3#{} mult",
                },
            }
        }
    }
}
-- `jokers.lua` 
SMODS.Atlas({
    key = "TechnicallyMathematicallyBalancedJokers",
    path = "Jokers.png",
    px = 71,
    py = 95
})

SMODS.Joker {
    key = "j_TechnicallyMathematicallyBalancedJokers_1",
    atlas = "TechnicallyMathematicallyBalancedJokers",
    unlocked = true,
    pos = { x = 0, y = 0 },
    rarity = 1,
    blueprint_compat = true,
    cost = 2,
    config = { extra = { odds = 900, mult = 3600 } },
    loc_vars = function(self, info_queue, card)
        local numerator, denominator = SMODS.get_probability_vars(card, 1, card.ability.extra.odds, "TechnicallyMathematicallyBalancedJokers_1")
        return { vars = { numerator, denominator, card.ability.extra.mult } }
    end,
    calculate = function(self, card, context)
        if context.joker_main and SMODS.pseudorandom_probability(card, "TechnicallyMathematicallyBalancedJokers_1", 1,  card.ability.extra.odds) then
            return {
                mult = card.ability.extra.mult
            }
        end
    end
}
--  `main.lua`
assert(SMODS.load_file("src/jokers.lua"))()

But now the text is gone. Did I miss a step? I'm following the vallina remade repo

slim ferry
#

the key in the localization file is incorrect

#

its missing the class and mod prefixes

faint yacht
#

In the SMODS.Joker, key should be just 1 for the localization if TechnicallyMathematicallyBalancedJokers is prefix?

obtuse silo
frosty rampart
#

sorry i'm not super caught up on what exactly you're trying to make here

obtuse silo
#

oh
i want to make a consumable that on use, removes debuffs from the cards for the blind.
when the blind ends, they should be able to be debuffed if the criteria matches again

frosty rampart
#

yea set the flag in the consumable's use function, and then i'd probably reset the flag in the global mod calculate

obtuse silo
#

so i'd make SMODS.current_mod.calculate = function(card, area, context)?

frosty rampart
#

just function(self, context) (because it's not calculating on any one specific card)

atomic edge
#

i made a custom booster pack and when i open it it says error on the bottom, what variable do i need to add to make that say something else?

frosty rampart
atomic edge
#

i did that but it doesnt work

#

did i do it wrong?

slim ferry
#

im pretty sure the group_name thing just straight up doesnt work

#

joker forge has also had issues with it for the longest time

#

because it uses loc_txt as well

obtuse silo
#

ok just found out that during the end of round context the played cards are not in the deck
how do i get a read of all the cards if they're in the deck, hand or discarded

slim ferry
#

G.playing_cards

frosty rampart
slim ferry
#

group_key is outside of loc_txt though

#

and is for localization files

#

unless the docs are just wrong

frosty rampart
#

i mean yea my point is the docs might be wrong
because why would it be group_name in the loc txt but group_key in a localization file

slim ferry
#

probably because group_key is a key thats used to get the localization entry

wheat rapids
#

How do I know that the player is using their first hand?
So the joker destroy if you are not playing the first hand

slim ferry
#

G.GAME.current_round.hands_played == 0

wheat rapids
#

Wouldn't that make the joker destroy on the last hand?

slim ferry
#

no

#

well you would check G.GAME.current_round.hands_played > 0 for not the first hand ig

wheat rapids
#

Oh wait mb I didn't read well

#

Thanks you 🙌

next timber
#

maybe a stupid question but is there a convenient way of giving a consumable a custom function? i would like my perk consumables to have a :level_up() function that i can easily just call however many times to increase the perk level, but if i need to patch/hook in a function or deal with saves i cba lol

slim ferry
#

you can just put anything into an object definition and itll go in the object's table

next timber
#

and itll save properly? cool

slim ferry
#

so if you just define a level_up function on the object itll be in card.config.center.level_up for the card object

frosty rampart
#

if you want the whole consumable type to have the function, i recommend defining a custom type that extends smods.consumabletype

next timber
#

huh? so would i be able to do card:level_up() on a specific instance or would i have to do like card.config.center.level_up(card)

frosty rampart
#

you should be able to do card:level_up(), yes

slim ferry
#

what

#

i dont think every arbitrary function gets put onto the card object as a method

next timber
#

ok now im confused

slim ferry
#

especially since self always refers to the prototype object for existing stuff

next timber
#

if i want each consumable of a type to have a level_up function that i can define in the consumable definition what do i need to do for that

slim ferry
#

nothing really

frosty rampart
#

the simplest way to do that would be to just add a level_up function in each consumable's definition

slim ferry
#

just add it to the consumable definition

#

yeah

#

if its not going to be similar between every consumable then theres no point in extending to automate stuff but otherwise should be fine

next timber
#

ok cool

#

i mean theyll all have the same arguments probably but thats about it

frosty rampart
#

oh wait my bad i was myself a bit confused
what i was talking about was extending smods.consumable itself, not smods.consumabletype
anyway yes ignore me you probably don't need to extend anything

slim ferry
#

but it will be card.config.center:level_up(...) assuming you make it level_up = function(self, ...)

tiny sparrow
#

Guys, did you know how I elevate instead of multiply?

#

Cuz I need someone to teach me

next timber
#

i can live with that i think

tiny sparrow
#

Yeah

red flower
#

that's how

tiny sparrow
#

Only that?

red flower
#

yes

tiny sparrow
#

I feel stupid, thank you

unkempt bronze
#

Any ways to easily reference every card that wasn't played?

red flower
#

i don't remember what the variable is called but there's one in each playing card that counts times played iirc

atomic edge
#

is there a way to alter booster pack apper rates for consumeables?

next timber
#

if you mean during scoring i think you can just do G.hand.cards

unkempt bronze
atomic edge
#

i made custom consumeables and booster packs for them

#

and i want to make some rarer than others

#

do i use the soul way or is there another?

red flower
#

i think consumable types can have rarities but im not sure how

slim ferry
#

well you can make consumables that work like the soul but i dont think individual object weights is a thing yet]

#

individual object weights within a set that is

red flower
#

you can also make the booster poll on each create_card

slim ferry
#

maybe something like that could work

red flower
#

yeah but i only see people asking about it and never someone saying how to do it lol

atomic edge
#

would this work?

#

on every consumable

slim ferry
#

no because itll just not spawn anything if none of the weights roll

#

because thats how soul type cards work

atomic edge
#

but if i have 12 cards that are say common, and 5 which are rare

#

can i just put it on those 5?

native bone
#

I remember that to detect a Joker's key, it should be card.config.center.key, did I misremember? I dont entirely trust myself lol

#

Also, how do I detect if a Joker is in a custom pool, for example, Crpytid's Food Joker pool?

unkempt bronze
#
                    SMODS.destroy_cards(card)
                 end
             end```
I don't think this destroys all cards held
daring fern
slim ferry
#

should work

unkempt bronze
# daring fern `SMODS.destroy_cards(G.hand.cards)`
SMODS.Consumable {
    key = "comykelium",
    set = "xiferp_Element",
    atlas = "Golden_Brick_Road",
    cost = 3,
    pos = { x = 10, y = 6 },
    unlocked = true,
    discovered = true,
    config = { extra = { element_no = 99, odds = 11, yes_is_no = false }},
    keep_on_use = function(self, card)
       return true
    end,
    can_use = function(self, card)   
      if card.ability.extra.yes_is_no == false then
        return true
      end
    end,
    loc_vars = function(self, info_queue, card)
        local numerator, denominator = SMODS.get_probability_vars(card, 1, card.ability.extra.odds, 'c_xiferp_comykelium')
        return { vars = { numerator, denominator } }
    end,
    use = function(self, card, area)
        yes_is_no = true  
    end,   
     loc_txt = {
        name = 'Comykelium',
                text = {
                    'Adds x5 mult to your next hand',
                    'and destroys all held cards',
                    '(1/11 chance to radioactively decay and kill a held card)',
                },
            },
    calculate = function(self, card, context)
    if card.ability.extra.yes_is_no == true then
        if context.individual and context.cardarea == G.play then
            if context.other_card == context.scoring_hand[#context.scoring_hand] then
                   G.GAME.xiferp_rowseven_xmult = (G.GAME.xiferp_rowseven_xmult or 0) + 5
                SMODS.destroy_cards(G.hand.cards)
            end
        end
    end
    if context.individual and context.cardarea == G.play then
         if SMODS.pseudorandom_probability(card, 'c_xiferp_comykelium', 1, card.ability.extra.odds) then
                SMODS.destroy_cards(card, nil, nil, true)
                SMODS.add_card({ key = 'c_xiferp_uranium' })
        local card_to_destroy = pseudorandom_element(G.hand.cards, 'random_destroy')
        SMODS.destroy_cards(card_to_destroy)
        end    
    end
end
}```
Think I have something wrong...
#

Still not destroying the held cards post-hand

#

Wait, think I figured it...

#

nope

native bone
#

This is supposed to give me 3 Negative Space Babies when it is created, and then whenever the Space Baby is scored, it gives me x2 Chips and x2 Mult, but for some reason, it doesnt do either. Unless I am misusing context.other_joker.

elder rune
native bone
elder rune
#

it's looking at its own key and not context.other_joker which I assume you want it to

native bone
#

Yes, so should it be other_card.blablabla?

elder rune
#

Should be

#

Yeah

fluid steppe
unkempt bronze
#
    if card.ability.extra.yes_is_no == true then
        if context.individual and context.cardarea == G.play then
            if context.other_card == context.scoring_hand[#context.scoring_hand] then
                   G.GAME.xiferp_rowseven_xmult = (G.GAME.xiferp_rowseven_xmult or 0) + 5
                SMODS.destroy_cards(G.hand.cards)
            end
        end
    end```
Why isn't this destroying any cards?
native bone
fluid steppe
#

actually idea

#

what if i just. make the sticker handle it, and the joker just spawn a Joker with the sticker

native bone
fluid steppe
#

that's what G.hypr.ijhjokers is

#

isn't it?

#

...and???? that just means it's in the table G.hypr instead of G

atomic edge
#

if i do this and then set the rarity of the consumeable to the key the game crashes

#

can someone help?

#

i saw a lot of talk about this in this channel and did everything the same but it just doesnt work

fluid steppe
#

i should look at how Vandalism from bunco does it

#

the sprite thing i mean

daring fern
fluid steppe
#

that's what ijhcalc is, right?

fluid steppe
#

ah

median rose
slim ferry
#

the class prefix j and the mod prefix which is in your metadata file

#

look at the vanillaremade localization files

plucky berry
#

guys any help with custom rarities showing up as common?

red flower
plucky berry
#
    key = "fresh",
    loc_text = { name = "Fresh" },
    pools = { ["Joker"] = true },
    badge_colour = HEX("12A0D7"),
    default_weight = 0.5
}```

and i'm putting `rarity = "napoli_fresh",` in the joker
red flower
plucky berry
#

they are marked as common

red flower
#

can i see one of the jokers

plucky berry
#

like full code or pic

red flower
#

pic is better because im on my phone

plucky berry
red flower
#

hmm did you save lol

plucky berry
#

yeah

red flower
#

i dont see how that would show up as common, at worst it should crash

plucky berry
#

it's like i didn't save but i triple checked

#

like, the joker should also show up later in the collection after this change

#

cause it's loaded after commons

red flower
#

yeah that's probably the problem, check if closing and opening the file again shows the changes

atomic edge
#

send the part of the code where you define the rarity

red flower
#

hmm

native bone
#

This bit of code keeps crashing whenever I trigger it. I dont know how I can find the attributes of the other joker that I am trying to score. In this case, I want it to match the key.

plucky berry
#

it's a separate lua file

#

with only that code

#

and i'm loading it

atomic edge
#

yea screenshot it

red flower
plucky berry
#

but the joker shouldn't show up at all if it didn't load no?

red flower
#

try asserting the load_file call

atomic edge
#

no i mean screenshot the part of the code where you defined the rarity "napoli_fresh"

red flower
#

assert(SMODS.load_file(...))()

median rose
# median rose I am looking to put all my descriptions within a localization file in case I wan...

Still facing same problem with keys and class changd. Here's the new files. I also reset the profile in case that was the issue.

-- `localization/en-us.lua`
return {
    descriptions = {
        Joker = {
            j_TechnicallyMathematicallyBalancedJokers_1 = {
                name = "Technically Mathematically Balanced Joker 1",
                text = {
                    "{C:green}#1# in #2#{} chance for {C:mult}+#3#{} mult",
                },
            }
        }
    }
}
-- `jokers.lua` 

-- atlas is the same

SMODS.Joker {
    key = "1",
-- other stuff stuff is the same as before
}
atomic edge
#

oh didnt see im sorry

plucky berry
red flower
median rose
#

Works now

true jasper
#

how would i make a random tag

red flower
true jasper
sharp arch
#

hey guy how would I get a blind's color

daring fern
sharp arch
atomic edge
next timber
#

how do i make the hand fill up with more cards after i increase the hand size?

red flower
#

you can use SMODS.draw_cards if for some reason it's not

sharp arch
#

oh and blind defeat is G.GAME.blind.defeated or is there something else

red flower
sharp arch
red flower
#

context.end_of_round then

sharp arch
#

ok

#

so now my code looks like this did i do it right ```if context.end_of_round and G.GAME.blind.config.blind.boss_colour == HEX(FFFFFF) then

end```
slim ferry
#

well the colour check will always be false because of how tables work

sharp arch
#

oh

slim ferry
#

table equality checks if the two variables point to the same table

#

not if they are tables with the same values

#

also why do you need to check colour anyway

sharp arch
slim ferry
#

i mean even then the colours would rarely match exactly

sharp arch
#

but it would be funny

fluid steppe
#

hay do i get/set a card's loc_vars

daring fern
vale zinc
#

Can any of you tell me why the first line crashes the game?

--[[
attempt to index global 'blind' (a nil value)
--]]

if context.before and (context.scoring_name == card.ability.extra.poker_hand) and not blind.disabled then
    return {
        message = localize('ph_boss_disabled'),
        func = function() -- This is for timing purposes, it runs after the message
            G.GAME.blind:disable()
        end
    }
end
fluid steppe
fluid steppe
vale zinc
fluid steppe
#

uhhh idk

slim ferry
#

should work

vale zinc
#

Found it. It was in Luchador's code.
G.GAME.blind and ((not G.GAME.blind.disabled) and (G.GAME.blind.boss))

fluid steppe
slim ferry
#

how would you set them, theyre the result of a function thats gets re-run every time you hover over the card

daring fern
slim ferry
#

oh that works yeah

fluid steppe
#

that's annoying

daring fern
fluid steppe
#

it's just inspectFunction

#

.that failed too

daring fern
fluid steppe
#

o

maiden phoenix
#

Made it so the 3 equipement names combine into 1

#

Gfuel joker

next timber
#

jeehful

maiden phoenix
#

don't steal my original oc character jimbo, Jeehful

sharp arch
#

yall know if theres a built in particle system or do i just have to program that myself

brave onyx
#

Does anyone know how to create a joker that multiplies money?

fluid steppe
#

i think it has particles

sharp arch
#

so i can just use the love2d commands

#

or do those not intrinsically work with lovely

slim ferry
elder rune
#

Eris beat me to it

slim ferry
#

Same can be done with ease_dollars if you want

brave onyx
# slim ferry just return `dollars = G.GAME.dollars * (<multiplier> - 1)`

like this?

    key = 'raw_gold',
    loc_txt = {
        name = 'Raw Gold',
        text = {
            '{C:green}#1# in #2#{} chance to',
            'multiply your {C:money}money{} by {C:money}#3#x{}',
            'when a {C:attention}Coin{} card scores'
        }
    },
    config = { extra = { odds = 2, mult = 1.5 } },
    rarity = 2,
    atlas = 'joker8',
    pos = { x = 0, y = 0 },
    cost = 6,
    unlocked = true,
    discovered = false,
    blueprint_compat = true,
    eternal_compat = true,
    perishable_compat = true,
    loc_vars = function(self, info_queue, card)
        return { vars = { '1', card.ability.extra.odds, card.ability.extra.mult } }
    end,
    calculate = function(self, card, context)
        if context.individual and context.cardarea == G.play then
            if context.other_card.base.suit == 'kloun_coinsuit' then
                local random_value = math.random()
                local trigger_chance = 1 / card.ability.extra.odds
                
                if random_value <= trigger_chance then
                    return {
                        dollars = G.GAME.dollars * (card.ability.extra.mult - 1)
                    }
                end
            end
        end
    end
}
slim ferry
#

Yeah

brave onyx
slim ferry
#

I cant read bcs mobile

#

Is it a crash

brave onyx
#

yup

slim ferry
#

I cant imagine the issue is with the return

#

So its probably an issue elsewhere

brave onyx
#

I fixed it anyway, thank you

carmine hearth
#

please devs i need this

#

my hot potato mod is kinda not working

slim ferry
carmine hearth
#

i m so sorry i didn't knew there was a chat for this mod

slim ferry
#

Its fine

next timber
#

anyways update ur galdur

#

tahts the issue

carmine hearth
#

who is galdur ?

native bone
true jasper
#

using smods.add card how would i make it allow to spawn hidden consumables

red flower
true jasper
red flower
#

I don't think that's possible with just add_card, you would probably need to use get_current_pool and pick a random card from there first and then add it

fluid steppe
#

how the hell does smods get the loc_vars for vanilla jokers

#

they don't use loc_vars

#

actually this probably isnt a smods thing its a vanilla thing

#

oh my god vanilla loc_vars is set in a function that goes through all the jokers fucking hell

frosty rampart
#

if you're trying to change it for a vanilla joker, just take ownership of the joker and you can set new loc_vars that way

#

you won't have to patch into the function

fluid steppe
#

no

#

im uh

#

i'm trying to get a specified joker's loc_vars

frosty rampart
#

what for exactly

fluid steppe
#

does it matter

frosty rampart
#

i feel like there might be a better way to achieve what you're trying to do

fluid steppe
#

..yeah actually

#

i could just hook the function and extract the loc_vars

vale zinc
#

For coding a Boss Blind: when context.individual and context.cardarea == G.play, how do I get the current scored card?

red flower
#

context.other_card

vale zinc
#

So, would context.other_card:get_id() work?

clear ocean
fluid steppe
clear ocean
#

what do you think is a good theme for a joker that scales xmult based off a poker hand similar to to do list, i was thinking crystal ball or something space themed

#

was thinking like this

#
  • Name: ???
  • Theme: Space-themed?
  • Effect: Gain XMult (maybe .2 or .25?) when playing a chosen poker hand, changes either at end of round or playing said poker hand
  • Rarity: Uncommon or Rare
  • Unlock: Win a run by only playing one kind of poker hand
vale zinc
#

What distinguishes SMODS.Blind({}) from SMODS.Blind{}?

clear ocean
#

i don't think anything its more a preference

#

im asuming i can do somthing where i do a for loop and if the number of "unique" poker hands goes above one it doesnt unlock

red flower
#

you can pass a single table or string to a function without ()

clear ocean
#

not sure how to reword the last part it feels weird but not sure what the right word would be

#

maybe "poker hand changes after playing it?"

vale zinc
#
poker hand changes when Mult is upgraded```
clear ocean
#

thanks that sounds more natural and in line with the vanilla jokers

vale zinc
#

That's what I go for with my own Jokers.

clear ocean
vale zinc
#

Looks good to me.

fluid steppe
#

*when played poker hand

clear ocean
#

oh thats great lmao 😭

#

that should work

#

im suprised it all worked first try actually

clear ocean
fossil ore
#

how do i make it not say error? I'm guessing group_name for boosters go somewhere else in the localization file

clear ocean
#

that took a while to get right

fluid steppe
clear ocean
#

after playtesting it not sure if it is balanced i mean obelisk gains .2 xmult but its more so that you can play any hand just not your most played hand but for plantarium you have to dig for a specific hand. not sure if i should make it uncommon or increase the gain or leave it as is

glass scaffold
#

Is there a way to restrict certain consumables from appearing with a deck?

vale zinc
plucky berry
woeful basin
#

Is there somewhere I can find how to organize and handle the unlock_condition method for achievements? I want to have my achievement unlock when the player plays a hand of 3 of a specific rank and no other cards.

plucky berry
#

how do you replace music when a joker is held?

daring fern
plucky berry
#

select_music_track("napoli_panzarott") this doesnt work

#

how do i do it

#

select_music_track = "napoli_panzarott" ??

daring fern
plucky berry
daring fern
plucky berry
#

ah okay

daring fern
plucky berry
#

of the sound?

#

ok it works

#

it's super slowed tho

daring fern
fluid steppe
#

how would i get if a certain stake is unlocked on any deck

elder rune
#

how do you check from which mod a joker comes from

daring fern
elder rune
daring fern
elder rune
#

hwat

next timber
#

im trying to make a consumable that removes debuffs from all your cards, but if used during a debuffing boss the cards immediately get debuffed again. is there a way to stop this?

daring fern
next timber
#

awesome thx

#

SMODS.debuff_card(card,"reset") doesn't work, am i missing something?

daring fern
next timber
#

oh ok

#

thx

fluid steppe
#
calculate = function(self, card, context)
        if context.individual and context.cardarea == G.play and not context.end_of_round then
            if context.other_card:get_id()==12 and not context.blueprint then
                SMODS.scale_card(card, {
                    ref_table = card.ability.extra, 
                    ref_value = "mult", 
                    scalar_value = "incmult", 
                })
            end
        end
        if (context.before or context.end_of_round or context.drawing_cards) and card.joker_display_values then
            card.joker_display_values.storedmult = card.ability.extra.mult
        end
        if context.joker_type_destroyed --[[and context.card.ability.set == 'Joker']] then
            assert(false,'Breakpoint Reached!') -- this never gets reached, neither when selling a card or it self-destroying
            if context.card.ability.perish_tally~=0 and not context.card.config.center.pools.Food then
                card.ability.extra.mult = 0
                if card.joker_display_values.mult then card.joker_display_values.mult=0 end
                return {message = localize('k_reset'), message_card=card}
            end
        end
        if context.joker_main or context.forcetrigger then return {mult = card.ability.extra.mult} end
    end,

i know context.joker_type_destroyed exists but it's not. working

red flower
#

selling wont trigger it

fluid steppe
#

hm

#

what i'm trying to do is
"Resets when a Joker is destroyed neither by self-destructing, nor while debuffed by Perishable"

red flower
#

yeah joker_type_destroyed should work for other types of destruction

fluid steppe
#

so why is the breakpoint i set never being reached

red flower
fluid steppe
#

selling a joker and letting a food joker expire

candid sleet
#

I've had an idea for something to add to a mod but I'm not really sure how to implement it. And I'm also not sure where I can find a reference point for doing this either.
It's basically just a type of card that acts the same way as consumables like Tarots, Planets and Spectrals, but I'd want to give them their own slots so that you can never have more than one of this type of card at a time, but also so they don't take up consumable slots

#

the only similar thing that's really coming to mind at the minute that might help explain it would be the slot shown underneath consumables in the multiplayer mod, that's used to show when the opponent has a specific joker

red flower
fluid steppe
#

yeah you know what

#

i think simplifying it to just being "when a joker is sold"

#

would be best

red flower
fluid steppe
#

probably shouldve guessed

willow scroll
wintry solar
willow scroll
#

i want to have a scoring parameter that is literally just G.GAME.dollars

#

for a deck idea i have

#

but the current implementation actually relies on the deck for the parameter to work and it doesnt even work exactly how i want because i want money earned during a hand to still count towards the parameter but in its current setup if i earn money by means of for example golden ticket it only applies on the next hand

#

as far as im aware calc_effect and modify only get applied when a key is actually registered, and my current idea is to do some jank wizardry with SMODS.Scoring_Parameters['modprefix_example_key']:modify(X), but id like for something in my mod to not be jank for once

maiden phoenix
#

Dumb idea but what if you use G.GAME.dollars + (G.GAME.dollar_buffer or 0) instead? Not sure if G.GAME.dollar_buffer properly updates during calcs

willow scroll
#

thats a parameter? let me try that

#

i need to read more lovely dump

willow scroll
#

also sidenote is it normal behaviour that the used scoring calculation resets to the default one every round

#

and if yes how do i make it not do that

willow scroll
wintry solar
#

how are you setting the scoring calc?

willow scroll
#

and as soon as i ask that question i see G.GAME.current_scoring_calculation in the announcement 🤦‍♂️

umbral spire
#

if i have a sound dir like:

./assets/sounds/
--folder
----sound.ogg

and I did SMODS.Sound:register_global()

how can i play it?

does play_sound('modprefix_folder/sound.ogg') work?

daring fern
umbral spire
umbral spire
#

well then how can I load them like that?

#

is it possible?

daring fern
shadow ocean
#

Teach me codding mods😥

umbral spire
queen crescent
umbral spire
#

bru

shadow ocean
queen crescent
#

if you can read through it, you might be able to get a basic idea

shadow ocean
#

Oh thx a lot

queen crescent
#

-# its not all but this explains it better than the smods wiki

shadow ocean
#

Thank you

cunning valley
#

Is there any ways for a joker to gain retriggers? I haven't had luck finding documentation regarding it

daring fern
cunning valley
umbral spire
#

is it possible to permanently lower discards/hands?

daring fern
umbral spire
#

?

#

oh the joker

#

also how does (in loc_txt or anything) '#1#' work, or what does it display exactly?

cunning valley
umbral spire
#

ah

#

thanks

daring fern
cunning valley
#

Oh i thought that's what i said LOL

#

Nonetheless, it doesn't come with color so you have to stylize it yourself

umbral spire
umbral spire
# daring fern Yes.

and for discards
G.GAME.round_resets.discards = G.GAME.round_resets.discards - 1?

azure laurel
#

there is a way to make global variables?

umbral spire
#

when making a stake does it, by default, apply all previous stake effects?

#

if so, how can i remove that.

daring fern
azure laurel
#

thx man

umbral spire
#

is this correct?
if _card.edition == 'modprefix_edition' then

daring fern
umbral spire
#

oh

azure laurel
umbral spire
#

is this valid? idk if i need the args to be (self, cards, hand, handname, check)

    debuff_hand = function(self, blind, context)
            local suits = {
                ['Hearts'] = 0,
                ['Diamonds'] = 0,
                ['Spades'] = 0,
                ['Clubs'] = 0
            }
            ...flower pots code...
            if suits["Hearts"] > 0 and
                suits["Diamonds"] > 0 and
                suits["Spades"] > 0 and
                suits["Clubs"] > 0 then
                return false
            else
                return true
            end
        end
    end,
daring fern
umbral spire
daring fern
umbral spire
#

ah

#

so (self, blind, context, cards, hand, handname, check)?

daring fern
umbral spire
#

-# if context.scoring_hand[i]:is_suit('Hearts', true) and suits["Hearts"] == 0 then

azure laurel
daring fern
azure laurel
#

the main.lua counts?

umbral spire
elder rune
umbral spire
#

vro the msg said hand[i]

#

but alr

elder rune
umbral spire
#

how do i detect if a joker has any edition

daring fern
umbral spire
#

how can i get a random integer between two values, is it possible with psuedorandom?

#

-# i ask too many questions

umbral spire
#

how do i remove an (all) edition from a joker?

daring fern
tepid eagle
#

how do i remove an edition from a joker but the joker is me and the edition is depression

tepid eagle
#

ok i'll try that

#

what the fuck

elder rune
#

crazy

tepid eagle
#

how do i give myself my edition back

red flower
#

editionless

frosty rampart
umbral spire
#

bro 😭

tepid eagle
#

this is worse

wind steppe
umbral spire
slim ferry
#

why would this trigger on cards created by familiar/incantation and such

wind steppe
#

also use scale_card smh

slim ferry
#

hiker doesnt use scale card does it now

wind steppe
slim ferry
#

also its meant to only trigger when a card that was previously enhanced gets enhanced again

tepid eagle
slim ferry
#

actually wait ill try smth

wind steppe
#

set a flag on every enhanced card in deck and only trigger if it has the flag

#

also don’t forget vampire

slim ferry
#

????????????

#

why would i need to set a flag

wind steppe
#

what else would you do

slim ferry
#

literally look at the cod

#

e

#

its already checking if it was enhanced before

wind steppe
slim ferry
#

yeah because i wasnt checking context.unchanged

#

wait no

#

fuck that doesnt work either

wind steppe
#

i don’t like my solution but it probably works

slim ferry
#

but the issue is specifically with familiar/incantation/grim

#

it works for literally everything else

wind steppe
#

take ownership of them
🧠

slim ferry
#

no

daring fern
umbral spire
#

how can i lock the gamespeed in settings at a val (say, 0.5) and then after something revert it to original value.

faint yacht
#

Check how Yahi changes gamespeed, then hook G.FUNCS.change_gamespeed to prevent execution of original function.

umbral spire
daring fern
umbral spire
#

ah

umbral spire
slim ferry
#

you can still just go into the settings?

wind steppe
slim ferry
#

what would stop you from going into the settings and changing it back

umbral spire
#

i thought calculate is always being called

wind steppe
umbral spire
#

huh

slim ferry
#

calculate only gets called when a context is calculated

umbral spire
#

oh

#

so then how do i do it

#

;-;

faint yacht
slim ferry
#

does anyone know why my debugplus doesnt show me prints

#

i have all but 1 setting turned on

#

but nothing shows

#

oh wait

#

oh my god

#

but for some reason grim and such seem to set the ability of cards they create an additional time

umbral spire
wind steppe
#

Thunk Moment™

umbral spire
#

?

wind steppe
#

why name

umbral spire
#

yahimod does that ;-;

#

i just yoinked it

wind steppe
solid salmon
#

guys

daring fern
solid salmon
#

i saw the documentation for making a gradient

#

and im wondering

#

how do i actually make it

umbral spire
wind steppe
#

Don’t

umbral spire
#

it works fine

elder rune
#

fine ~= good

slim ferry
#

what is the probability identifier/seed for lucky card mult

elder rune
#

tryna make an edition but for now im only attempting to make the cards more yellow

#

Ive made sure that its called "firstedition" everywhere too

#

okay I seemed to have figured out the problem

umbral spire
wind steppe
elder rune
umbral spire
#

how can i disable all held in hand effects temporarily?

gusty compass
#

how would i consider adding interchangable names, descriptions and sprites for a joker

daring fern
umbral spire
#

what does hook 'x' mean

daring fern
primal terrace
#

how to detect if any voucher is redeemed

daring fern
umbral spire
# daring fern Hook `SMODS.score_card`

like

local score_card_ref = SMODS.score_card
function SMODS.score_card(card, context)
    if card and card.ability then
        card.ability.hold_in_hand = false
    end
    return score_card_ref(card, context)
end

?

daring fern
umbral spire
daring fern
umbral spire
#

or at the bottom

slim ferry
#

you always need to return the old function, so yes at the bottom

umbral spire
#

is it possible to make a 1 in 3 chance for played hand to not score

slim ferry
#

yeah

umbral spire
#

how ;-

umbral spire
#

or like

slim ferry
#

also it has a system to make it so you cant get fucked by getting unlucky which is what G.GAME.blind.tornado_guarantee is related to i think

umbral spire
#

well i kinda do

#

but like, where's the 1 in X chance

slim ferry
#

the SMODS.pseudorandom_probability

#

but also i forgot this isnt a calculate oosp

umbral spire
slim ferry
#

but yeah use context.debuff_hand and check not context.check (i think) so it doesnt roll the probability every time the debuff is checked for

umbral spire
umbral spire
#

how do i remove all seals, editions & enhancements from card(s)

daring fern
slim ferry
#

though seed is automatically set as the id if you dont give a seperate id

gusty compass
red flower
chrome widget
#

Is anyone available to help me with updating context flags? I'm having trouble doing it cause it's undocumented

spiral crown
#

So I am dealing with random enhancements, 281 in card.lua is the mult enhancement, other ehancements work without crash as intended (seen everything but lucky and mult cards)
anyone know why this is crashing?

rocky plaza
spiral crown
rocky plaza
#

anyways u shouldnt need to interact much with G.P_CENTERS unless you know what you're doing with it

spiral crown
#

lol guess I didn't understand it as well as I thought, appreciate the assist!

rocky plaza
#

hmm

rocky plaza
spiral crown
gaunt folio
#

how do i only modify only one cards probability with seals if its possible? It pours over into other cards

daring fern
frosty rampart
#

you can also check the identifier during the mod_probability context

gaunt folio
#

Thanks

frosty rampart
#

vanilla content has unique identifiers for each probability roll, so e.g. you could make a seal that very specifically only affects the roll for mult on lucky cards

solid salmon
#

hey guys

#

how do i make custom gradients

#

like an actual example please

#

also

#

is there a way to make something manipulate other cards variables and loc txt

native bone
#

Should I be using j_modprefix_joker or just modprefix_joker? Im trying to read the key of the Joker

solid salmon
#

j_modprefix_joker

native bone
#

That's what I thought

#

Or maybe I have bad code, idk

#

I'm trying to detect when another Space Baby is detected, then it should give x2 Chips and x2 Mult

solid salmon
#

first

#

what is the key of this "Space Baby"

native bone
#

j_stufful_spacebaby

solid salmon
#

No i mean

#

Just show me where you created the spacebaby

native bone
#

Oh, okay

atomic edge
#

can anyone explain how to add rarities to consumables?

native bone
atomic edge
#

or is there some kind of guide or a mod that does it

native bone
#

I dunno, maybe look at Vanilla Remade's Soul cards

solid salmon
#

First of all

#

If its unlocked by default

#

You do not need an unlock condition

native bone
#

Thanks

solid salmon
#

next(SMODS.find_card("j_splash"))

#

Try using this

#

But replace splash with your space baby

native bone
#

Okay, I'll try it

#

It still didnt work

willow scroll
solid salmon
#

show the code

#

oh yeah

#

i still need to know how to make gradients and manipulate enhancements/jokers

gusty compass
solid salmon
#

like

#

do you want to put the name and local text into the SMODS.joker?

#

or whatever consumable

slim ferry
atomic edge
#

how can i make only a certain booster pack type spawn in the shop for a round?

#

i see it uses get_pack("shop_pack")

#

but the shop_pack is nowhere to be found

gusty compass
atomic edge
#

do i just make a custom pool

slim ferry
#

you could probably hook that function and check if the one argument is "shop_pack"

unkempt bronze
#

Is there a way to make a quiz as a boss blind?

slim ferry
#

i mean theres wordle and chrome dino boss blinds that have been made

#

its definitely possible, you'll just have to figure out the majority by yourself

unkempt bronze
#

Well, that's going to be a challenge. I wanted to make The Splapp, doesn't allowed played hands if you miss an Impossible Quiz question

unkempt bronze
slim ferry
#

aikoyori's shenanigans

unkempt bronze
#

Ohh

#

And where do I go to get yahimod?

slim ferry
unkempt bronze
#

Now to study how they work to make my own.

native bone
#

wtf happened to my crashlog

#

It seems the letters are coked up on that good stuff

slim ferry
#

something wierd with shaders happened

#

that usually fucks up crash text rendering too

native bone
#

I would assume so, but I have no shaders in my mod.

slim ferry
#

🤷 idk then

native bone
#

Let's just hope it was a one off occasion.

slim ferry
#

you can at least read the crash properly in the lovely log or if you copy paste it

native bone
#

Oh well, I closed it lol

#

Eris, you are absolutely right. Something has gone wrong with the Negative shader, because my game crashed trying to spawn a Negative Joker

#

Probably interrupted

slim ferry
#

well if your mod does absolutely nothing rendering-related it might be another mod you have that does?

rough furnace
#

I need to properly make a replication for that so I can fix it

tepid eagle
unkempt bronze
#

Anyone know how to make buttons in Balatro?

slim ferry
native bone
#

So how can I spawn a card from a custom pool?

lucid owl
unkempt bronze
#

that + yahimod = maybe a boss blind

slim ferry
rough furnace
sharp arch
#

guys how do i properly use https

lucid owl
red flower
gusty compass
unkempt bronze
#

What dies minh = 8 represent in the context of scales?

#

I'm looking in the UI guide, and I'm confused by this part.

rough furnace
slim ferry
#

so it forces it to be at least that big but allows it to grow if needed

unkempt bronze
#

Ah

#

Honestly, I think I'm figuring it out a bit now

sharp arch
#

hey, so a blind just- closes my game when defetaed, which its not supposed to do that

unkempt bronze
#
        {n = G.UIT.R, config = {w = 400, h = 100, colour = G.C.RED, padding = 0.15}, nodes = {
            {n = G.UIT.C, config = {w = 150, h = 50, colour = G.C.WHITE, padding = 0.15}}, nodes = {
                 {n = G.UIT.T, config = {text = 'Just a test', colour = G.C.BLUE, padding = 0.15}}    
            }
            {n = G.UIT.C, config = {w = 150, h = 50, colour = G.C.WHITE, padding = 0.15}}, nodes = {
                 {n = G.UIT.T, config = {text = 'Just a test again', colour = G.C.BLUE, padding = 0.15}}    
            }
        }},
        
        {n = G.UIT.R, config = {w = 400, h = 100, colour = G.C.RED, padding = 0.15}, nodes = {
            {n = G.UIT.C, config = {w = 150, h = 50, colour = G.C.WHITE, padding = 0.15}}, nodes = {
                 {n = G.UIT.T, config = {text = 'Just a test once more', colour = G.C.BLUE, padding = 0.15}}    
            },
            {n = G.UIT.C, config = {w = 150, h = 50, colour = G.C.WHITE, padding = 0.15}}, nodes = {
                 {n = G.UIT.T, config = {text = 'Just a test for the last time', colour = G.C.BLUE, padding = 0.15}}    
            }
        }}
}}```
Where do I load this into balatro to test it?
glass scaffold
#

At least that's how the private branch of WCCO works.

#

-# YMMV

unkempt bronze
glass scaffold
dark roost
#

been trying to make a joker that basically saves you if you run out of hands by giving you an extra hand for an increasingly higher money penalty. Got most aspects of it working, but it still activates and deducts the money even if I get enough points to win the blind.
Right now I'm trying to compare the current chips to the blind requirements, but it checks the score before it updates (e.g. I have 100 points out of the 300 required, I play a final hand for 500 points, and G.GAME.chips still gives 100, even though context.after should be after the score has already calculated).
Any other way I could make this work? something like checking the points of the hand before it gets totaled? I could maybe do a different scoring context but I think this is the last one before I'd actually get the game over screen.

            ease_hands_played(card.ability.extra.extra_hands)```
glass scaffold
#

Maybe a logic error?

unkempt bronze
glass scaffold
glass scaffold
stuck ore
#

quick question, I remember being shown a link for a github or something that had the vanilla jokers code for reference, where can I find that?

stuck ore
#

thank you

clever wasp
#

yo, can someone pls help me out? im having a lot of issues, my balatro its crashing a lot

glass scaffold
dark roost
# glass scaffold Have you tried flipping < to >?

yes, I tried playing a bit with values and logic but the problem seems to be that G.GAME.chips gives the wrong number. (I put ease_dollars(G.GAME.chips) and it was always the amount of chips from my previous hand)

clever wasp
glass scaffold
unkempt bronze
glass scaffold
unkempt bronze
#

Hmm. One of the mods you have (I don't know which) mixed up enhancements and seals, to my admittedly bad figuring

clever wasp