#💻・modding-dev

1 messages · Page 440 of 1

candid sleet
#

oh wait i didn't know about that, sounds very useful

subtle merlin
#

It is, it remakes the base game in SMODS format

#

Wdym?

tawdry oriole
#

like, make a boss blind that forces the game speed to x0.25 while in it and resets it back to whatever value the player had when it gets defeated

subtle merlin
#

Good question

#

Only idea is going to the Balatro modding wiki and looking up "game speed" or smth on there

#

Then using what you find as reference

stoic fulcrum
#

bump

manic rune
#

why are you arknighting in modding dev

#

how did you hook Card:remove()?

stoic fulcrum
candid sleet
#

i'm tryna use this as a template but add my own thing to it but i can't seem to get the formatting right (both of these are using the same key ("ppg") but the second one doesn't work and whenever i try implement the set money to 0 code into the main chunk of blueprint code i always get error messages on balatro that i cant seem to fix

stoic fulcrum
#

i tried adding a key check and replacing destroyed_joker = self with destroyed_joker = key but that didn't work either

#

but the pic is the original func

manic rune
# stoic fulcrum

doesnt seem like theres context.card in your SMODS.calculate_context

#

change context.card to context.srio.destroyed_joker, i think

loud gorge
#

how do i add new cards (i used abstract as a base so thats why its that joker i assume)

formal parrot
#

You didn’t define an atlas

#

So the mod uses default sprite

manic rune
#

add new cards?

stoic fulcrum
loud gorge
formal parrot
#

Default position of abstract joker is x=3,y=3

manic rune
#

no, like, what do you mean by "add new cards"

#

😭

manic rune
loud gorge
formal parrot
manic rune
#

:3

formal parrot
#

See

manic rune
#

well, whatever you are doing looks correct then

manic rune
native zinc
#

is there a variable for vouchers redeemed

#

actually i should just count it myself

manic rune
#

SMODS.calculate_context({card = self, srio = {destroying_joker = true}})

native zinc
#

is there a context for redeemed vouchers

formal parrot
#

I need to make a guide on how to mod for dummies

#

Lua is kinda hard

loud gorge
#

how do u add atlas's

manic rune
formal parrot
#

You need to make a png first

#

With all your jokers

loud gorge
#

ohhhh so its like a spritesheet of some sort?

formal parrot
formal parrot
manic rune
#

my video didnt cover making atlas or anything lol

#

just setting up your vsc for modding, and what to do in general

stoic fulcrum
#

oh fuck yeah it works

#

thank you PatPray

loud gorge
# formal parrot Yes

does it use the assets 1x and 2x folder? or how does that work (because other mods use a folder like that)

stoic fulcrum
#

i can finally move on to the next joker AUUGHH

manic rune
#

G.vouchers.cards

feral tree
#

trying to make a Tarot card that creates a random joker from a pool

#

Does SMODS.add_card not work for this or is there something wrong with my code?

candid sleet
#

how do i format these into 1, it doesn't seem to be working very well (ignore joker description it's copy-pasted)

#

Right now it just gives the blueprint effect

sand sandal
#

got it up again

lament agate
#

how do you detect if tarot is used?

#

especially Hanged Man?

stoic fulcrum
#

how would i check for the amount of chips(or mult) the last played hand got?
(i want to make a joker that adds the chips of the last played hand, and resets after the round ends)
edit: nvm, figured it out
(the solution is card.ability.extra.chips + hand_chips under context.after)

sand sandal
lament agate
manic rune
#

and

if context.other_consumeable.config.center.key == "c_hanged_man" then
#

i think thats hanged man's key?

native zinc
#

you can claim multiple blanks

#

i've done this instead

manic rune
#

i see

#

does that count for the first blank voucher, by the way?

native zinc
#

it should? idk

manic rune
#

i think the blank voucher that appears after you redeemed all vouchers is the same one with the normal blank voucher

native zinc
#

yeah but it probably should count as redeeming a voucher different times

#

so that's why i didn't use card area

manic rune
#

i would run through G.vouchers.cards, store the keys in a table so that it can ignore the same key lol

native zinc
#

:P

eager otter
#

Hi,can someone help with a code snippet for, disabled until joker is sold in Lua,I am new to it, thank you

red flower
#

like verdant leaf?

sand sandal
#

lovely

eager otter
tawdry oriole
#

i'm trying to use larger-than-usual sprites for blinds and everything goes smoothly up until the blind is actually played; the atlas searches through the usual 68x68 dimensions rather than the custom ones defined in the smods atlas. any clue why it does this? (ignore the blind sprite)

#

(as shown here, i drew a sad smiley to represent the normal dimensions; it indeed goes thru them instead of the custom ones)

#

(the sad smiley is in the top left corner)

pastel kernel
#

Which one is cooler?

merry raven
#

The left one

cobalt iron
#

Why does this happen?

snow vale
#

how can i add an extra button to a joker like this one?

pastel kernel
#

i won't be making the funny legendary effect because i would probably struggle with atlas placement

daring fern
snow vale
#

what do i have to change in the function?

daring fern
snow vale
#

well yeah

#

ive learnt how the basic hooking works, but idk what i have to change for it to do so

#

is there any mod that adds that?

manic rune
#

joyousspring

#

good luck champ

snow vale
#

thanks

distant rock
#

How would I make jokers draw specific cards face down? I've figured out how boss blinds do it but how can I make a Joker do that?

pastel kernel
#

redid joker sprite

snow vale
manic rune
#

uh

#

a lot

snow vale
#

cool

#

imma base on rng then

#

actually where could i find the hook

daring fern
#

Why does this function not work?:

#

It sometimes doesn't do anything and sometimes it reduces the value.

pastel kernel
#

mockup description

daring fern
#

Which is the opposite of what I want.

snow vale
distant rock
#

Yorick on steroids

pastel kernel
#

i will nerf the joker to have it 1 mult

snow vale
snow vale
pastel kernel
#

xmult

snow vale
#

still a lot 😭

pastel kernel
#

i'm not making super balanced jokers

snow vale
#

yeah, i realised

#

that card probably has the power of 3 legendary joker all joined up

#

or more

pastel kernel
#

all except for like chicot and triboulet

zealous glen
#

Weakest Cryptid Joker

distant rock
#

That's 5 Yoricks and kinda 2 perkeos

snow vale
daring fern
snow vale
#

but at least cryptid made the op cards a different rarity, as it's not the same level

pastel kernel
#

it's more like if hologram and perkeo used the potara

snow vale
#

is N' online?

gaunt thistle
sand sandal
snow vale
#

@red flower where in your code do you hook the G.UIDEF.use_and_sell_buttons

pastel kernel
#

specifically the strength card

#

otherwise the emperor

daring fern
daring fern
snow vale
#

found it

#

oh

distant rock
#

