#💻・modding-dev

1 messages · Page 390 of 1

bleak crane
#
SMODS.Back {
    key = "phantom",
    -- unlocked = false,
    loc_txt = {
        name = 'Phantom Deck',
        text = {
            "Start with {C:tarot}Crystal Ball{} and",
            "{C:tarot}Omen Globe{}",
            "start with an {C:spectral}Ectoplasm{} card",
            ""
        }
    },
    atlas = 'kamisdecks',
    pos = { x = 0, y = 0 },
    config = { extra = { vouchers = { 'v_crystal_ball', 'v_omen_globe' }, consumables = { 'c_ectoplasm' } } },
    loc_vars = function(self, info_queue, back)
        return { vars = { 
            localize { type = 'name_text', key = self.config.extra.vouchers[1], set = 'Voucher' },
            localize { type = 'name_text', key = self.config.extra.vouchers[2], set = 'Voucher' },
            self.config.extra.consumables[1]
        } }
    end,
    apply = function(self, back)
        for k, v in pairs(self.config.extra.consumables, self.config.extra.vouchers) do
            G.GAME.used_vouchers[v] = true
            G.GAME.starting_voucher_count = (G.GAME.starting_voucher_count or 0) + 1
            G.E_MANAGER:add_event(Event({
                func = function()
                    SMODS.add_card({ key = k })
                    back.apply_to_run(nil, G.P_CENTERS[v])
                    return true
                end
            }))
        end
    end
}

fixed it i think but i came across a new crash

long sun
#

there is no such thing iirc

#

i know there's a way to check though

red flower
#

SMODS.has_enhancement(card, "m_[name of enhancement]")

snow vale
#

that's lit my crash

long sun
red flower
#

that also support quantum enhancements

keen totem
#

how do i get if its unenhanced tho

red flower
#

to check if a card doesn't have any not next(SMODS.get_enhancements(card))

daring fern
long sun
#

ah i see

snow vale
#

can someone help plzz

daring fern
long sun
# snow vale can someone help plzz

here's what i did for one of my Jokers:

calculate = function(self, card, context)
    if context.first_hand_drawn then
      G.E_MANAGER:add_event(Event({
        func = function()
          local _suit = pseudorandom_element({ 'S', 'H', 'D', 'C' }, pseudoseed('famaliasu'))
          local _card = create_playing_card({ front = G.P_CARDS[_suit .. '_K'], center = G.P_CENTERS.c_base }, G.hand,
            nil, nil, { G.C.SECONDARY_SET.Enhanced })
          _card:set_seal('Purple', true)

          _card:set_edition(poll_edition('famaliaed', nil, true, true, nil))

          G.GAME.blind:debuff_card(_card)
          G.hand:sort()
          if context.blueprint_card then context.blueprint_card:juice_up() else card:juice_up() end
          return true
        end
      }))

      playing_card_joker_effects({ true })
    end
  end```
bleak crane
long sun
#

though, remove the edition and seal bits

elfin stratus
#

how can i make text yellow?

long sun
#

and also change the pseudoseed

bleak crane
long sun
#

or the yellow balatro uses that's more like an orange

elfin stratus
#

like the color used for money

keen totem
#

how do i change a card's enhancement?

long sun
#

right

#

{C:money}

bleak crane
#

{C:money}

daring fern
keen totem
elfin stratus
#

thanks

daring fern
keen totem
#
calculate = function(self,card,context)
        if context.main_scoring and context.cardarea == G.play then
            local table = {}
            for i,v in ipairs(G.play.cards) do
                if not next(SMODS.get_enhancements(v)) then
                    table.insert(table,v)
                end
            end
            if #table >= 1 then
                local cardToSpreadTo = table[math.random(1,#table)]
                cardToSpreadTo:set_ability(G.P_CENTERS["m_CGN_Virus"])
            end
        end
    end

(in an enhancement) would this make it so the Virus spreads to a random unenhanced card that was played when scored?

bleak crane
# daring fern Putting `vouchers` in config redeems it automatically.
    config = { extra = { vouchers = { 'v_crystal_ball', 'v_omen_globe' }, consumables = { 'c_ectoplasm' } } },
    loc_vars = function(self, info_queue, back)
        return { vars = { 
            localize { type = 'name_text', key = self.config.extra.vouchers[1], set = 'Voucher' },
            localize { type = 'name_text', key = self.config.extra.vouchers[2], set = 'Voucher' },
            self.config.extra.consumables[1]
        } }
    end,
    apply = function(self, back)
        for k, v in pairs(self.config.extra.consumables, self.config.extra.vouchers) do
            G.E_MANAGER:add_event(Event({
                func = function()
                    SMODS.add_card({ key = k })
                    return true
                end
            }))
        end
    end,

so just this would do what i want?

snow vale
#

how can i fix my error :(

long sun
daring fern
daring fern
bleak crane
#

oh

daring fern
bleak crane
#

oh right

#

it was v

long sun
#

okay

#

so put the code in your apply function then

bleak crane
#

no vouchers or card

long sun
#

but remove the context bit

snow vale
long sun
#

actually lemme edit that for you

#

(sorry i meant use)

snow vale
#

oh

#

ok

bleak crane
# bleak crane removed the apply function, now the deck does nothing
SMODS.Back {
    key = "phantom",
    -- unlocked = false,
    loc_txt = {
        name = 'Phantom Deck',
        text = {
            "Start with {C:tarot}Crystal Ball{} and",
            "{C:tarot}Omen Globe{}",
            "start with an {C:spectral}Ectoplasm{} card",
            ""
        }
    },
    atlas = 'kamisdecks',
    pos = { x = 0, y = 0 },
    config = { extra = { vouchers = { 'v_crystal_ball', 'v_omen_globe' }, consumables = { 'c_ectoplasm' } } },
    loc_vars = function(self, info_queue, back)
        return { vars = { 
            localize { type = 'name_text', key = self.config.extra.vouchers[1], set = 'Voucher' },
            localize { type = 'name_text', key = self.config.extra.vouchers[2], set = 'Voucher' },
            self.config.extra.consumables[1]
        } }
    end

just this does nothing

long sun
#
      G.E_MANAGER:add_event(Event({
        func = function()
          local _suit = pseudorandom_element({ 'S', 'H', 'D', 'C' }, pseudoseed('[YOUR CONSUMABLE NAME]'))
          local _card = create_playing_card({ front = G.P_CARDS[_suit .. '_K'], center = G.P_CENTERS.c_base }, G.hand,
            nil, nil, { G.C.SECONDARY_SET.Enhanced })

          G.GAME.blind:debuff_card(_card)
          G.hand:sort()
          card:juice_up()
          return true
        end
      }))

      playing_card_joker_effects({ true })```
#

lmk how that goes

daring fern
snow vale
#

lemme try

bleak crane
# daring fern Move everything in extra outside of extra.
SMODS.Back {
    key = "phantom",
    -- unlocked = false,
    loc_txt = {
        name = 'Phantom Deck',
        text = {
            "Start with {C:tarot}Crystal Ball{} and",
            "{C:tarot}Omen Globe{}",
            "start with an {C:spectral}Ectoplasm{} card",
            ""
        }
    },
    atlas = 'kamisdecks',
    pos = { x = 0, y = 0 },
    config = { vouchers = { 'v_crystal_ball', 'v_omen_globe' }, consumables = { 'c_ectoplasm' } },
    loc_vars = function(self, info_queue, back)
        return { vars = { 
            localize { type = 'name_text', key = self.config.extra.vouchers[1], set = 'Voucher' },
            localize { type = 'name_text', key = self.config.extra.vouchers[2], set = 'Voucher' },
            self.config.extra.consumables[1]
        } }
    end
}

eh?

daring fern
#

You need to change loc_vars to reflect that as well.