How do I make a Joker that mimics the Marks effect of drawing face cards flipped?

snow vale
#

holy moly the hook is really messy (for me)

midnight coyote
#

how would i look at the suits in a deck

snow vale
#

oh

#

sry then

red flower
#

i hook card:highlight and have my own create buttons function

snow vale
#

oh ok

stoic fulcrum
#

how would i make it so my calculate only works if all cards played are numbered? (so no face cards or ace)

daring fern
spring lantern
gaunt thistle
#

are you talking about the ref_table[ref_value] line?

midnight coyote
#

if i could have a way to get all the suits then i could in theory just iterate over that

gaunt thistle
red flower
midnight coyote
#

i’m basically checking for unique suits in a full deck

daring fern
gaunt thistle
#

like this line seems suspect because it could fire aok as expected but not do anything because of your default values

stoic fulcrum
midnight coyote
#

would something like this work

red flower
#

don't use context.individual and iterate over context.scoring_hand directly in joker_main

midnight coyote
#

no it wouldnt

#

no

#

i need to compare it with just the key

#

oh

#

just if == k

#

yeah?

#
CHAR.FUNC.check_suits_deck = function()
    local cards_of_suits = {}
    for  i=1,#G.playing_cards do
        for k,v in pairs(SMODS.Suits) do
            if G.playing_cards[i].base.suit == k then
                cards_of_suits[k] = (cards_of_suits[k] or 0) + 1
            end
        end
    end
end
red flower
#

why do you need to compare it with SMODS.Suits

midnight coyote
#

im checking if the card has the suit, and if it does, im incrementing a spot in the 'cards_of_suits' table that correlates the the suit being checked

wind steppe
#

how do i show a description of a red seal in a deck on hover?

midnight coyote
#

im not comparing it with SMODS.Suits, more just using the name in SMODS.Suits

#

thats the goal i mean

red flower
daring fern
tired kestrel
midnight coyote
#

oh that makes sense actually

zealous glen
midnight coyote
#

yeah

tired kestrel
#

might as well add godzilla, litteraly.

midnight coyote
#

yeah i get it

#

im doing too much

wind steppe
#

i want it to show up when i hover over specific text

#

like {C:attention,T:m_steel}Steel{} for Steel Cards

midnight coyote
#

wait how would i handle cards without suits

wind steppe
midnight coyote
#

just a nil check?

daring fern
red flower
midnight coyote
#
CHAR.FUNC.check_suits_deck = function()
    local cards_of_suits = {}
    for  i=1,#G.playing_cards do
        if not SMODS.has_no_suit(G.playing_cards[i]) then
            cards_of_suits[G.playing_cards[i].base.suit] = (cards_of_suits[G.playing_cards[i].base.suit] or 0) + 1
            
        end


    end
    return cards_of_suits
end
stoic fulcrum
daring fern
red flower
#

there's no context.other_card in joker_main, also you're returning as soon as you find 1 numbered card

stoic fulcrum
#

so how would i iterate it then? if i remove context.other_card it just returns nil

#

and crashes

midnight coyote
#

i would maybe make a table of the numbered cards and check if the table containing numbered cards is equal to the cards being scored

midnight coyote
#

i would maybe iterate over scoring_hand to see if not face

stoic fulcrum
midnight coyote
#

rather than using get_id

red flower
#

that's more mod friendly

midnight coyote
merry raven
#

What context is used to check for the end of a blind

midnight coyote
#

simple

midnight coyote
red flower
#

ace is also not a face so it's the same check

merry raven
midnight coyote
#

if im not mistaken, aces are considered 14s?

red flower
#

yeah

midnight coyote
#

yeah

#

alright

#

so i think that line would work

pastel kernel
#

How do you apply the spectral texture on a joker?

midnight coyote
#

because that makes it play nice with stuff like modded ranks and pareidolia

daring fern
stoic fulcrum
#

doing it like this crashes the game, saying length is a nil value
first i've seen that

#

probably a syntax error on the iterate line

stoic fulcrum
midnight coyote
#

that was a placeholder

daring fern
# stoic fulcrum

Remove [i] from the top of the for loop and replace card in the for loop with context.scoring_hand[i]

midnight coyote
#

please replace it with the card you are attempting to iterate over, additionally, your iteration is wrong

stoic fulcrum
daring fern
midnight coyote
distant rock
#

It doesn't have all of them sadly

stoic fulcrum
daring fern
#

Except in the return.

stoic fulcrum
#

you meant the if statement inside the for loop? that's why i was confused

midnight coyote
#

yes, card was meant to be a placeholder

#

in the function card will always reference the card thats doing the calculation

#

in this case, the joker

stoic fulcrum
#

fixing it to this changed nothing, it still triggers if face/ace are present

midnight coyote
#

hmm

#

its checking over each card wrong

daring fern
midnight coyote
#

its jumping out if one card fufills the if condition

#

try playing with a full hand of aces

#

and see what it does

pastel kernel
daring fern
stoic fulcrum
#

i can't do that if the hand i'm using is a straight lol

midnight coyote
#

okay

daring fern
# pastel kernel yes
SMODS.DrawStep{
    key = 'boostershader',
    order = 10,
    func = function(self)
        if self.config.center.key == "j_modprefix_key" then
            self.children.center:draw_shader('booster',nil, self.ARGS.send_to_shader)
        end
    end
}
daring fern
tawdry oriole
#

how can you check if a certain joker is owned?

midnight coyote
#
if context.joker_main and (next(context.poker_hands[card.ability.extra.poker_handp])) then
  local passed = false
  for i=1,#context.full_hand do
    if context.full_hand[i]:is_face() or context.full_hand[i]:get_id == 14 then
      passed = true
    end
  end
  if not passed then
    return {
      xmult = card.ability.extra.Xmult
    }
  end
end
pastel kernel
daring fern
candid sleet
daring fern
pastel kernel
#

no not the SMODS joker

#

sorry let me rephrase myself

#

if i add this to the lua

#

which contains the code for both the Atlas and the Joker

#

it will show the shader

hard mica
#

how can i check if all played cards are hearts?

daring fern
daring fern
floral cobalt
#

is there a function to force end of game

#

like, if a joker is destroyed, lose the run

daring fern
stoic fulcrum
#

but hey this is good progress

floral cobalt
#

lose_run()?

daring fern
floral cobalt
#

then?

faint yacht
floral cobalt
#

what's the function's name?

stoic fulcrum
#

i thought the or check covered that think2
but i'll try that and another idea i got

midnight coyote
#

how do i include a range with psuedo random

#

like a range of numbers it can pick from

hard mica
#

this doesnt work? why

daring fern
hard mica
#

is it different?

stoic fulcrum
#

sick, this worked mariYOOOOO

pastel kernel
#

how do i write code here as a block?

daring fern
midnight coyote
#

please do not do it this way

#

check for face card first, then check for ace

pastel kernel
#
--- STEAMODDED HEADER
--- MOD_NAME: Minos Prime
--- MOD_ID: minos_prime
--- PREFIX: minos
--- DESCRIPTION: JUDGEMENT, no not the Tarot Card.
--- AUTHOR: [FirstTry]

SMODS.Atlas {
    key = "minos",
    path = "minos_prime.png",
    px = 71,
    py = 95
}

SMODS.Joker {
    key = "minos_prime",
    atlas = "minos",
    rarity = 4,
    cost = 8,
    discovered = true,
    unlocked = true,
    eternal = true,
    blueprint_compat = true,
    pos = { x = 0, y = 0 },

Joker doesn't show

stoic fulcrum
pastel kernel
#

assets are in proper place

stoic fulcrum
#

if it messes with other mods i don't really care too much about that

midnight coyote
#

if card:is_face() then and then after that if condition if card:get_id() == 14

midnight coyote
#

makes everything faces

#

for instance

stoic fulcrum
#

the card's exact description is "numbered cards"

#

so pareidolia shouldn't have any effect

#

i'll try that though

midnight coyote
#

this is still the 'proper' way

midnight coyote
#

use a metadata.json file

stoic fulcrum
daring fern
midnight coyote
pastel kernel
candid sleet
midnight coyote
hard mica
tawdry oriole
#

i tried using vanillaremade's effect of the juggler (to gain +1 hand per round) but it didn't work, anyone knows how it works?

stoic fulcrum
#

otherwise jokers like scholar or fibonacci would be completely worthless with pareidolia

midnight coyote
#

your card is designed to only trigger if numbered cards, or non face cards

#

are played

stoic fulcrum
#

no, non-face cards are nowhere in the description

#

jack, king and queen are inherently not numbered

midnight coyote
#

okay, do it however, but this is confusing me

worthy stirrup
#

How can i keep track of how many times a card is played, not triggered but played?

faint yacht
stoic fulcrum
#

maybe i should make the description very long and change it to "if played hand only contains 2, 3, 4, 5, 6, 7, 8, 9 or 10" since i guess this is too confusing think2

midnight coyote
stoic fulcrum
#

i guess that works too

hard mica
worthy stirrup
midnight coyote
#

how do i make pseudorandom fetch a range

#

of numbers that i defined

#

i wanna make it higher than just 0.00 to 1.00

manic rune
#

pseudorandom("seed", min, max)

daring fern
midnight coyote
faint yacht
manic rune
#

i never realized how many people made their own "change values in a joker" function

#

i guess im gonna try making my own too

pastel kernel
#

what do i name my json

manic rune
#

anything

midnight coyote
manic rune
#

:3

#

i made my own table.equal function and im equally proud of it

midnight coyote
#

sweet

#
function CHAR.FUNC.recursive_apply_num(table, modi, op, visited)
    visited = visited or {}
    if type(table) ~= "table" then return table end
    if visited[table] then return table end
    visited[table] = true

    for k, v in pairs(table) do
        local current_value = table[k]

        if type(current_value) == "table" then

            CHAR.FUNC.recursive_apply_num(current_value, modi, op, visited)
        elseif type(current_value) == "number" then

            local is_old_key = type(k) == "string" and k:find("^old_")
            if not is_old_key then
                table['old_' .. tostring(k)] = current_value
                table[k] = CHAR.FUNC.op(op, current_value, modi)
            end
        end
    end
    return table
end



function CHAR.FUNC.change_card_values(card,mod,operation,reset)


    -- OBJECTIVES --
    --[[ the conventionally changable card values are stored in config, or ability.
    I'd rather use ability as that's going to ensure the values are reset when the run is.
    I need to 'scan' ability for certain values, throw out the base game ones that have no influence on how the card actually works,
    then change them through mod, and 'save' the original values for later reapplication. Perhaps by prefixing the original values with old_?
    so I need to save the card's ability table temporarily, probably manually check for things that all cards have, then only change the leftovers,
    then finally tack it back onto the card.
    ]]
    local old_table
    if card then
        old_table = card.ability

    else
        return
    end
    if reset then
        if type(old_table.extra) == 'table' and old_table.extra.flag then

            local curr_val = {}
            for k, v in pairs(old_table.extra) do
                if not k:find("^" .. "old_") and type(old_table.extra[k]) == 'number' then
                    curr_val[k] = v

                end
            end
            for k,v in pairs(curr_val) do
                old_table.extra[k] = old_table.extra["old_"  .. k]
            end
            old_table.extra.flag = nil
            return old_table
            else if type(old_table.extra) == 'number' then
            if old_table.old_extra then
                old_table.extra = old_table.old_extra
                return old_table.extra
            end

        end
        end

    end
    if type(old_table.extra) == "table" and not old_table.extra.flag then
        old_table.extra = CHAR.FUNC.recursive_apply_num(old_table.extra,mod,operation)
        old_table.extra.flag = true
        return old_table

        else if type(old_table.extra) == 'number' then
            old_table.old_extra = old_table.extra
            old_table.extra = CHAR.FUNC.op(operation,old_table.extra,mod)
            return old_table

    end

    end
end
#

this is my function

manic rune
midnight coyote
#

it basically recursively changes card.ability.extra

tawdry oriole
#

i'm not really sure why this doesnt work, but its supposed to check for two existing jokers and give one or another mult based on the result

manic rune
#

is this an enhancement

#

i wish people would tell if their code is from enhancement, edition or joker first, since the contexts they use are different 😭

tawdry oriole
#

ohh no its a joker

#

my bad

manic rune
#

jokers dont use main_scoring, im pretty sure

lament agate
#

whats the key for negative edition again

manic rune
#

e_negative

lament agate
#

thaks

tawdry oriole
#

oh wait yeah it doesnt use main_scoring

#

my bad

manic rune
tawdry oriole
#

thats what i was looking for

#

thank you

faint yacht
manic rune
#

but also, your if statements are weird

#

actually ali got it, im gonna go continue coding :3

#

thanks

tawdry oriole
#

i figured if the first conditions return something it won't continue the function

daring fern
lament agate
#

yall the goats fr

faint yacht
pastel kernel
#

ok

#

so it's an atlas problem

stoic fulcrum
#

is there a context that restarts the round? (as opposed to being saved by mr. bones)

faint yacht
gaunt thistle
daring fern
candid sleet
tawdry oriole
#

thanks

manic rune
#

🤔 that seems to work

stoic fulcrum
gaunt thistle
gaunt thistle
#

either way they'll need to reset the deck and stuff

manic rune
#

is this correct

stoic fulcrum
#

will look into that code card

faint yacht
manic rune
#

🤔 what do you mean by that actually

faint yacht
#

Mine has it.

local function toga_subtable(ttable, foundmodified, increase, depthiter)
    depthiter = depthiter or 1
    if depthiter > 32 then return end -- Just in case.
    for k, v in pairs(ttable) do
        if type(v) == 'number' then
            local rplc = v*(1+increase)
            ttable[k] = rplc
            foundmodified = true
        elseif type(v) == 'table' then
            toga_subtable(v, foundmodified, increase, depthiter)
        end
    end
end
pure salmon
#

i want a joker that halves cashout money, what variable do i need to change to do that?

pastel kernel
hard mica
#

so i want to make a joker that gives a big reward by guessing which randomized hand ,the player has to do , so like if the hand is a flush , if the player guesses it then they receive the big reward , but i wanna know how i can randomize the hands and then check for that randomized hand?

pastel kernel
#

i'm stumped

daring fern
pure salmon
worthy stirrup
#

Not sure if this will work, im trying to check when a card would be destroyed during the scoring part and have it be destroyed, im sorry if this isnt worded the best

    calculate = function(self, card, context)
        if context.main_scoring then
            print(card.ability.extra.PlaysLeft)
            card.ability.extra.PlaysLeft = card.ability.extra.PlaysLeft - 1
        end
        if context.destroy_card and context.destroy_card == card then
            if card.ability.extra.PlaysLeft == 0 then
                
            end
        end
    end,
}
#