bleak crane
daring fern
bleak crane
#

victory !! it works

long sun
snow vale
# long sun can i see your code now?
    key = "crackers",
    set = "food",
    loc_txt = {
        name = 'Deer Crackers',
        text = {
            'Create a random playing card',
            'and add it to your hand'
        }
    },
    atlas = 'crackers',
    cost = 2,
    pos = {x = 0, y = 0},
    can_use = function(self,card)
        return G.GAME.blind.in_blind
    end,
    in_pool = function(self,args)
        return false
    end,
    use = function(self,card,area,copier)
        G.E_MANAGER:add_event(Event({
            func = function()
                local _suit = pseudorandom_element({ 'S', 'H', 'D', 'C' }, pseudoseed('[YOUR CONSUMABLE NAME]'))
                local _card = create_playing_card({ front = G.P_CARDS[_suit .. '_K'], center = G.P_CENTERS.c_base }, G.hand,
                    nil, nil, { G.C.SECONDARY_SET.Enhanced })

                G.GAME.blind:debuff_card(_card)
                G.hand:sort()
                card:juice_up()
                return true
            end
        }))

        playing_card_joker_effects({ true })
    end
}```
long sun
#

oh you're meant to replace [YOUR CONSUMABLE NAME] with crackers lol

snow vale
#

oh didnt read it tbh

long sun
#

not the problem though

#

mm

foggy loom
#

Hi, why my joker is not added after I start game with custom deck?

    SMODS.Back{
        name = "Test Deck",
        key = "testdeck",
        config = {
            unlocked = true,
            discovered = true
        },
        atlas = "FSOmega",
        pos = {x = 0, y = 1},
        loc_txt = {
            name = "Test Deck",
            text = {
                "Start with the {C:attention}Minimal Joker{}."
            }
        },
        apply = function(self)
            G.E_MANAGER:add_event(Event({
                func = function()
                    G.GAME.starting_jokers = G.GAME.starting_jokers or {}
                    table.insert(G.GAME.starting_jokers, "minimal_joker")
                    return true
                end
            }))
        end
    }```
shell timber
#

what on earth is g.game.starting_jokers?

#

does that exist?

red flower
snow vale
red flower
#

so...

daring fern
snow vale
red flower
#

the thing thats crashing is the joker right?

snow vale
#

wait true

#

😭

flat sorrel
#

redundant var assignment, missing a closing brace