I also am not sure of what to return to have the card be destroyed

#

this is under an enhancement

pure salmon
#

return { remove = true } i think

worthy stirrup
pure salmon
#

destroy_card is the bane of my existence

worthy stirrup
#

real

daring fern
hard mica
daring fern
midnight coyote
simple helm
#

how can i make to create a joker that when i adquire X joker adds xmult?

hard mica
#

how can i check if a run started?

daring fern
simple helm
#

sorry, i dont know how to read :P

hard mica
simple helm
daring fern
vast bough
#

can anybody think of a joker that has a random chance, and if that random chance succeeds, it does multiple effects. also jokers that have a random chance to do an additional effect within the same context (gros micheal doesnt count because of different contexts). i just need some good code examples to look at

hard mica
pastel kernel
daring fern
# hard mica how can i?
local oldstartrun = Game.start_run
function Game:start_run(args)
    local g = oldstartrun(self, args)
    return g
end
manic rune
#

🤔 i think this check might be a bit too unnecessary

midnight coyote
hard mica
vast bough
daring fern
hard mica
daring fern
daring fern
stoic fulcrum
#

seems the game over triggers before this can take effect, would i need to check for G.GAME.blind.chips =~ 1 with 0 hands instead?

vast bough
daring fern
pastel kernel
#
SMODS.Atlas {
    key = "minos_prime",
    path = "minos_prime.png",
    px = 71,
    py = 95
}

SMODS.Joker {
    key = "minos_prime",
    atlas = "minos_prime",
    rarity = 4,
    cost = 8,
    discovered = true,
    unlocked = true,
    eternal = true,
    blueprint_compat = true,
    pos = { x = 0, y = 0 },
{
    "id": "minos_prime",
    "name": "Minos Prime",
    "displayname": "Minos Prime Joker Mod",
    "author": [
    "FirstTry"
  ],
    "description": "JUDGEMENT, no not the Tarot Card",
    "prefix": "minos_prime",
    "main_file": "minos_prime.lua",
    "version": "1.0.0",
    "dependencies": [
        "Lovely (>=0.7)",
        "Balatro (>=1.0.1o)"
    ],
}
quartz anvil
#

heyy, does anyone know how to make a deck have only modded jokers available?

daring fern
quartz anvil
stoic fulcrum
daring fern
stoic fulcrum
#

(still need to add all the other checks but i should probably take care of this first)

hard mica
#

how can i check when i have the joker in my joker slots?

daring fern
faint yacht
#

-# Not exactly prettiest in terms of code, but functional.

stoic fulcrum
# stoic fulcrum

if i can't fix this then i may need to rebalance the joker and make this a feature because it's kinda cool

pastel kernel
#

man.

quartz anvil
hard mica
daring fern
stoic fulcrum
#

(yes this counts down all the way to 1, and yes it's as ugly as it looks)

hard mica
pastel kernel
#

OHHHH

#

IT WAS BECAUSE I NAMED THEM AS X1 AND X2

thorn furnace
#

Hey there everyone
I made this web-based mod manager thing if you wanted to check it out
I think it's just about done
Enjoy I guess
Wasn't sure where to put this

hard mica
#

pretty cool

thorn furnace
hard mica
#

anyone know how i can check when i first get my modded joker in the joker slot?

stoic fulcrum
snow vale
#

please someone tell me what do i have to change in order to make the button say DEAL

wind steppe
#

why doesnt my achievement work?

SMODS.Achievement{
    key = 'nineelevenplus',
    bypass_all_unlocked = true,
    hidden_name = true,
    hidden_text = false,
    reset_on_startup = true,
    unlock_condition = function(self, args)
        return (args.type == 'nineeleven') and (os.date("%m/%d") == "9/11")
    end
}
worthy stirrup
#

i know j_ is for jokers, but whats the one for enhacnements?

tawdry oriole
#

how do you create a consumable?

hollow turtle
tawdry oriole
#

neat, thanks

worthy stirrup
tawdry oriole
#

oh really?

#

that seems odd

worthy stirrup
#

yea

pastel kernel
#

i'm having a problem with my joker lua

#
    calculate = function(self, context)
        if context.joker_main then
            return {
                X_mult = self.config.extra.Xmult or 1,
                message = "X" .. self.config.extra.Xmult
            }
        end
    end,
    on_discard = function(self, context)
        if G.GAME and G.GAME.current_round and G.GAME.current_round.discards_used > 0 then
            local created = 0
            for i = 1, G.GAME.current_round.discards_used do
                for j = 1, 2 do
                    local card = create_card("Spectral", G.consumeables, nil, nil, true)
                    card:set_edition({ negative = true })
                    G.consumeables:emplace(card)
                    created = created + 1
                end
            end
            local gain = created * (self.config.extra.Xmult_mod or 2)
            self.config.extra.Xmult = (self.config.extra.Xmult or 1) + gain
            return {
                message = localize("k_upgrade_ex"),
                colour = G.C.MULT
            }
        end
    end,
    loc_vars = function(self, info_queue, card)
        return {
            vars = { card.ability.extra.Xmult }
        }
    end
}
tawdry oriole
#

how could i play a sound when using a consumable? (like a custom sound)

stoic fulcrum
#

huh

#

today i learned that if you have 5 mr bones, they all self destruct at the same time

#

kinda wack but oh well

formal parrot
#

They have the same context

#

So yeah

valid forge
#

anyone got a simple reference for how to make a deck start off by giving you a tag?

pure salmon
#

i think you can just do this

valid forge
#

ah awesome

#

will give it a whirl

worthy stirrup
#

I got the first part to work, but the second part doesnt add to the Xmult

        if context.before then
            for _,v in ipairs(context.scoring_hand) do
                v:set_ability("m_OAL_Damaged")
                SMODS.calculate_effect({message = "DAMAGED!"}, v)
            end
        end
        if context.main_scoring then
            for _,v in ipairs(context.scoring_hand) do
                if SMODS.has_enhancement(v, "m_OAL_Damaged") then
                    card.ability.extra.Xmult = card.ability.extra.Xmult + 0.1
                end
            end
        end
autumn berry
#

the ui system has been kicking my butt for the past few hours. Why is nothing consistent

lucid owl
#

localthunk made it himself 😔

autumn berry
#

(not really expecting an answer, I'm just venting, it's so stupid how all these check boxes have the same config yet appear differently)

worthy stirrup
#

i have that, but that part is just adding to it and not adding to the scroing

#

scoring

pure salmon
#

because you need to have a return { xmult = card.ability.extra.Xmult }

sturdy compass
worthy stirrup
#

This is what I have, does this not work?

    calculate = function(self, card, context)
        if context.before then
            for _,v in ipairs(context.scoring_hand) do
                v:set_ability("m_OAL_Damaged")
                SMODS.calculate_effect({message = "DAMAGED!"}, v)
            end
        end
        if context.main_scoring then
            for _,v in ipairs(context.scoring_hand) do
                if SMODS.has_enhancement(v, "m_OAL_Damaged") then
                    card.ability.extra.Xmult = card.ability.extra.Xmult + 0.1
                end
            end
        end
        if context.joker_main then
            return {
                xmult = card.ability.extra.Xmult
            }
        end
    end,
wind steppe
#

how would i debuff duplicate jokers in a boss blind?

lucid owl
#

if the table only has one joker of its type, clear the table etc

formal parrot
#

@pastel kernel Send full code

#

Does it crash ?

#

Code looks fine

#

Whats the main issue

pastel kernel
formal parrot
#

Minos prime bruh😭

pastel kernel
#

no xmult after creating spectrals

formal parrot
#

Mhm

#

I see

pastel kernel
#

this is the joker sprite

obtuse silo
#

mnos...

sturdy compass
worthy stirrup
#

oh my god, why didnt i think of that

modern kindle
#

because youre so SILLY

#

THATS why

sturdy compass
#

Sillay

worthy stirrup
#

horray it works!

formal parrot
#
    key = "minos_prime",
    atlas = "minos",
    rarity = 4,
    cost = 8,
    discovered = true,
    unlocked = true,
    eternal = true,
    blueprint_compat = true,
    pos = { x = 0, y = 0 },
    config = {
        extra = {
            Xmult = 1,
            Xmult_mod = 2
        }
    },
    loc_txt = {
        name = "Minos Prime",
        text = {
            'This Joker creates 2 {X:dark_edition,C:white}Negative Spectral{} cards for every discard used.',
            'This Joker also gains {X:mult,C:white}X2{} Mult for every {C:spectral}Spectral{} card created.',
            '{C:inactive}(Currently {X:mult,C:white}X#1#{} Mult)'
        }
    },
    loc_vars = function(self, info_queue, card)
        return {
            vars = { card.ability.extra.Xmult, card.ability.extra.Xmult_mod * 2 }
        }
    end,
    calculate = function(self, context)
        if context.joker_main then
            return {
                Xmult = self.ability.extra.Xmult or 1,
                message = "X" .. (self.ability.extra.Xmult or 1)
            }
        end
    end,
    on_discard = function(self, context)
        if G.consumeables then
            for j = 1, 2 do
                local card = create_card("Spectral", G.consumeables, nil, nil, nil, nil, nil, 'unb')
                card:set_edition({ negative = true }, true)
                G.consumeables:emplace(card)
            end
            self.ability.extra.Xmult = (self.ability.extra.Xmult or 1) + 2 * self.ability.extra.Xmult_mod
            return {
                message = localize("k_upgrade_ex"),
                colour = G.C.MULT
            }
        end
    end
}

SMODS.DrawStep {
    key = "minos_prime_draw",
    order = 10,
    func = function(self)
        if self.config.center.key == "minos_prime" then
            self.children.center:draw_shader("negative", nil, self.ARGS.send_to_shader)
        end
    end
}``` @pastel kernel
#

Try this

formal parrot
sturdy compass
#

I just be having a big massive brain

formal parrot
#

Maximus brain

#

You can say

sturdy compass
#

Perchance

pastel kernel
#

It should create a negative spectral whenever you use a discard

#

2 of them actually

formal parrot
#

Oh

#

You can have edition

#

In the create card

stoic fulcrum
#
    key = "deardanielsr", --minda note: fix blueprint not working properly even though it's compatible
    loc_txt = {
        name = 'Dear Daniel',
        text = {"{X:mult,C:white}X4{} Mult if",
            "played hand contains",
            "a {C:red}King of Hearts{} and",
            "a {C:red}Queen of Hearts.{}",
            "If {C:red}Hello Kitty{}",
            "is in your deck,",
            "{X:mult,C:white}X8{} Mult instead,"}
    },
    pos = { x = 0, y = 0 },
    rarity = 2,
    atlas = 'sanriocards',
    blueprint_compat = true,
    cost = 6,
    config = { extra = { Xmult = 4, Xmultkitty = 8, Xmultreset = 4 } },
    loc_vars = function(self, info_queue, card)
        return { vars = { card.ability.extra.Xmult, card.ability.extra.Xmultkitty, card.ability.extra.Xmultreset } }
    end,
    calculate = function(self, card, context)
        if next(SMODS.find_card("j_srio_hellokittysr")) and next(SMODS.find_card("j_srio_deardanielsr")) then
            card.ability.extra.Xmult = card.ability.extra.Xmultkitty
        end
        if not next(SMODS.find_card("j_srio_hellokittysr")) and next(SMODS.find_card("j_srio_deardanielsr")) and card.ability.extra.Xmult == 8 then
            card.ability.extra.Xmult = card.ability.extra.Xmultreset
        end
        if context.individual and context.cardarea == G.play then
              for i = 1, #context.scoring_hand do
                 if context.other_card:get_id() == 12 and context.other_card:is_suit("Hearts") then
                        card.ability.extra.kings = true
                 elseif context.other_card:get_id() == 13 and context.other_card:is_suit("Hearts") then
                        card.ability.extra.queens = true
                 end
             end
        end
           if context.joker_main and card.ability.extra.kings == true and card.ability.extra.queens == true then
              card.ability.extra.kings = false
               card.ability.extra.queens = false
           return {
            Xmult = card.ability.extra.Xmult
          }
    end
  end
}```