snow vale
# red flower the thing thats crashing is the joker right?
    key = "gamer_horn",
    loc_txt = {
        name = 'Gamer Horn',
        text = {
            'Creates a {C:attention}deer cookie{} consumable',
            'when round is finished'
        }
    },
    atlas = 'gamer',
    cost = 6,
    rarity = 1,
    pos = {x = 0, y = 0},
    config = {extra = {
        odds = 5
    }
    },
    loc_vars = function(self,info_queue,center)
        info_queue[#info_queue+1] = {key='key2', set='Other'}
    end,
    calculate = function(self,card,context)
        if context.end_of_round and context.main_eval then
            SMODS.add_card{ key = "crackers" }
        end
    end
}
G.localization.descriptions.Other['key2'] = {
    name = 'Deer Cracker',
    text = {
        "Create a random",
        "playing card and",
        "add it to your hand"
    }
}```
red flower
#

the key should be c_modprefix_key

snow vale
#

oh

#

wait brb

flat sorrel
#

"small error" that will crash the game btw
don't be an antisocial presence in the channel if you don't want that attitude turned right back at you

#

yes like that, well demonstrated

red flower
#

?

foggy loom
daring fern
foggy loom
daring fern
foggy loom
#

oh

snow vale
#

TYSM

#

i now have 1 thing left to fix

keen totem
#

what size are enhancements?

red flower
#

71x95

snow vale
#

the error card should enhance every played card into glitch enhancement, but wont work

#
    key = "error",
    loc_txt = {
        name = 'ERROR',
        text = {
            '{C:dark_edition}card not found__{}'
        }
    },
    atlas = 'error',
    cost = 4,
    rarity = 3,
    pos = {x = 0, y = 0},
    config = {extra = {
        odds = 5
    }
    },
    loc_vars = function(self,info_queue,center)
        info_queue[#info_queue+1] = {key='my_key', set='Other'}
    end,
    calculate = function(self,card,context)
        if context.before == G.play then
            for _, c in ipairs(context.full_hand) do
                c:set_ability(G.P_CENTERS["m_bacon_glitch"])
            end
        end
    end
}
G.localization.descriptions.Other['my_key'] = {
    name = '???',
    text = {
        "{C:dark_edition}???{}"
    }
}
red flower
#

remove the == G.play

snow vale
#

ok

red flower
#

G.play is a cardarea and context.before is a boolean

foggy loom
daring fern
foggy loom
#

Yep

abstract umbra
#

how do i make a calculate function always be like, usable? I made is as a joker for ease of access but i want to make it always enabled, is there an easy way to do that?

daring fern
abstract umbra
keen totem
#

what context do you use do to something after scoring is done?

keen totem
abstract umbra
# daring fern What does it do?

It's a function to make a custom enhancement work- basically it doesn't score anything but selecting it increases the card selection limit so it like doesn't count towards the selection limit

#

Is there a way to like iterate through each deck and apply the function there?

keen totem
#

how do i get if a card is in the played hand?

daring fern
abstract umbra
daring fern
abstract umbra
#

Ah, okay

#

is there someone I need to credit if i use that code?

abstract umbra
#

Alright, thanks

keen totem
#

what is the self in the calculate function

wintry solar
#

it references the prototype object that creates the card

foggy loom
#

Any ideas why this code is crushing game?
Mod prefix is correct and joker key is correct.

Error is

functions/common_events.lua:2312: attempt to index local 'center' (a nil value)
primal robin
#

@wintry solar I have some problem: I need somehow prevent any hover and click events on elements which is outside of "scrollbar container".
Any idea how I can achieve this?

wintry solar
#

I have no idea

#

they're on a seperate canvas?

primal robin
#

No, i'm using stencil

#

So elements exist but parts outside of container just not renders

#

But game logic stays the same

wintry solar
#

do they have any sort of tag that's letting the game know they're not rendered?

primal robin
#

So I was thinking about making some elemtns on borders as covers to catch any events

primal robin
wintry solar
#

oh true

#

all I can think is having an element over the top of the sides that would block the hover

primal robin
#

That's what I want to do

#

But this element should be positioned like web "position: absolute"

#

Which I'm not sure how to achieve here

wintry solar
#

does it still hover outside the window too?

primal robin
#

Yes

wintry solar
#

hmmmmm

primal robin
#

Because it lloks like this for game

#

And I just applying stencil

#

All works fine except of limiting events outside of container

#

Maybe I should leave it for tomorrow because for now I'm stuck with it

#

But even now, look at this

wintry solar
#

that's cool

#

can it work on the tabs? 🤞

primal robin
#

Why it shouldn't

#

I'll push this on github and you can take a look, and even help to resolve this kind of issue, if you want of course

foggy loom
#

without modprefix

#

I don't know how, but it adds my custom joker to joker slots in my custom deck

plain apex
#

is this even something you can modify?

knotty compass
#

heya, question, is there a way to make an enhancement that activates its effect when card is destroyed? :>

urban wasp
#

i have no idea why this is happening to my joker

SMODS.Joker {
    key = "joker_of_all_trades",
    config = { extra = { chips = 150, mult = 15, dollars = 5 } },
    rarity = "crp_rare2",
    atlas = "crp_jokers",
    pos = { x = 3, y = 1 },
    cost = 9,
    blueprint_compat = true,
    demicolon_compat = true,
    loc_vars = function(self, info_queue, card)
        return { vars = { lenient_bignum(card.ability.extra.chips), lenient_bignum(card.ability.extra.mult), lenient_bignum(card.ability.extra.dollars) } }
    end,
    calculate = function(self, card, context)
        if (context.joker_main) or context.forcetrigger then
            return {
                chips = lenient_bignum(card.ability.extra.chips),
                mult = lenient_bignum(card.ability.extra.mult)
            }
        end
        if context.forcetrigger then
            ease_dollars(lenient_bignum(card.ability.extra.dollars))
            return { message = "$" .. lenient_bignum(card.ability.extra.dollars), colour = G.C.MONEY }
        end
    end,
    calc_dollar_bonus = function(self, card)
        return lenient_bignum(card.ability.extra.dollars)
    end,
    crp_credits = {
        idea = { "Poker The Poker" },
        art = { "GudUsername" },
        code = { "Glitchkat10" }
    }
}
urban wasp
#

ease_dollars(lenient_bignum(card.ability.extra.dollars))

#

OH

#

i know why

#

i think

wind steppe
#

thats good cause i dont

urban wasp
#

rarity's key was changed to rare_2 from rare2 is all

ashen atlas
#

random question whats the difference between
SMODS.create_card
SMODS.add_card

wind steppe
#

so for example add_card on troubadour will give you the +2 handsize and -1 hand but create_card wont

tall jewel
#

mayhaps custom buttons? (im not sure why but it always starts at top left regardless of alignment)

ashen atlas
red flower
#

does anyone know where in the code the game makes cards in deck stay flipped? because I'm trying to flip them face-up and it doesn't let me

north stone
#

how do i check how many of a specific joker i have

tall jewel
#

loop through them, check if the joker is the one you want, and increment a variable

#
        local amount = 0
    for _, value in ipairs(G.jokers.cards) do
        if value and value.ability.name == "j_hime_harpy" then
            amount = amount + 1
            break
        end
    end
red flower
tall jewel
#

well

#

tthat works too i guess

red flower
#

👍

ashen atlas
#

with the 1x and 2x atlas when is the game using the 1x ?

tall jewel
#

eventually it'll have the xmult tick down every like, 4 blinds (and be a LOT less strong) but i think this is a fun mechanic

gaunt thistle
#

game uses 2x for pixel smoothing iirc

tall jewel
#

if you have the joker and it's not fed, you cannot score, if you feed it you get xmult

ashen atlas
north stone
#
config = {extra = {
  Xmult = 1 + (0.25 * #SMODS.find_card("j_slop_small_potato"))
}},

how do i make the xmult increase depending on how many of that joker i have, i have this rn but its not increasing

red flower
#

do it when you use the value instead

#

so in calculate

north stone
red flower
#

do it in loc_vars too

#

don't modify ability tho, just make the calculation again each time

north stone
#

ah thank you

#

YOOO IT WORKS

#

ur the best

wind steppe
#

why doesn't my achievement pop up when i get it? (i still hear the sound it just doesn't pop up)

#
SMODS.Joker{ -- Pineapple implementation
    key = 'pineapple',
    config = { extra = {
        xmult = 3
    }
    },
    pools = { ["Food"] = true },
    rarity = 1,
    cost = 2,
    blueprint_compat = true,
    eternal_compat = false,
    perishable_compat = false,
    rental_compat = false,
    loc_vars = function(self,info_queue,card)
        return {vars = {card.ability.extra.xmult}}
    end,
    calculate = function(self, card, context)
        if context.joker_main then
            return {
                xmult = card.ability.extra.xmult
            }
        elseif context.end_of_round then
            G.STATE = G.STATES.GAME_OVER
            G.STATE_COMPLETE = false
            check_for_unlock({type = 'deathbypineapple'})
        end
    end
}
-- Top and bottom are in separate files. Shouldn't matter.
SMODS.Achievement{
    key = 'deathbypineapple',
    hidden_name = false,
    hidden_text = true,
    bypass_all_unlocked = false,
    earned = false,
    unlocked = false,
    reset_on_startup = true, -- uncomment to reset achievement. Should be a onetime thing and then the player goes "dont do that again"
    unlock_condition = function(self, args)
        return args.type == 'deathbypineapple'
    end
}
tall jewel
#

are you is it possible to move a card to a specific point on screen, and after reaching it it goes back?

north stone
#
local new_card = create_card("Joker", G.jokers, nil, nil, nil, nil, "j_slop_small_potato")
new_card:add_to_deck()
new_card:emplace(new_card)

how do i make this new joker negative?

tall jewel
#

new_card:set_edition("e_negative") i believe

north stone
#

ty

snow vale
#

how can i change a joker's edition?

tall jewel
red flower
tall jewel
#

alright so I have a SMODS drawstep, and I need to run an event that either juice_ups a card or adds a message, how would I do that

#

please @ if you know BegTears

sleek siren
#

I've been struggling to figure out how I would be able to add this into the ui (frontend development my belothed 😔, not looking forward to next semester lmao) does anyone know how I could do that?

#

(apologies for the phone edit, I was on a plane and my laptop died)

red flower
glad osprey
#

how do i add perkeos +1 consumable slot infoqueue to a card

red flower
#

info_queue[#info_queue+1] = {key = 'e_negative_consumable', set = 'Edition', config = {extra = 1}}

tall jewel
#

I have a wrapper for custom buttons on cards (and it works fine) which draws/adds the button using a drawstep


new 'FaeLib.CardButton'("fruit_use", "bl", function (self, card)
    card.ability.extra.debuffed_for = 5

    if not G.jokers then
        return false
    end
    for _, value in ipairs(G.jokers.cards) do
        if value and value.ability.name == "j_hime_harpy" then
            G.E_MANAGER:add_event(Event({
                trigger = 'after',
                delay = 0.05,
                func = function()
                    value:juice_up()
                    value.ability.extra.current_mult = math.max(0.95, value.ability.extra.current_mult + card.ability.extra._mult_for_harpy)
                    return true
                end
            }))
            
        end
    end
end,

the function in this class is called with the following:


G.FUNCS.faelib_button_proxy = function (e)
    local tbl = e.config.ref_table
    if not tbl then
        print("Error: ref_table is nil in faelib_button_proxy")
        return
    end
    if tbl and tbl.button then
        local card = tbl.card
        print("Running action for button: " .. tbl.button_id)
        tbl.button:run_action(card)
    end
end

The button being invoked, and the variable increment done works properly, just not anything visible like SMODS.calculate_effect or card:juice_up()

glad osprey
placid star
#

does anyone know how the G.TIMERS work? i cant find where theyre declared or how they total the t ime

red flower
glad osprey
#

oh i was looking in card.lua

tall jewel
#

yeah

rancid root
#

Hey all! I'm making a mod for my friends, and while I've made a test joker just to test if they'll be in the mod, I'm now trying to make actual jokers. I'm very new to the modding scene.

May I please have help with this joker I'm trying to make, just to avoid asking more questions in the future? I am unsure how to make the description change based on the requirements, and I am a bit stuck with the variables for the calculations.

Procrastination (Common Joker):

[Hands used] in [Total hands, after being increased/decreased by other jokers/blinds] chance to give +10 mult. Subsequent activations add +5 mult. Resets every round.

red flower
#

hands used: G.GAME.current_round.hands_played
total hands: G.GAME.round_resets.hands

to change the description use loc_vars

rancid root
#

Thank you so much! Greatly appreciated.

hard needle
#

i think theres a guide

#

in the wiki

red flower
rancid root
#

Understood! I'll try to test around it.

rancid root
red flower
rancid root
#

Huge thanks!

cursive sentinel
#

i now have this, doesn't crash anymore, although doesn't have an effect at all now, have i invalidated a if or smth?

-- Shuffle hook
local oldshuffle = CardArea.shuffle
function CardArea:shuffle(_seed)
    local g = oldshuffle(self, _seed)

    if self == G.deck then
        local artofwar = nil

        for _, j in ipairs(G.jokers.cards or {}) do
            if j.effect and j.effect.config and j.effect.config.key == 'j_drx1_art_of_war' then
                artofwar = j
                break
            end
        end

        if artofwar and artofwar.ability and artofwar.ability.extra and artofwar.ability.extra.art_to_draw then
            local prioritys = {}
            local otherones = {}

            for k, v in pairs(self.cards) do
                local ispiority = false

                for _, w in ipairs(artofwar.ability.extra.art_to_draw) do
                    if v == w then
                        is_priority = true
                        break
                    end
                end

                if is_prioty then
                    table.insert(prioritys, v)
                else
                    table.insert(otherones, v)
                end
            end
            
            for _, card in ipairs(prioritys) do
                table.insert(otherones, card)
            end

            self.cards = otherones
            self:set_ranks()
        end
    end
    return g
end
chilly flax
#

i'm working on a texture randomizer that creates texture packs with randomized base game textures. i've mostly gotten it to work, but for some reason the textures aren't being applied to the planet cards and all but 5 of the spectral cards. i've attached the Tarots.png spritesheet that the randomizer created, for reference.
also, it's worth mentioning that i don't know any lua and i'm just using a template for the required lua file.
also also, i really don't want to use malverk bc it's got some bugs and annoyances that make it unsuitable for this imo.

sleek siren
turbid maple
#

m

sleek siren
#

m

red flower
#

m

primal robin
#

m

turbid maple
#

your first start would be looking at create_UIBox_HUD

sleek siren
#

ok!

turbid maple
#

in functions/UI_definitions.lua

#

its a big mess of curly brackets but you can see how the hand/discard UIs are built

sleek siren
#

Ooooooooo, alrighty! ^^

primal robin
turbid maple
#

i've seen your scrollbar

primal robin
#

it's not done yet tho

#

But it's a good start

sleek siren
#

Oh? May I see :3

turbid maple
#

i am happy for you and i definitely do not envy having to work with UI code

wind steppe
#

how do i display a message with a localization file?

turbid maple
#

what kind of message are we talking about here

wind steppe
#

like the seltzer numbers

orchid thunder
#

is there a table of all suits/modded suits

wind steppe
#

or the popcorn eaten

#

but custom

red flower
orchid thunder
#

yeah but how can i access them its not an ordered table

red flower
#

pairs?

orchid thunder
#

im an idiot thanks

turbid maple
#

uhh I usually put them into misc.dictionary in the loc file

#

prefixed with a k_ because thats what the game uses for things like that I'm not sure what it stands for

#

keyword?

wooden nexus
turbid maple
#

I did look at Seltzer and it displays rounds remaining by just stringifying the number but that'd be more pedantic than helpful I suppose

outer basalt
#

so, i got my joker moving one way, but they still can't go the other.
The bottom function is the one thats working and i dont know what the difference is

scenic elm
#

hi y'all. is it at all possible to get intellisense set up for smods n other depencies used in my code? i use vs code

i'm a typescript dev and recently started learning lua and i'm really missing proper intellisense

outer basalt
#

i know i downloaded a couple lua related extensions

red flower
scenic elm
# red flower yes, smods has lsp definitions I just open my entire mods folder for dev

i tried this and also got intellisense working, but i'm weird n want to keep my explorer clean.

i tried opening my mod folder like usual and then File > Add Folder to Workspace...'ing the smods folder in vs code, but this doesn't seem to work even though just opening the entire /mods folder works as expected.

i suppose i'll have to live with an ""ugly"" sidebar for now

red flower
#

yeah idk why that doesnt work

scenic elm
#

doing some more digging it seems like i can get the wanted behavior by creating a .luarc.json file at the root of my project and adding the path to the smods folder to the workspace.library setting in there
https://luals.github.io/wiki/configuration/#luarcjson-file
https://luals.github.io/wiki/settings/#workspacelibrary

another option seems to be by using the built in addon manager in sumneko's lua extension for vs code, but smods doesn't seem to have an addon defined in the add repo on github
https://github.com/LuaLS/LLS-Addons

anyways, thanks for the help JinxHeart

sleek siren
outer basalt
#

:0 another system /ot

sleek siren
#

Hello!!! ^^

scenic elm
wind steppe
#

why does this not show messages correctly?

                return {
                    message = localize('k_para_upgrade'),
                    colour = G.C.ATTENTION
                }

localization file:

        dictionary = {
            groupfoodpack = "(You'd like...)",
            reactivated = "Reactivated!",
            upgrade = "Upgrade!"
        },
red flower
#

it doesnt automatically add prefixes like the smods objects

#

the key in the dictionary needs to be the exact same

agile dew
#

sorry for the late reply, is there a way i can do it permanently?

wind steppe
#

do i still need modprefix or not

agile dew
#

would it have to be outside the calculate function?

red flower
outer basalt
keen totem
#

how do i set a card's enhancement to being unenhanced?

red flower
#

card:set_ability() without arguments iirc

#

or "c_base" maybe

keen totem
#

isnt this the probability value?
G.GAME.probabilities.normal

chilly flax
keen totem
#

nvm

#

im copying some stuff from another joker and i messed smth up

#

cant get G.GAME on launch

keen totem
#

because yes

#

but it depends on that

#

actually dont think it does

knotty compass
keen totem
#

but you need a certain thing added

#

OK

#

context.remove_playing_cards

#

is your context

#

but add smth to check if the card being destroyed is the card that the enhancement is on

#

should be
if context.other_card == card then

knotty compass
#

Oh! Will try, thanks a lot! Guessing seals are handled the same way?

keen totem
#

i would assume so

#

havent made any yet

knotty compass
#

Alright thanks

sleek siren
#

This feels like a very hacky solution, is there a better way to do this?

keen totem
placid star
#

whats the best way to add a timer to the description of one of my jokers?

wind steppe
#

why doesn't this work for my custom deck?

    loc_vars = function(self,info_queue,card)
        info_queue[#info_queue+1] = {key = 'eternal', set = 'Other'} -- crash on this line
        return {vars = {self.config.extra.food_jokers}}
    end,
keen totem
#

how can i do messages on multiple cards in one calculation

scenic elm
#

i'm trying to do smth after a boss blind has been defeated, but this doesn't seem to work.

it's not crashing or anything, it just doesn't add the xmult how i would expect. anyone know what i'm doing wrong?

calculate = function(self, card, context)
    if context.joker_main then
      return {
        xmult = card.ability.extra.xmult,
      }
    end

    if context.blind_defeated and context.blind.boss and not context.blueprint then
      card.ability.extra.xmult = card.ability.extra.xmult + card.ability.extra.xmult_gain

      return {
        message_card = card,
        message = card.ability.extra.xmult .. ' Mult'
      }
    end

code was taken from the Madness implementation in the VanillaRemade and altered to fit my needs
https://github.com/nh6574/VanillaRemade/blob/main/src/jokers.lua

wind steppe
red flower
#

context.cardarea == G.jokers won't work as far as i know

keen totem
#

ive been looking but have had no luck at all

keen totem
#

im trying to do a thing like triboulet but also do a msg on the card that "trib" triggered because of

red flower
# keen totem N' do you know how to do this

either SMODS.calculate_effect({message = "msg"}, other_card) or

return {
  message = "msg",
  message_card = first_card,
  extra = {
      message = "msg",
      message_card = second_card,
  }
}
red flower
vagrant cedar
#

Hey guys

#

I'm making my first boss blind and I've run into trouble

placid star
keen totem
keen totem
#

nice

vagrant cedar
#

I feel my blind should be relatively simple, I just want it to be "Played hand must be a straight to score"

#

Is there an easy way to accomplish this, or do I have to debuff every other hand manually

red flower
keen totem
keen totem
#

but i think you can just refuse the hand if its not a straight

#

check psychic's code

red flower
vagrant cedar
#

Wouldn't that debuff straight though?

red flower
#

~=

vagrant cedar
#

Oh I see

red flower
#

not equal

wild escarp
#

How would I make a deck start you off with a specific joker?

keen totem
#

im just testing wtf

keen totem
wind steppe
wild escarp
#

Thank you!

uncut cloud
#

guys i may be dumb because im CERTAIN that this has like the simplest solution ever but my brain is not working as of right now so
im tryna get this to only generate a singular negative the fool, but it generates one per card triggered and ive tried so many things and none of them have worked so far

red flower
#

it shows up when you hover and with galdur

uncut cloud
placid star
long sun
#

how do you get the current blind?

red flower
# uncut cloud yeah

change context.cardarea == G.play and context.individual for context.joker_main

keen totem
red flower
uncut cloud
red flower
uncut cloud
placid star
#

i hate nodes

red flower
#

oh ok lol

wind steppe
red flower
#

hmm

#

no idea lol

vagrant cedar
unborn bay
#

im pretty sure T: only works with centers and tags

keen totem
#

Is Played cards with X enhancement give X1.5 Mult and have a 1 in 2 chance to lose the X enhancement too OP for a rare?

keen totem
#

hmm

#

what should i do to it then

unborn bay
wind steppe
#

drop "loses the enhancement" and buff it to x2

#

its a rare

red flower
keen totem
#

needs to lose the enhancement for the theme

wind steppe
#

buff it to x3

keen totem
wind steppe
#

oh right

keen totem
#

btw this enhancement copies itself

wind steppe
#

buff it to x2 and still lose enhancement

keen totem
#

so its very easy to deckfix

#

so we're talking whole deck is this enhancement

wind steppe
#

x2 and 2 in 3 chance

keen totem
#

yea

#

i still want it to be a chance

#

the enhancement is a Virus

#

and the joker is a cure

#

hence why the cure removes the Virus enhancement

vagrant cedar
#

I have become too powerful. Don't let your memes be dreams, make them a reality.

outer basalt
#

I knew exactly where that was headed

wind steppe
#

make sure polychrome cards can't score

vagrant cedar
wind steppe
#

and no bluestorm yuri

vagrant cedar
outer basalt
#

no way someone named "BuddyHollyMallCop" wasn't asking about that for no reason

keen totem
#

actually

#

make it so ANYTHING with any modifier is debuffed

outer basalt
#

true...

#

fascists hate anything different...

keen totem
#

and has a 1 in 2 chance to remove the modifier

#

if the modifier isnt removed, another 1 in 2 chance to destroy the card

native zinc
#

fascists love hoarding gold though smh

keen totem
#

yknow

#

i was gonna say smth

#

but i think thatd be too far

#

i was gonna say another thing that might be too far

#

this is too funny not to think of ideas for

#

but i cant say them

#

turn all jokers eternal until the blind is defeated

placid star
keen totem
vagrant cedar
keen totem
#

its so useful

red flower
keen totem
#

but it IS evil

wind steppe
keen totem
#

also those are all perfect jokers

wind steppe
#

9/11 joker: if irl date is september eleventh, destroy played cards

#

worlds slowest balatro run

keen totem
sleek cliff
#

So I copied the immolate to test if it could work as a temp for a spectral and i'm getting this error for no reason

wind steppe
outer basalt
#

im gonna ask again if anyone knows whats wrong with the first one of these. The 1st one doesn't move the joker but the 2nd one does. However, I still get the printed "Up" so the function is being called???

wind steppe
#

keep the system time but you have to set it to september 11th 2001

#

not just any september 11th

keen totem
#

i should make a joker that actually goes off the real stock values of companies

red flower
glad osprey
#

how do i have a joker do a custom calculate

red flower
outer basalt
wind steppe
#

siffrin canonically said all that

outer basalt
#

😭

wind steppe
#

they hit the second island

glad osprey
#

am trying to make a joker that triggers all other jokers of the same key (for cryptid forcetriggers)

sleek cliff
keen totem
#

its based on another game

uncut cloud
wind steppe
#

dumping all my money into apple so i can beat ante 11

keen totem
#

can we post links

glad osprey
#

aslong as it isnt a gif yea

keen totem
#

this literally goes off of the actual roblox stock value

#

(the item got worse and worse)

glad osprey
#

holdon

#

i need to research rq

wind steppe
#

bad idea: newspaper joker

red flower
wind steppe
#

x0.1 mult for each globally newsworthy event today

keen totem
red flower
keen totem
#

once i learn https

#

this community is over

wind steppe
scenic elm
#

is there a way to add an enhancement to selected cards with a console or dev tools or smth? i'm trying to add a new enhancement n want to test it

outer basalt
#

yes in debugplus

#

tab for the menu

keen totem
#

how would i get the amount of people in the balatro discord using an https request

wind steppe
glad osprey
#

look at crypti💥

keen totem
#

yea

keen totem
vagrant cedar
outer basalt
sleek cliff
glad osprey
red flower
placid star
young wave
#

hi i'm new into modding and i can't get the joker I'm creating in the game, the mod isn't visible on steamodded

wind steppe
red flower
keen totem
#

seriously tho how would i use https requrest

wind steppe
wind steppe
# keen totem seriously tho how would i use https requrest

cryptids code:

function Cryptid.update_member_count()
    if Cryptid_config.HTTPS and https and https.asyncRequest then
        if (os.time() - last_update_time >= 60) or initial then
            initial = false
            last_update_time = os.time()
            https.asyncRequest(
                "https://discord.com/api/v10/invites/eUf9Ur6RyB?with_counts=true" .. "&v=" .. tostring(os.time()),
                apply_discord_member_count
            )
        end
    end --you all are awesome :)
end
keen totem
elfin stratus
#

can a joker detect when something is purchased from the shop?

red flower
elfin stratus
#

if yes how

red flower
glad osprey
#

contextmbuying_card

elfin stratus
#

it works for everything you purchase=

red flower
#

lmao

glad osprey
#

fuck

elfin stratus
#

??

glad osprey
#

excluding boosters

red flower
#

damn

glad osprey
#

cuz those arent cards

#

for some fucking reason

#

instead you gotta use context.opening_booster

elfin stratus
#

but you can booster packs from tags

wind steppe
#

boosters are many cards

sleek cliff
glad osprey
#

and check if the booster came from a tag or not

elfin stratus
#

so, context.buying_card + context.opening_booster?

uncut cloud
glad osprey
#

that should cover all cases

elfin stratus
#

and how do i know the booster came from the shop?

young wave
glad osprey
#

boosters have a value that tells you their origin

#

i forgot what its called tho

young wave
wind steppe
young wave
wind steppe
#

how do i set a joker's sell value?

#

like egg but instead of increasing the value it sets it

keen totem
#

card:set_cost()

scenic elm
#

is it possible to italicize and/or change the text size of text in loc_txt.text?

wind steppe
scenic elm
#

pog thanks

elfin stratus
#

what is the message for money?

#

🙏

uncut cloud
manic rune
wind steppe
elfin stratus
#

the animation

#

like a_mult but for money

wind steppe
#

idk

elfin stratus
sleek cliff
#

Ok, so now that I have the meddling monk working, how can I have it ONLY target face cards

manic rune
young wave
uncut cloud
frosty rampart
elfin stratus
#

the joker gain value

#

oh wait

red flower
elfin stratus
#

i can check egg

#

nvm

uncut cloud
elfin stratus
#

egg is not useful

red flower
uncut cloud
#

well what the joker's supposed to do is that it generates a fool card when a hand containing hearts is played and a negative the fool card when a hand containing a flush five made of hearts is played

uncut pivot
#

@elfin stratus I am also looking for that effect

sleek cliff
elfin stratus
#

using context.opening_booster didnt work

red flower
red flower
sleek cliff
#

like this?

chilly flax
#

how do i retexture the thing that hovers above the soul? (without malverk)

red flower
#

what's the intended effect?

sleek cliff
#

it destroys 3 random face cards and gives $25, like a more focused immolate

red flower
#

oh so not selected ones

quartz ravine
red flower
#

discard what i said

sleek cliff
#

oki

chilly flax
#

if it means what i think it does, i don't want to create a whole new card just as a workaround

quartz ravine
#

Oh you want to replace the original Soul diamond texture in the base game? I thought you wanted to make your own legendary, nevermind

chilly flax
#

yeah i'm making a texture pack (kinda)

scenic elm
#

how do i make those little message pop ups show up when this part triggers?

i'm trying to have a message pop up with how many retriggers it has after the increase and the return {message ...etc} thing isn't working

calculate = function(self, card, context)
    if context.after then
      card.ability.extra.retriggers = card.ability.extra.retriggers + card.ability.extra.retriggers_gain

      return {
        message = "Storm count " .. card.ability.extra.retriggers,
        card = card,
      }
    end

    if context.end_of_round then
      card.ability.extra.retriggers = 0
    end

    if context.repetition then
      return {
        repetitions = card.ability.extra.retriggers
      }
    end
  end
manic rune
#

if returning message doesn't work then you can use SMODS.calculate_effect({message = "i have to manually type this so many times now"}, card)

scenic elm
#

like this, yes?

calculate = function(self, card, context)
    if context.after then
      card.ability.extra.retriggers = card.ability.extra.retriggers + card.ability.extra.retriggers_gain

      -- new stuff
      -- new stuff
      SMODS.calculate_effect({
        message = "Storm count " .. card.ability.extra.retriggers
      }, card)
      -- new stuff
      -- new stuff
    end

    if context.end_of_round then
      card.ability.extra.retriggers = 0
    end

    if context.repetition then
      return {
        repetitions = card.ability.extra.retriggers
      }
    end
  end
#

doesn't seem to work either

manic rune
#

are you sure card.ability.extra.retriggers even increase?

scenic elm
#

yes :3 the increased amount shows up in the tooltip and works when playing the card

uncut pivot
#

I tried doing this:

return {message = "{C:money}$#1#{}"
                    }

but the message didn't format the color

manic rune
#

huh

#

odd

lucid owl
#

having an issue with changing a card enhancement that i'm pretty unsure about. when cryptid is installed, this code crashes with error "attempt to index local 'center' (a string value)"
it seems like cryptid hooks set_ability() but i'm really not sure what the problem could be

manic rune
#

you want to use localize

#

wait nvm

daring fern
uncut cloud
manic rune
#

yeah no, returned messages shouldnt even be able to be stylized

#

god i thought that was in uis

#

so

#

sob

manic rune
uncut pivot
#

So what is the best way to get the like money pop up on when joker is scored effect?

manic rune
#

what smt com said

elfin stratus
daring fern
scenic elm
manic rune
#

yeahh probably update your smods

elfin stratus
#

thanks

uncut pivot
ashen atlas
#

I want to try and check if I have 5 jokers from a set of jokers that I'm making, and thought that I could use 'set = ' for calling to them. any ideas?

SMODS.Joker {--S
    key='S',
    loc_txt = {
    name = "S Piece",
    text = {
    "TBD some kind of mult #1#", --add abilities or mult gain?
    }
    },
    set="Placeholder",  ----Set or pool or group key? something like that
    rarity = 2,
    unlocked = true,
    discovered = true,

lucid owl
red flower
#

yeah

lucid owl
#

balatro modding is just finding out every week or two that the code your card runs on had a much easier, undocumented method of achieving

red flower
#

u could have checked vanillaremade :3

lucid owl
scenic elm
manic rune
#

im pretty sure card in enhancements' calculate should refer to the playing card, so its weird that message doesn't work

#

have u tried updating ur smods yet 🤔

scenic elm
#

updating to version 1.0.0~BETA-0525b-STEAMODDED (the latest committed version on github) seemingly didn't help

manic rune
#

weird

elfin stratus
#

now how do i fix the joker getting value from opening a booster pack that doesnt come from the shop

scenic elm
#

here's the full SMODS.Enhancement for posterity.
-# also, yes, {C:orange} doesn't work, i know :3

SMODS.Enhancement {
  key = "storm",
  loc_txt = {
    name = "Storm",
    text = {
      "Retrigger this card for each",
      "played hand this round",
      "{C:inactive}(Currently {C:orange}#1#{C:inactive} retriggers)",
      " ",
      "{C:inactive,s:0.6}(Storm count?){}"
    }
  },
  pos = {
    x = 1,
    y = 1,
  },
  config = {
    extra = {
      retriggers = 0,
      retriggers_gain = 1,
    }
  },
  loc_vars = function(self, info_queue, card)
    return {
      vars = {
        card.ability.extra.retriggers,
        card.ability.extra.retriggers_gain,
      }
    }
  end,
  calculate = function(self, card, context)
    if context.after then
      card.ability.extra.retriggers = card.ability.extra.retriggers + card.ability.extra.retriggers_gain

      return {
        message = "Storm count " .. card.ability.extra.retriggers,
        card = card,
      }
    end

    if context.end_of_round then
      card.ability.extra.retriggers = 0
    end

    if context.repetition then
      return {
        repetitions = card.ability.extra.retriggers
      }
    end
  end
}
manic rune
#

mmm

#

maybe try adding message_card = card to return?

manic rune
#

their message doesn't pop up

hybrid shadow
elfin stratus
scenic elm
hybrid shadow
manic rune
#

sob

#

wtf is going on

#

am i missing something obvious here??

red flower
#

what about final_scoring_step instead of after?

hybrid shadow
#

shouldnt it be message = localize([prefix_key])?

manic rune
#

you can use a string instead

sleek cliff
#

im still trying to figure out where to put the card:is_face() but im fukin stumped still

manic rune
#

what is this for

red flower
scenic elm
red flower
#

weird

sleek cliff
scenic elm
#

is it perhaps bc there's 2 return statements? one for the retriggers at the bottom and another one at the top for the message stuff?

manic rune
#

shouldn't matter, i think?

red flower
#

it shouldnt be because those are different contexts

elfin stratus
red flower
#

have you tried removing card = card?

manic rune
#

might be wrong but G.STATE changes when you are in booster packs

scenic elm
#

that's what my gut is telling me too, but these are literally my first 3 hours of modding lmao

manic rune
#

can you try printing G.STATE while ur in a pack rq?

red flower
#

you shouldnt use card = card anyway

scenic elm
# red flower you shouldnt use `card = card` anyway

fair. i stole the code from cryptid Shrugeg

calculate = function(self, card, context)
        if context.repetition then
            if context.cardarea == G.play then
                return {
                    message = localize("k_again_ex"),
                    repetitions = math.min(40, card.ability.extra.repetitions),
                    card = card,
                }
            end
        elseif context.individual then
            if context.cardarea == G.play then
                return {
                    x_mult = card.ability.extra.x_mult,
                    colour = G.C.RED,
                    card = card,
                }
            end
        end
    end,
hybrid shadow
elfin stratus
sleek cliff
#

I don't think I got this right, but I think im getting somewhere

red flower
manic rune
#

playing_card:is_face()

#

oh wait, the order of that is wrong too

sleek cliff
elfin stratus
# elfin stratus
    cost = 2,
    atlas = 'Jokers',
    pos = {x = 3, y = 0},
    config ={ extra = {
        Money = 0,
        PlusMoney = 1
        }
    },
    loc_vars = function(self,info_queue,card)
        return {vars = {card.ability.extra.Money, card.ability.extra.PlusMoney}}
    end,
    calculate = function(self, card, context)
        if context.buying_card or context.open_booster then
            if G.STATE == G.STATES.SHOP then
                card.ability.extra.Money = card.ability.extra.Money + card.ability.extra.PlusMoney
                return {
                    message = localize('k_val_up')
                }
            end
        end
    end```