real quick, is there any code in this joker that prevents it from working properly with blueprint?
formal parrot
#

Edition=“e_negative”

pastel kernel
#

And also grant x Mult every created spectral

formal parrot
#

Gain or do

pastel kernel
#

Gain

formal parrot
#

If gain then set your

wheat jewel
#

How can i edit the ante within a deck?

pastel kernel
#

Wait, replace card:set_edition to Edition:e_negative?

formal parrot
#

Add_card

#

You wanna add negative soectrals right?

pastel kernel
#

Yes

formal parrot
#

Let me check

#

1 second

hard mica
#

Anyone know how I can check when a joker is first placed in the joker slots

formal parrot
#
                func = function()
                    local card = Create_card(“Spectral”,G.consumeables,nil,nil,nil,nil,nil,’unb’),
                    
                    card:set_edition('e_negative', true)
                    card:add_to_deck()
                    
                    G.consumeables:emplace(card)
                    return true
                end```
#

@pastel kernel This is how i do it

pastel kernel
#

Where do I place that

formal parrot
#

Inside your for

#

Or add the for inside

#

Before local card = and end it after emplace

wintry solar
#

You should just be able to do SMODS.add_card({set = "Spectral", edition = "e_negative"})

pastel kernel
#

When you discard?

#

And two of them?

formal parrot
#

No

#

Put it in a for

#

And yes when you discard

faint yacht
#

...why does G.discard have a cap of 500 cards, anyway...

wind steppe
#

when is G.GAME.blind.triggered set?

wind steppe
red flower
worthy stirrup
#

How do i load in a shader again?

#

nvm im just blind

native zinc
red flower
native zinc
#

DI being 501 in roman numerals of course

wind steppe
red flower
#

it should be reset

faint yacht
red flower
# red flower it should be reset

well it resets after the blind if you want to trigger it more than once i think you need to also do it manually
i would check vanillaremade

sonic cedar
#

afternoon, all!
how would i have a joker save its own key to a table through a global event?

native zinc
#

?

native zinc
#

you can save anything to G.GAME

sonic cedar
# red flower elaborate?

basically when a joker calls an event i have global, i want to add code to that event that i have that saves the key of the joker that called it to a table

faint yacht
#

table[card.config.center.key] = true?

wind steppe
#
SMODS.Blind { -- The Singular
    key = "singular",
    dollars = 5,
    mult = 2,
    pos = { x = 0, y = 23 },
    boss = { min = 9 },
    boss_colour = HEX("6a3847"),
    calculate = function(self, blind, context)
        if not blind.disabled then
            if context.debuff_card and context.debuff_card.area == G.jokers then
                if context.debuff_card.config.center.key == "j_blueprint" or context.debuff_card.config.center.key == "j_brainstorm" then
                    blind.triggered = true
                    return {
                        debuff = true
                    }
                end
                local jimbos = SMODS.find_card(context.debuff_card.config.center.key, true)
                if #jimbos > 1 and context.debuff_card.config.center.key ~= "j_chicot" then
                    blind.triggered = true
                    return {
                        debuff = true
                    }
                end
            end
        end
    end
}

why doesnt this trigger matador?

native zinc
sonic cedar
#

i'll try your guys' solutions and let you know if it worked 👍

stoic fulcrum
#

kinda like a failsafe

sonic cedar
pastel kernel
native zinc
sonic cedar
#

bet

red flower
#

looking at vanillaremade none of the blinds set .triggered in context.debuff_card

#

it might be that

wind steppe
red flower
#

yes

#

that's what i said

wind steppe
#

oh i misread

#

where do i put it then

red flower
#

crimson heart does it in press_play

wintry solar
wind steppe
#

okay but the blind isnt always active

#

how do i check if its actually debuffed something

#

without making it trigger on perishable jokers

stoic fulcrum
#

does anyone have an example of the hook boss blind's effect?

#

i can't find it in vanilla remade

#

also looks like someone trolled the wiki lmao

wind steppe
wind steppe
stoic fulcrum
red flower
#

it did

stoic fulcrum
#

alr i'll check it out

faint yacht
stoic fulcrum
#

oh i didn't know that was a thing

#

sick

#

needs more promotion

red flower
wind steppe
tired kestrel
#

is this actually allowed?

#

for shader?

split panther
#
    G.GAME.chips = G.GAME.blind.chips
    G.STATE = G.STATES.HAND_PLAYED
    G.STATE_COMPLETE = true
    end_round()
end```
ive been using this code to end the round on card sold, but obv you can sell the card outside of the round (which breaks things), how do i make it so that it only triggers in round?
red flower
#

or do like crimson heart which assumes that it always works as long as there is a target

faint yacht
tired kestrel
pastel kernel
split panther
sonic cedar
#

wait im an idiot i didnt initialize the table

formal parrot
#

Card:flip()

native zinc
sonic cedar
sonic cedar
formal parrot
#

You didn’t initialize the table bro😭

native zinc
#

i mean yeah that's what she said already

#

many people figure out what's wrong exactly the moment they ask lol it's expected

sonic cedar
#

pain and suffering

#

i feel like i'm missing something

spice wadi
wind steppe
#

why does this crash (in a boss blind)

spice wadi
native zinc
#

otherwise it's not gonna reset on new runs

sonic cedar
#

i do in fact have a hook into it already so i'll just put it in there

sonic cedar
wind steppe
#

flint and steel

spice wadi
#

and this

#

im assuming thats not real

wind steppe
#

these are all wrong

#

oh someone changed the plant already

tall jewel
#

working towards something interesting

pastel kernel
wind steppe
wind steppe
tall jewel
#

gonna add support for scrolling through them too

sonic cedar
wind steppe
tall jewel
#

to figure it out

sonic cedar
#

500 small blinds

formal parrot
#

@wind steppe

wind steppe
formal parrot
#
    blind.triggered = true
end```
wind steppe
tall jewel
#

well, something went wrong and uh

native zinc
formal parrot
wind steppe
tall jewel
#

yeah thats intentional kinda

sonic cedar
wind steppe
#

also those are the same big blind

tall jewel
#

one of them is normal big (the one on the right)
the other is a mix of boss blind and big blind (left)

tall jewel
native zinc
placid silo
native zinc
#

does your start run just do it every ante

red flower
sonic cedar
native zinc
#

interesting

sonic cedar
#

i mean it IS a separate conditional so maybe i just
dont need it

#

actually yeah this'll probably work fine

wind steppe
red flower
#

damn

tired kestrel
#

something insane happened that I tried to make a shader that really works and I got this for the dissorance_mask:

#

really cursed in a way.

wind steppe
tired kestrel
#

So does it really be needed?

#

as I saw on tutorial?

#

or was there something I didn't know about?

wind steppe
#
SMODS.Blind { -- The Singular
    key = "singular",
    dollars = 5,
    mult = 2,
    pos = { x = 0, y = 23 },
    boss = { min = 9 },
    boss_colour = HEX("6a3847"),
    calculate = function(self, blind, context)
        if not blind.disabled then
            if context.debuff_card and context.debuff_card.area == G.jokers then
                if context.debuff_card.config.center.key == "j_blueprint" or context.debuff_card.config.center.key == "j_brainstorm" then
                    context.debuff_card.ability.para_singular = true
                    return {
                        debuff = true
                    }
                end
                local jimbos = SMODS.find_card(context.debuff_card.config.center.key, true)
                if #jimbos > 1 and context.debuff_card.config.center.key ~= "j_chicot" then
                    context.debuff_card.ability.para_singular = true
                    return {
                        debuff = true
                    }
                end
            elseif context.press_play then
                for k, v in pairs(G.jokers.cards) do
                    if v.ability and v.ability.para_singular then
                        blind.triggered = true
                    end
                end
            end
        end
    end,
    disable = function(self)
        for _, joker in ipairs(G.jokers.cards) do
            joker.ability.para_singular = nil
        end
    end,
    defeat = function(self)
        for _, joker in ipairs(G.jokers.cards) do
            joker.ability.para_singular = nil
        end
    end
}
``` why does matador not trigger
tall jewel
#

matador Pray

tired kestrel
#

I was trying to figure out why dissolve_mask didn't work

#

162 code line is the dissolve_mask line

primal robin
tired kestrel
#

I don't understand.

hard mica
#

Does anyone know how to check if a joker has been placed in your joker slots for the first time ohno

tawdry oriole
#

whenever i activate this joker it prints the following error, not sure what's wrong

tired kestrel
red flower
tired kestrel
#

Can someone please help me I know this is the 2nd time doing a shader with proper verison but I've encountered na error with the dissolve mask.

#

or when it tries to return a dissolve mask

#

Hello?

#

help.

#

"void function cannot return a value" what does that even mean for dissolve mask error

#

has anyone encountered something like this before?e

red flower
#

i have no idea about shaders but that means you're trying to return a value in a void function (a function specified to have no return value)

tall jewel
#

i finally got it workies

hexed heath
tired kestrel
#

for something.

#

I might delete this once it gets resolved.

coarse plank
#

what would you put in your config if you wanted to do an indeterminate amount of retriggers?

pastel kernel
#

I should just give up on this joker.

tired kestrel
#

wait.

#

I think I figured out

pastel kernel
#

I couldn’t get it to work

tired kestrel
#

aaaaand. there's this

hard mica
hard mica
tall jewel
#

1000 small bliunds

#

go!

hard mica
formal parrot
tall jewel
#

im eventually going to make it so you can have arbitrary amounts of blinds

hard mica
tall jewel
#

per ante

hexed heath
formal parrot
#

Which one is the other one

quick scarab
#

Hey so my seal that I made prevented cards to be debuffed, but it doesnt seen to work out, anyone got any ideia in how to fix it?

    key = 'guard',
    atlas = 'Enhancers',
    pos = { x = 3, y = 0 },
    badge_colour = G.C.RED,
    calculate = function(self, card, context)
        if  context.debuff_card then
            return {
                card.prevent_debuff
            }
        end
    end
}
pastel kernel
#

Ok I think I wanna try again

hard mica
tall jewel
#

animated sprites

#

the method im going to use to let them scroll totally isn't just wrapping the blind choices in a Moveable object, clipping the object, and translating the choices uibox

#

im so stuoid

hard mica
tall jewel
modest iris
#

hello guys, i'm working on a joker that is supposed to convert all scoring cards into glass cards in the last hand, and also break them after the hand is scored but i'm having trouble with destroying the cards. does anyone have any tips on how can i achieve this effect?

hard mica
tired kestrel
tranquil gull
#

what are yall's thoughts on the balance of this

#

is it too strong or too weak or

#

feels too strong imo

#

lemme make that x0.01

#

so for example, scoring a king with no bonus card or whatever would add x0.02 mult

crisp coral
#

hard to gauge but that seems like a "+x0.08 per scored card"

worthy stirrup
#

How can i make it so Voucher's dont appear in the shop?

tranquil gull
#

how about with that?

crisp coral
#

x0.01 is weak without retrigs tho

tranquil gull
#

yea

#

ig

crisp coral
#

is this an unc

tall jewel
tranquil gull
#

it's a legendary

crisp coral
#

or rare

worthy stirrup
tranquil gull
#

so

tall jewel
#

is this for a deck or a challenge

tranquil gull
#

i'm trying to balance it for that

worthy stirrup
#

Joker

crisp coral
#

legendary??

tranquil gull
crisp coral
#

for a legendary x.04 is good imho

tall jewel
worthy stirrup
#

i said Joker

tall jewel
#

ah

pure salmon
#

what about bonus cards?

tranquil gull
#

bonus cards bust this wide open lol

pure salmon
#

do those give more than X0.25 mult? that’s busted as shit

tranquil gull
#

hmm

tired kestrel
#

How do you solve the "Shader uniform 'crystal' does not exist" situation?

tranquil gull
#

also hiker

#

both of those is why i wanted to make it less strong

tired kestrel
tall jewel
#

mb didnt see that,
you'd want to modify G.load_shop_vouchers

tranquil gull
#

i think x0.01 would be good?

tall jewel
north lodge
#

@tranquil gull I would do some statistical analysis on the average amount of cards played during a run and base it off of that, keeping in mind a target xmult that you think should be hit by ante 8 boss

placid silo
tranquil gull
#

yea they would

pastel kernel
#

i'll ask for help tomorrow

tranquil gull
#

problem is if i make it any lower it gets rounded in the number display

pastel kernel
#

i think i need to sleep

worthy stirrup
#

now i gotta find out how to set it back to 1 after the joker is sold

placid silo
#

also retriggers would break your joker as well

#

stone card red seal hanging chad pareidolia sock and buskin blueprint brainstorm

#

altho idk if pareidolia makes stone cards into face cards

hollow turtle
#

I added a custom deck skin and when I use the high contrast version, the face cards have their high contrast colors but the number cards and aces still use their regular low contrast colors, how do I fix that?

tired kestrel
#

wait I eventually figured out.

crisp coral
placid silo
hard mica
#

Does anyone know how to check for a joker that gets placed in your joker slots the first time ohno

hexed heath
sonic cedar
#

so uhhhhhhhhhhhhhhhhhhhh
nothing's getting added to the table

hard mica
placid silo
hard mica
sonic cedar
tired kestrel
#

woah. I never seen something like this before in the server.

#

or having this issue

#

what is this "Error" thing?

worthy stirrup
#

add a label to the loc_txt

#

like this