hybrid shadow
manic rune
#
if playing_card:is_face() then --add to table end
#

-# im not sure if you can use playing_card:is_face() and (code) since i never used it myself, so i used an if statement instead

sleek cliff
#

ok, which one would be the table end

manic rune
#

temp_hand[#temp_hand + 1] = playing_card

outer basalt
#

update on my issue. I changed around the code some bit. it didn't help at all but 😭 here it is.

scenic elm
#

oh my god. it was working the whole time. i had Nopeus on the no misc. setting for Card Text Popups despairge

manic rune
#

😭

scenic elm
#

thanks for the help either way

manic rune
#

adding nopeus to incompat mods in yggdrasil

outer basalt
#

ive also restarted my computer

manic rune
outer basalt
#

how would I go about that?

manic rune
#

check the function's name if its correct 🤔

outer basalt
#

just adding that straight in?

sleek cliff
manic rune
outer basalt
#

aight

manic rune
#

again, the function name might be wrong so do double check it, thanks :p

outer basalt
#

if htis works im going to carve a statue of gold in your honor

manic rune
sleek cliff
manic rune
#

yeah you want to add nil checks

#

but also - you probably want to have it so you can't use the consumable in can_use if theres no face cards in hand

frail rock
#

Hello! Coding noob here. Anyone know how to swap the order of a vanilla card set? Specifically Tarot?

I'm working on a couple mods that re-skin the Tarot cards. I'm partial to the RWS order so I've been swapping Strength and Justice's numerals via the art. This is more than enough for an active game, but my brain still wants to scratch the itch of seeing each Tarot in order in my collection. I've been struggling with lovely and haven't been able to find an obvious fix in the SMODs documentation.

sleek cliff
outer basalt
manic rune
#

search function CardArea:align

outer basalt
sleek cliff
#

ive tried the G.hand.cards:is_face() > 3 and it didn't work, but I think I have the right idea

manic rune
outer basalt
#

IT WORKED. I mean he moved way to far BUT HE MOVED

manic rune
#

lol

outer basalt
#

Statue of gold incoming

scenic elm
#

i'm running into a new issue. the storm count doesn't get reset at the end of round like it's supposed to.

i even tried adding a print() statement in the if block, but it didn't get printed to the lovely log or the debugplus log. is this just how print() works in this environment?

calculate = function(self, card, context)
    if context.after then
      card.ability.extra.retriggers = card.ability.extra.retriggers + card.ability.extra.retriggers_gain

      return {
        message = "Storm count " .. card.ability.extra.retriggers,
        message_card = card,
      }
    end

    -- important bit
    -- important bit
    if context.end_of_round then
      card.ability.extra.retriggers = 0
    end
    -- important bit
    -- important bit

    if context.repetition then
      return {
        repetitions = card.ability.extra.retriggers
      }
    end
  end
spice wadi
#

(sorry ik this isn't helpful but thought it might be funny)

outer basalt
#

any form of entertainment to keep me sane is helpful

manic rune
gusty iron
#

how would i make it so that a blind sends you straight into another blind after beating it?

scenic elm
gusty iron
manic rune
#

thats what i did for bsr :p

gusty iron
#

as im making something called boss rush

#

where you have to beat all 28 bosses in a row

manic rune
#

that

#

that cant be cool

#

i cant imagine the chaos

wind steppe
gusty iron
tired skiff
#

what is the keybind to restart the game

#

i forgot :<

gusty iron
#

Needle is 1/28 :)

wind steppe
gusty iron
#

hands and discards replenish each round

wind steppe
#

pillar has to be 28/28

#

get debuffed

gusty iron
#

where is the number of hands stored

#

like, the non-saving ones

#

(i think that exists)

outer basalt
#

okay so im having more issues with the goddang code. so.
The going up triggers so many times despite it being called once... meanwhile going down triggers once????

#

the final one is the right to left (down)

#

the other ones are all just one single move up

tired skiff
#

feedback on art so far?

(ignore 6)

rustic swallow
#

how would i use soul_pos

scenic elm
outer basalt
# tired skiff feedback on art so far? (ignore 6)

the hand(4th) one is a bit odd seeing as you'd think it would be the focus but its covered up partially by the Joker word.

Other than that i think theyre all super silly and fit the balatro style™️ very well

#

ofc idk what the 4th one is so you might have your reasons 🤷

gusty iron
#

what should you fight after needle

outer basalt
#

wall

gusty iron
#

true

outer basalt
#

feels like theyre opposites in my brain

daring fern
gusty iron
#

wall is 3x base right

manic rune
rustic swallow
wind steppe
#

when do you fight the finisher blinds?

hasty mist
#

what is card_eval_status_text?

manic rune
#

in most cases you can use SMODS.calculate_effect instead

gusty iron
scarlet thorn
gusty iron
#

also how would i force the boss rush to spawn every multiple of 12

outer basalt
wind steppe
#

theres only 23 regular bosses

rustic swallow
#

does soul_pos not use a different sprite than the regular pos?

manic rune
#

it uses the same atlas

gusty iron
outer basalt
#

Honestly it's probably fun to have them at the end. Maybe as an option

gusty sequoia
#

hey so does anybody know why my joker broke when it literally just has the code for Midas Mask...?

gusty sequoia
# manic rune whats the code
        info_queue[#info_queue + 1] = G.P_CENTERS.m_gold
    end,
    calculate = function(self, card, context)
        if context.before and context.main_eval and not context.blueprint then
            local faces = 0
            for _, scored_card in ipairs(context.scoring_hand) do
                if scored_card:is_face() then
                    faces = faces + 1
                    scored_card:set_ability('m_gold', nil, true)
                    G.E_MANAGER:add_event(Event({
                        func = function()
                            scored_card:juice_up()
                            return true
                        end
                    }))
                end
            end
            if faces > 0 then
                return {
                    message = localize('k_gold'),
                    colour = G.C.MONEY
                }
            end
        end
    end```
#

As I said, currently just Midas Mask's code afaik

spice wadi
#

Can you define broke

gusty sequoia
manic rune
#

im on phone so i currently lack reading comprehension

#

whats the crash log

elfin stratus
spice wadi
#

Can we have the crash

#

And where did you copy from

#

Because I'd highly recommend copying from VanillaRemade rather than the original source code

spice wadi
#

It applies to buying any card and opening any booster if h had to guess

#

Should probably change that to "and" if that works

gusty sequoia
spice wadi
elfin stratus
#

i can detect buying cards just fine, the problem is detecting buying boosterpacks

young wave
#

i managed to make my idea work (retrigger 2 times each queen and give ×1.5 mult for each retrigger, but the last retrigger doesn't give the ×1.5 and idk why

red flower
elfin stratus
#

elaborate please

red flower
#

print(context.card)

#

in open_booster

spice wadi
gusty sequoia
#

The error message is too long for me to send it ;-;

spice wadi
#

Can you send the top part

#

That's the most useful bit

red flower
gusty sequoia
red flower
#

ok then go to your mods folder under lovely/logs and send the newest one

gusty sequoia
#

Okay

chilly flax
red flower
#

i can

#

idk the answer tho

outer basalt
#

its also sending this message multiple times so???

manic rune
#

remove cardarea check and add context.main_eval, maybe?

outer basalt
#

funf act guys this is my first joker ever 👍 (why did i make it so hard??)

manic rune
#

to be fair the first joker i made had equipment slots

#

:p

gusty iron
#

how would i reset the hands played for a boss blind?

outer basalt
gusty iron
# red flower wdym

i have a phase-blind that makes you go through all 25 boss blinds

i was wondering how i would reset the hands played for each phase

outer basalt
#

why is it actual shinji chair this time

young wave
manic rune
#

yeah probably not that context then, hm

#

ask N' they know their contexts :p

outer basalt
#

not moving both ways so it probably is a context thing

gusty sequoia
#

Oh yay the log sent

red flower
red flower
manic rune
outer basalt
#

my contexts are freaking out when my card moves left to right but not right ot left

gusty iron
#

doesnt ease_hands_played(n) add n to the hands played?

red flower
#

yes

red flower
manic rune
#

shouldnt you use ease_hands instead

gusty iron
#

but what if you still have hands left over?

gusty sequoia
manic rune
#

it adds temporary hands 🤔

red flower
manic rune
#

wha

#

i couldve swore bsr uses it, weird

#

lemme check

gusty sequoia
#

I guess imma figure out how to update steamodded

red flower
#

ease_hands_played does temporary hands

spice wadi
gusty iron
manic rune
#

ah crap yeah its ease_hands_played

outer basalt
manic rune
#

in my defense its ease_discard so i thought its ease_hands too

red flower
#

yeah

red flower
gusty iron
#

so if i had 3 hands left G.GAME.round_resets.hands_played would be 3

#

?

outer basalt
red flower
#

hands_left would be 3

gusty sequoia
#

what all is in my version...?

red flower
manic rune
keen totem
#

is Played cards with X enhancement give X1.5 Mult and have a 1 in 2 chance to lose the X enhancementfair for an uncommon (decided the nerf the rarity instead of the stats)

outer basalt
red flower
#

what's abilityMove

manic rune
#

function used to move jokers' position, i think

rustic swallow
#

how do i tell soul_pos to use a different sprite than the original joker's sprite

gusty sequoia
#

About how many version behind is Alpha-1409a...?

outer basalt
# red flower what's abilityMove

basically the one that compares all valid targets (in this case it would be only the placeholder-runner.) locations to find which is the closest and then. move there

keen totem
outer basalt
#

well. move in that direction

red flower
spice wadi
keen totem
#

it is

#

just no need to specify

#

its the Virus enhancement

#

spreads to a random played card when played

spice wadi
#

I think it's fair then?

keen totem
#

thats enough for me

spice wadi
#

However there's only so much anyone can give feedback on
Cos you'll only know if it's balanced with playtesting

red flower
gusty sequoia
#

do you know if there's any way to do what I wanna do in my current version, before I bite the bullet and just update?

red flower
#

just update

#

I know what the issue might be but it isn't worth it

gusty sequoia
keen totem
#

whats the reference to the deck?

#

like how theres G.jokers

red flower
red flower
gusty sequoia
#

Thanks

outer basalt
#

it still didnt work and had the same results

rustic swallow
#

how do i make soul_pos use a different sprite than the base joker sprite

outer basalt
#

unless its an issue with morefluff which I apparently didnt disable-

red flower
#

hmm idk then it shouldn't be triggering more than once

#

i was thinking cryptid or talisman because those mess with a lot of that stuff

outer basalt
#

I can't really disable talisman since im using ee_mults and stuff i think

gusty iron
#

how would i add all of the played cards back to the deck?

red flower
#

draw_from_discard_to_deck() iirc

gusty sequoia
#

what would I use instead of a string?

keen totem
#

do you need achievements to be tied to a joker's unlock?

gusty iron
keen totem
#

or i mean

#

do you need to make an achievement for a joker's unlock

red flower
gusty sequoia
red flower
gusty sequoia
red flower
#

keep in mind vanillaremade is made with latest smods in mind

#

in fact i use stuff that's in the dev version

gusty sequoia
spice wadi
#

And anyone playing your mod will be using something close to the latest version of smods

gusty sequoia
#

Yeah, I'm honestly not sure if I'll ever release the mod, but if I do then I'll definitely be updating

keen totem
#

does SMODS ever fully remove old systems

#

like

#

if i dev a mod on a version

#

will it track to latest

outer basalt
red flower
#

a lot of pre-bettercalc stuff breaks

keen totem
#

besides major stuff

spice wadi
red flower
#

most of the time smods doesn't break much but sometimes they do big breaking updates

#

the thing that would break the most is lovely patches

keen totem
#

is having 13 jokers good for day 2 of modding

red flower
#

no you need at least 50

keen totem
#

damn

spice wadi
#

I've spent several weeks on my mod and that's the amount I have 🔥

#

(I have no knowledge of lua or balatro and I've spent half the time on a few problematic jokers)

keen totem
#

fair

#

i already know lua and modding games so

outer basalt
gusty sequoia
keen totem
#

i kinda have a leg up there

wind steppe
#

i have 8 and i started like a month ago

red flower
#

i made 0 jokers in my first 6 months of modding

#

then 329 in 3 months

spice wadi
#

I'm really happy with the concepts tho, I'd rather have less polished jokers than a bunch of less unique ones

rustic swallow
#

how do i make soul_pos use a different sprite than the base joker sprite

normal crest
#

6 months of modding in general or just balatro

gusty iron
#

someone give me a random boss blind thats not the wall or the needle

wind steppe
#

the flint

spice wadi
gusty iron
normal crest
#

I will say Balatro isn't the worst starting point for modding

keen totem
spice wadi
outer basalt
keen totem
#

as someone who mods for several other games

#

you are right

#

this is easy

spice wadi
#

Oh wait did you do VanillaRemade cos if you did I needa suggest a fix

red flower
#

i dont care about mods usually i was just really annoyed about having to hover jokers

keen totem
#

pavlov and inscryption are a nightmare to work with compared to this

keen totem
#

i have no idea wtf OOP is supposed to be tho

#

so

red flower
#

object oriented programming?

high sinew
#

For using SMODS.Gradient how do you call it in for text wise or ui wise?

keen totem
#

well ye

normal crest
#

oop is just whatever you want it to be

spice wadi
# red flower what's it

The blueprint compatibility check for the description of blueprint (and brainstorm ig) doesn't check if you're in the game and crashes if you're in the collection

keen totem
#

but until now i never understood

normal crest
#

as long as you're having fun

high sinew
#

I see it is update(self,dt) but not sure on how u use haven’t done

outer basalt
keen totem
#

so

#

idk

normal crest
#

is everything data driven in inscryption then?

red flower
keen totem
#

inscryption CAN be modded with json

#

you can also use C#

spice wadi
high sinew
keen totem
#

idk if my art is good tho

normal crest
#

ah, I was about to ask how you'd implement custom behaviour with json files

keen totem
#

i made smth that gives a card +2HP every time it gets a kill

manic rune
normal crest
#

presumably they're limited tho

keen totem
#

ye

manic rune
#

so i cant really comment on that lol

normal crest
#

hello bepis

manic rune
#

hi srockw

spice wadi
normal crest
#

genuinely have come to like lua

keen totem
manic rune
#

i will continue working on balatro star rail one day

#

when i have motivation to continue drawing

keen totem
#

its just easy to use

normal crest
#

i will be honest bepis

#

i never played your mod, i'm sorry

manic rune
#

its fine

keen totem
#

and isnt container based

normal crest
#

just saw clips on the thread lol

manic rune
#

im working on a mod based on a game i quitted already 😭

outer basalt
manic rune
#

honkai star rail

manic rune
#

added gacha to balatro

normal crest
#

you quit hsr then?

manic rune
#

jokers have eidolons

#

equipment slots

#

etc etc