SMODS.Edition {
    key = "Loving",
    loc_txt = {
        name = "Love",
        text = {
            "Placeholder"
        },
        label = "Love"
    },
    shader = "OAL_lover",
}
placid silo
tired kestrel
#

gotcha

worthy stirrup
#

are you able to get a cards key with card.key

faint yacht
#

card.config.center.key

worthy stirrup
#

thank you

placid silo
# hard mica First time in the run

or you could do something like this:
on_buy then num_times_purchased +=1

if num_times_purchased <= 1 then
-insert code here-
this is pseudocode and wont actually work but I believe in you!

worthy stirrup
#

this is weirdly activating regardless of whats being sold

    calculate = function(self, card, context)
    if context.selling_card then
        if card.config.center.key == "j_OAL_Dummy" then
            print("I got sold")
        end
    end
formal parrot
#
    if context.selling_card == card then
        if card.config.center.key == "j_OAL_Dummy" then
            print("I got sold")
        end
    end
end```
placid silo
#

ty

worthy stirrup
#

oh

#

thanks

formal parrot
#

You can do

tired kestrel
#

Welp, guys I think I've done it that I've finally ported a shadertoy shader that is simple enough into the game.

formal parrot
#

Selling_self

#

Aswell

tired kestrel
#

while it didn't work what I'd originally thought

formal parrot
worthy stirrup
#

hm, doesnt seem to print anything,

#

weird

tired kestrel
#

for anyone knows what shadertoy I've made and ported to balatro

#

it's this.

#

I did my best to port this bad boy

worthy stirrup
#

volornoid texture (idk how its spelt)

tired kestrel
#

yes, I was trying to port this texture into balatro and of course what it came out was just only color alteration:

#

can't see any volornoids there

worthy stirrup
daring fern
tired kestrel
#

wait nvm

#

just found out something

tranquil gull
#

approx 1374.28 base chips based on a test run i just did

worthy stirrup
daring fern
# quick scarab bump this
SMODS.current_mod.set_debuff = function(card)
    if card.seal == "modprefix_key" then
        return "prevent_debuff"
    end
end
daring fern
quick scarab
#

ok let me try

tranquil gull
#

at 0.01x per 5 chips, it'll get to approx 3x by ante 8

#

that feels weak for a legendary

faint yacht
#

For making custom cardareas, I need to hook function Game:start_run(args), ya?

north lodge
daring fern
quick scarab
daring fern
quick scarab
#
SMODS.Seal {
    key = 'guard',
    atlas = 'Enhancers',
    pos = { x = 3, y = 0 },
    badge_colour = G.C.GREEN,
}

SMODS.current_mod.set_debuff = function(card)
    if card.seal == "guard" then
        return "prevent_debuff"
    end
end
daring fern
worthy stirrup
#

how do i check if a card bought is itself?

daring fern
worthy stirrup
#

oh

#

sorry

tawdry oriole
#

how do you use custom smods rarities?

worthy stirrup
#

how do i change how fast ante's scale?

daring fern
tawdry oriole
#

is the key supposed to be an integer?

daring fern
worthy stirrup
#

thank you

daring fern
tawdry oriole
#

and for a joker's rarity it's "[modprefix]_[raritykey]"?

tawdry oriole
daring fern
tawdry oriole
quick scarab
# daring fern It needs to be `modprefix_sealkey`

it didn't work

fnaf_guard_seal = {
                name = "Guard Seal",
                text = {
                    "Immune to debuffs",
                },
            }

SMODS.Seal {
    key = 'guard',
    atlas = 'Enhancers',
    pos = { x = 3, y = 0 },
    badge_colour = G.C.GREEN,
}

SMODS.current_mod.set_debuff = function(card)
    if card.seal == "guard" then
        return "prevent_debuff"
    end
end
daring fern
tawdry oriole
placid silo
faint yacht
#

...well, gotta hide this now.

glad osprey
#

am i doing this right

faint yacht
#

More or less, yeah.

glad osprey
#

how do i get the text in the box 😭

hard mica
placid silo
#

awesome! ^~^

near bay
#

why does it not like this

glad osprey
#

you dont need to add to xmult

#

just return the amount of xmult you want

#

also use pseudorandom instead of math.random

faint yacht
near bay
glad osprey
#

just put some unique string for that

#

thats the "seed" for that particular randomized thing

#

so if you used say a wheel of fortune it wouldnt mess with the shops

near bay
#

i understood half of the things you said

#

just so you know im completely new to this language so use as much detail as possible or else i might not understand

glad osprey
#

basically it keeps random things from affecting eachother

#

id say just throw the name of the card as the seed

near bay
glad osprey
#

no

#

well

#

the seed would wortk

#

but i prob woulnt use that for it

#

and

#

oh wait holdon

#

yea nevermind

#

forgot pseudorand can have min and max'

worthy stirrup
#

how come this isnt ranking up the cards in hand?

    if context.end_of_round then
        for _,v in ipairs(G.play) do
                SMODS.modify_rank(v, 1)
            end
        end
    end,
}
#

ive also tried G.hand

glad osprey
fierce frost
worthy stirrup
#

oh my god

glad osprey
#

to the function they are called in

#

instead of using a local use the jokers ability.extra table

fierce frost
glad osprey
#

show

fierce frost
#

one sec i can get a screenshot

glad osprey
#

you forgot to give the joker the config

#

thats where the ability table comes from

fierce frost
#

but this has worked for almost all of my other jokers

glad osprey
#

oh wait

#

i didnt see that you did

glad osprey
fierce frost
#

same thing; nil error

glad osprey
#

show

fierce frost
#

un momenta

normal dune
fierce frost
faint yacht
#

Is that crash on a fresh start?

glad osprey
normal dune
glad osprey
#

then why do you still have the metadata in the code

normal dune
#

i just don't remove it

fierce frost
glad osprey
#

probably should

daring fern
glad osprey
fierce frost
glad osprey
#

delete the joker

#

and create another

#

it may just not have the config

#

not in the code

#

in the game

#

like

#

sell it

fierce frost
#

oh

#

i thought you meant delete it from the code

glad osprey
#

no

fierce frost
#

ok so it works

#

but it also gives 0.5X mult for every card in hand and in the deck

#

somehow

glad osprey
#

context.joker_main and context.main_eval

#

or end of round

#

in that case

fierce frost
#

i feel i should've mentioned; it was at the end of round

glad osprey
#

end of round has contexts between every card lol

#

main_eval makes it so its just that card

fierce frost
glad osprey
#

yea

#

just

#

context.end_of_round and context.main_eval

daring fern
#

Seems to work perfectly now.

#

Is there a way to fix this incompatibility?

faint yacht
#

shiet.

red flower
#

if you don't instanciate it before loading it gets saved somewhere else

hybrid shadow
#

how would i structure the localization for a custom consumabletype in the localization file

red flower
#

check vanillaremade