#💻・modding-dev

1 messages · Page 131 of 1

tall wharf
#

btw you can try this mod but you'll need the "Utage Charts" Joker to get bigger card selection than 5

zealous glen
#

There was a game I played where talking to non-English speaking players about the translated name of a skill would get it censored

tepid eagle
#

im using the latest version of steamodded, what contexts do i need to check for and exclude for just like a regular x_mult giving joker? my joker code has been revealed to be incredibly foolish

zealous glen
#

I imagine it should just be joker_main

violet void
#

yes I had the same issue, it kept triggering nonstop

zealous glen
#

Might be due to Joker retriggers

frosty dock
#

then don't remove profanity

tall wharf
#

there are things i should remove

zealous glen
#

Wait

tall wharf
#

the word list isn't exactly family friendly but it's also not trying to insult anyone

#

i curated the list a little bit myself

zealous glen
#

Nevermind I had a bad idea

tall wharf
#

not the entire list

frosty dock
#

that's fine, but a word list doesn't need to be family friendly

tall wharf
#

it's not trying to be

frosty dock
#

I don't see how recognizing something as a valid word would be insulting, either

tepid eagle
#

i hope my new joker works on the first try!
the nefarious context.repetition:

zealous glen
#

First Balatro mod to earn the 18+42+ age rating

#

Only for people aged 60 and up

frosty dock
#

Lmao

zealous glen
#

Also there are games with word lists

#

Like Scribblenauts

#

I imagine even Scrabble and Wordle curated their word lists

#

At least “Scrabble at home”

frosty dock
#

fair

tall wharf
#

i think the letters should give mult when scored

#

maybe a bit too OP?

weak brook
#

how could I intercept the consumable code that forces the consumable to go to the center of the screen and be destroyed? does anyone know what part of the code does that?

#

i'm looking at the use functions and i dont see that part of it, just the parts for the consumables' effects

plain apex
#

if you are making a boss blind how do you test it do you just run until you find it or can you force it in some way?

shell tangle
weak brook
#

yeah think thats it

#

thanks

shell tangle
mellow widget
#

counterpoint : when played it debuffs your entire deck and grants no chips so they never play slurs

tall wharf
violet void
#

wasnt there the name of the mod once

hollow patrol
#

hi, is there a way to check what the final mult of the last played hand is?

mellow widget
#

i probably am just blind, but i can't figure out how to change hands or discards. is there a function or?

hushed briar
#

tried to search for an answer here, do we know of how to target steamodded with lovely patches? i wanted to change the way editions are applied in standard packs, but steamodded seems to override the normal function

wooden nexus
mellow widget
violet void
#

idk, but its in the source code

weak depot
mellow widget
#

oh

mellow widget
weak depot
#

meet my child

weak depot
tall wharf
#

the real one just writes J

mellow widget
dull saddle
mellow widget
#

thx

weak depot
frosty dock
tall wharf
#

i have scaled it down a lot

weak depot
tall wharf
#

it was just too big

tall wharf
violet void
#

from 100 of a kind to this

tall wharf
#

oh wow just under 4 of a kind

tall wharf
#

hmmmmm

#

oh wow i got ante 0

plain apex
#

what did i do wrong here?

SMODS.Blind {
    loc_txt = {
        name = 'Fracture',
        text = { 'All played cards are destroyed' }
    },
    key = 'Fracture',
    name = 'Fracture',
    config = {},
    boss = { min = 1, max = 10, hardcore = true },
    boss_colour = HEX("672A62"),
    atlas = "Blinds",
    pos = { x = 0, y = 0 },
    dollars = 5,

    press_play = function (self)
        G.E_MANAGER:add_event(Event({
            func = function()
                -- Loop through the played cards in reverse order
                for i = #G.play.cards, 1, -1 do
                    G.play.cards[i]:start_dissolve()
                end
                return true
            end
        }))
        return true
    end
}
thorny adder
#

Hardcore = true ?

#

Whats that

plain apex
#

idk i saw that within other people blinds while looking into making blinds

thorny adder
#

Cause I never coded blinds

#

So idk

#

But I wonder what it does

plain apex
#

yeah me neither lol

tall wharf
cerulean rose
#

its trying to score a card that doesnt exist

tall wharf
thorny adder
plain apex
#

how can i fix it to destroy them AFTER they score?

tall wharf
tall wharf
plain apex
#

what would i put to do that?

tall wharf
#

i did this in my own mod


                G.E_MANAGER:add_event(Event({
                    func = function()
                        context.other_card:start_dissolve({ G.C.BLUE }, nil, 1.6, false)
                        return true
                    end,
                    delay = 0.5,
                }), 'base')
autumn coral
#

is there a way to loc_vars the name of a joker?

#

i need the names to be different per joker spawned

#

if there isn't by smods my ass is gonna make my own way idrc lmfao

frosty dock
autumn coral
#

that's not what i mean

#

i want the name to be #1# but it crashed when i tried that

frosty dock
#

vars don't work in names, I don't think

autumn coral
#

fuck

frosty dock
#

might need a custom generate_ui function for that

autumn coral
#

goddammit

#

why do i have to do everything myself

#

😭

#

mfw what was supposed to be the SIMPLEST part of the hardest item i'm adding to my mod is gonna take the longest likely

frosty dock
#

you can go off this and just change the name part

autumn coral
#

istg why is this so hard to read

#

uh

#

which part should i change?

#

i'm assuming i want something like this?

#

god hates me the most i guess

#

atp i'm going to make my own smods istg

cedar stream
autumn coral
#

suuuure

frosty dock
#

actually lemme see if there's a good way to support name vars baked into that function

tall wharf
#

amazing art

twin basin
#

anyone know why this is crashing? it says "46: attempt to index field 'extra' (a nil value)"

SMODS.Joker
{
    key = "Troll",
    loc_txt = 
    {
        name = "Troll Joker",
        text = 
        {
            "Removes all {C:attention}Cash{} when hand played",
            "{C:red}+mult{} = {C:attention}Cash{} * 10"
        }
    },

    rarity = 2,
    cost = 6,
    unlocked = true,
    discovered = true,

    atlas = "jokers",
    pos = 
    {
        x = 0,
        y = 0
    },

    config = {extra = {mult = 0}},
    loc_vars = function(self, info_queue, center)
        return {vars = {center.ability.extra.mult}}
    end,

    calculate = function(self, card, context)
        if context.joker_main then 
            local cash = G.GAME.dollars

            if G.GAME.dollars ~= 0 then
                ease_dollars(-G.GAME.dollars, true)
            end

            card.ability.extra.mult = cash * 10
            return
            {
                card = card,
                message = "+" .. card.ability.extra.mult,
                mult_mod = card.ability.extra.mult,
                colour = G.C.MULT
            }
        end
    end
}
tall wharf
#

alright

violet void
#

lua spotted

faint yacht
#

center.ability.extra.mult should be card.ability.extra.mult.

twin basin
#

ok now i can hover over the joker but when i play a hand it gives me the same error

#

now referring to this line

#

card.ability.extra.mult = cash * 10

#

i fixed it

nocturne estuary
gilded narwhal
#

I don't actually know how to fix this crash

#

Is there an easier way to just get the sprite of the current deck and use it for G.UIT.O

#

Because I honestly kinda have no idea what I'm doing

ionic verge
#

whats the text color used for stuff like '1/2 chance' in joker descriptions?

#

(this one)

wintry solar
#

{C:green}

ionic verge
#

thanks

nocturne estuary
#

card1 and card2 are both nil, why can't I set them to something?
It does go the first the way of the first if branch but says that upvalue card1 is nil

calculate = function(self,card,context)
        if context.setting_blind then 
            if card1 == nil and card2 == nil then
                print('this way')
                card_eval_status_text(card, 'extra', nil, nil, nil, {message = 'Steal!'})
                card1 = G.hand.cards[math.random(1, #G.hand.cards)]
                card2 = G.hand.cards[math.random(1, #G.hand.cards)]
                card1:remove_from_deck()
                card2:remove_from_deck()
            else
                print('that way')
                card1:set_edition(editions[math.random(1, #editions)])
                card2:set_edition(editions[math.random(1, #editions)])
                card1:draw()
                card2:draw()
                card_eval_status_text(card, 'extra', nil, nil, nil, {message = 'Return'})
                card1 = 0
                card2 = 0
            end
        end
    end
ionic verge
#

how is text bolded in descriptions?

#

nevermind i dont need it

violet void
cerulean rose
#

so when you try to get an element from it you get nil

nocturne estuary
nocturne estuary
#

how would I get two random cards from the hand at the start of a round then?

cerulean rose
#

also why are you setting the variables to 0 at the end?

cerulean rose
violet void
#

and put the stuff in an 'after' event, thats how I did it

nocturne estuary
hushed briar
#

does anyone know how to take_ownership of a booster pack? every time i try i just get this

weak brook
#

alright new complex thing i'm asking for help with

#

i'm making this thing have a texture in two layers

#

i wanna be able to adjust the tape_move and sleeve_move values to have the two layers move on the x axis

#

for an animation

#

the two layers render now but they dont move at all when the value changes

#

does anyone here know how to help with this?

zealous glen
#

what are the values

weak brook
#

well i saw the same results with them being both 0, or with them being 40 and -40. i thought those values might make a noticable change for testing, im not sure what the right value for them is until i get to test with them properly

#

right now they're put into this argument

#

so it should slide it along x if it changes, theoretically

zealous glen
#

Idk what the units are

weak brook
#

71x95

zealous glen
#

No

#

The in-game units

#

for the screen, etc.

weak brook
#

oh my resolution

#

thats 1440p

zealous glen
#

also nope

#

whatever unit system the game uses

#

just use the width of the card

weak brook
#

ok

#

nothing

#

maybe the issue isnt with that but rather the setup i have to setup the canvas

zealous glen
weak brook
#

i tried to have the love.graphics.draw have all the same info as from the previous pic before but it resulted in them not drawing at all

#

just two different textures

#

on top of each other

zealous glen
#

is it for a card?

weak brook
#

a consumable

zealous glen
#

so you should be able to use draw_shader for it I reckon

#

some of the paramenters offset the texture

weak brook
#

does that work with textures?

zealous glen
#

they used it for letters

tall wharf
weak brook
#

hmm

zealous glen
weak brook
#

good timing

#

hey aiko

#

can i see your draw_shader code

zealous glen
#

they sent it earlier

tall wharf
#

HELLO

zealous glen
#

and in hindsight I had something similar

zealous glen
# weak brook can i see your draw_shader code

This is the patch I use. It goes right after Hologram in the code, and looking at draw_shader should give you an idea of how to make it move more or less.

[manifest]
version = "1.0.0"
dump_lua = true
priority = 0

# Special soul sprites
[[patches]]
[patches.pattern]
target = "card.lua"
pattern = '''self.hover_tilt = self.hover_tilt/1.5'''
position = "after"
payload = '''
elseif self.config.center.key == 'j_vic_brazilian_miku' then
    self.hover_tilt = self.hover_tilt*1.5
    self.children.floating_sprite:draw_shader('hologram', nil, self.ARGS.send_to_shader, nil, self.children.center, 2*scale_mod, 2*rotate_mod)
    self.hover_tilt = self.hover_tilt/1.5
elseif self.config.center.key == 'j_vic_champions_belt' then
    local champions_belt_scale_mod = -0.065 + 0.015*math.sin(2.0*G.TIMERS.REAL)
    self.children.floating_sprite:draw_shader('dissolve', nil, nil, nil, self.children.center, 2*champions_belt_scale_mod, 2*rotate_mod, nil, 0.3 + 0.1*math.sin(0.8*G.TIMERS.REAL), nil, 0.6)
'''
match_indent = true
#

Champion's Belt moves further down

tall wharf
#

function aikoyori_draw_extras(card, layer)
    --print("DRAWING EXTRAS")
    if G.aikoyori_letters_stickers then
        if card.ability.aikoyori_letters_stickers then
            local movement_mod = 0.05*math.sin(1.1*(G.TIMERS.REAL + card.aiko_draw_delay)) - 0.07
            local rot_mod = 0.02*math.sin(0.72*(G.TIMERS.REAL + card.aiko_draw_delay)) + 0.03
            local drag_mod = card.velocity
            
            G.aikoyori_letters_stickers[card.ability.aikoyori_letters_stickers].role.draw_major = card
            G.aikoyori_letters_stickers[card.ability.aikoyori_letters_stickers]:draw_shader('dissolve', 0, nil, nil, card.children.center, 0.1, rot_mod - drag_mod.r, drag_mod.x * -3, movement_mod - drag_mod.y * -3)
            G.aikoyori_letters_stickers[card.ability.aikoyori_letters_stickers]:draw_shader('dissolve', nil, nil, nil, card.children.center, nil, rot_mod - drag_mod.r, drag_mod.x * -3, -0.02 + movement_mod*0.9 - drag_mod.y * -3, nil)

        end
        
    end
end
zealous glen
#

than most soul sprites

#

that's where I used math.sin

weak brook
#

so these cant be integrated into the draw function these have to be lovely patched?

zealous glen
#

Steamodded has a Center:draw method

#

maybe that could help

weak brook
#

yeah thats what i'm using

tall wharf
#

here is my patch


[[patches]]
[patches.pattern]
target = "card.lua"
pattern = """                if self.ability.name == 'The Soul' and (self.config.center.discovered or self.bypass_discovery_center) then"""
position = "before"
payload = """                aikoyori_draw_extras(self, layer)"""
overwrite = true
match_indent = true

zealous glen
#

I just never used it

weak brook
#

dps used it for speen

#

im basing it off that

zealous glen
#

I think it might be able to be used

#

but I never tried

#

I wanted to to find out

#

but I haven't yet

weak brook
#

this is dps' code

#

for speen

#

ok yeah im realizing the issue with you guys approach is that you're using the soul

#

i cant use the soul cause my top layer needs to be indistinguishable from the normal layer

zealous glen
#

you can make it indistinguishable

#

like with playing cards

weak brook
#

wouldnt it always have the moving around effect and drop shadow

zealous glen
#

you can change that

weak brook
#

how so 🤔

zealous glen
#

it's the rest of the arguments

weak brook
#

hm ok

zealous glen
#

The only one that could be tricky is the drop shadow depending on the position

weak brook
#

the way im doing this is like, under normal circumstances the top layer completely eclipses the bottom layer

#

once the moving effect happens both layers move in different directions so the bottom layer is shown halfway peaking out to the right

#

except for the whole activate button thing

#

i chose to scrap that idea and just intercept the use button instead

zealous glen
#

hmmm

#

That's peeking to the left

weak brook
#

ah yeah mistake i made in the video

#

changed my mind since it normally doesnt do that on usa cases

ionic verge
#

question, how hard would this be to code?

zealous glen
#

Not sure

weak brook
#

not hard, i think boss disabling is a boolean last i checked

zealous glen
#

There isn't an enable method

weak brook
#

you could turn it off and then back on

zealous glen
#

there's a method

weak brook
#

oh ok

zealous glen
#

which does whatever it needs to disable the blind

#

I think set_blind would have side effects

#

so you either figure out how to avoid them or give up

#

that's my motivational message of the month

zealous glen
#

but I think the way you described it shouldn't need to

weak brook
#

wish dps were active they'd probably figure out the problem here

zealous glen
#

dps?

weak brook
#

i mentioned them before

#

they made this happen with the same kinda code im attempting to use

#

only difference here is that only one layer moves, and it uses rotation instead of movement on the x axis

#

oh shit i think i figured it out

ionic verge
#

how do you code in a '1 In 2' chance for something?
like how hallucination works

weak brook
ionic verge
#

i see

#

and it just works i presume?

weak brook
#

yeah

ionic verge
#

cool

weak brook
#

lets fucking gooo

#

need to adjust the canvas so that it doesnt cut off the layers if i try to offset them more than this

#

but it works!

zealous glen
weak brook
#

the issue that i encountered was just uh

#

i had accidentlaly set the scale factor to 0 when initialzing them lol

zealous glen
#

gone, reduced to pixel

ionic verge
#

where would i look to see where to make tarot cards in the SMODS documentation?

zealous glen
#

SMODS.Center?

#

Maybe SMODS.Consumeable

ionic verge
#

sorry, dont mean new tarot cards, if that needed to be clarified

#

i meant have a joker make a tarot

zealous glen
#

ah

#

just look at vanilla code

ionic verge
#

which file would i look for

#

card.lua?

zealous glen
#

probably

ionic verge
#

whats with all the nil variables in create_card anyways

weak brook
stray warren
weak brook
#

how the fuck am i supposed to deal with this

ionic verge
#

does this just mean tarot or planet in the context of create_card

tall wharf
ionic verge
#

...looks like it

tall wharf
#

is it supposed to be tilted a bit every time you use it

weak brook
#

no its a vhs tape

#

and its being slid out of its case

#

i havent implemented it to smoothly do the animation yet

#

and it also is very limited in how far it can move out

#

also i fixed the soliataire effect i just had to add a "love.graphics.clear(1,1,1,0)"

random sleet
#

lets goooo ive been meaning to try something like that effect myself

tall wharf
# weak brook

ok how do i actually make custom custom info queue

weak brook
#

very simple lemme show ya

random sleet
#

(the gameplay effect not the visual)

tall wharf
#

(the text box)

weak brook
#

and then you do this in loc_vars

random sleet
#

(i was clarifying my statement not trying to interject in yours aikoyori sorgy)

weak brook
#

this is how we in cardsauce add credits to every joker

#

very handy

#

like this

tall wharf
#

my current art is super basic

random sleet
#

my current art is either by lyman, myself, or doesnt exist so

#

but maybe i still should get off my ass and put artist credit anyway

tall wharf
#

i know i sent this 5 million times already but I'm proud even without the art

zealous glen
#

I tried reading the code but I couldn't make sense of it

weak brook
#

love it

random sleet
# tall wharf

you should make the letters score based on their scrabble score

tall wharf
#

but instead it gains mult

#

to make up for the loss of suit stuff maybe

random sleet
#

strong flat power but falls off later

zealous glen
weak brook
#

whats your approach

zealous glen
tall wharf
#

i will need custom boss blind

#

all vowels are debuffed

#

troll

random sleet
#

words with less than two vowels will not score

tall wharf
#

hands without X will not score

#

finisher blind

zealous glen
weak brook
#

funny how Gappie was on both our examples

zealous glen
#

I took a long time because I was looking for that screenshot

#

because I haven't ported that one yet

random sleet
#

gappie the goat

ionic verge
#

is there documentation on create_card

#

how do i make a joker make the fool card

zealous glen
#

-# also hi @random sleet how have you been

zealous glen
tall wharf
weak brook
#

hey also

ionic verge
#

or both

tall wharf
#

or if you have a joker that interacts with alphabets

zealous glen
ionic verge
#

currently got this

zealous glen
weak brook
#

can the ease_value function do the thing i wanna do with the sliding out effect? like if i give that function a number variable and a new value will it gradually transition to that number over a set time

wicked leaf
weak brook
#

or do i have to make the code for that myself

tall wharf
zealous glen
ionic verge
zealous glen
#

the key

#

also maybe the position

weak brook
olive temple
#

Is there a general guide for diagnosing crashes? I'm using many mods together, which often causes crashes, and I'd like to be able to figure out which mod (or interaction between multiple mods) is causing the crash, but I can't really make heads or tails of the Steammodded crash logs. The one I'm looking at now, for example, mentions Code Cards from Cryptid and Speen from Cardsauce, even though I did not use either at any point during the run.

ionic verge
random sleet
zealous glen
tall wharf
#

help it's 7am i can't sleep no more

zealous glen
zealous glen
#

not the original time

weak brook
#

yeah that makes sense

zealous glen
#

also not in a loop but just inside the draw

weak brook
#

oh yeah

zealous glen
weak brook
#

well actually

#

the toggle here isnt happening in the draw function

#

its being triggered by the use button

zealous glen
#

yeah but the movement would be done at draw level

nocturne estuary
#

How could I fix the voucher redeem animations?
Here's the code:

calculate = function(self,card,context)
        if context.selling_self then
            local deletable_cards = {}
            card_eval_status_text(card, 'extra', nil, nil, nil, {message = 'Headshot!'})
            for k, v in pairs(G.playing_cards) do
                if v:is_face() then deletable_cards[#deletable_cards + 1] = v end
            end
            for i = 1, #deletable_cards do
                deletable_cards[i]:remove()
            end

            local voucherNum = 5
            while voucherNum > 0 do
                for i = 1, #base_vouchers do
                    if math.random(0, 1) == 1 then
                        if voucherNum > 0 and G.GAME.used_vouchers[base_vouchers[i]] == nil then
                            voucherNum = voucherNum - 1
                            redeem_voucher(base_vouchers[i])
                        elseif voucherNum > 0 and G.GAME.used_vouchers[advanced_vouchers[i]] == nil then
                            voucherNum = voucherNum - 1
                            redeem_voucher(advanced_vouchers[i])   
                        else 
                            break
                        end
                    end
                end
            end  
        end
    end

function redeem_voucher(pvoucher)
    local voucher
    G.E_MANAGER:add_event(Event({
        trigger = 'before',
        delay = 0.1,
        func = function()
            voucher = create_card('Voucher', nil ,false, nil, false, nil, pvoucher, nil)
            voucher.cost = 0
            voucher:redeem()
            return true
        end
    }))
    G.E_MANAGER:add_event(Event({
        trigger = 'after',
        delay = 0.6,
        func = function()
            voucher:start_dissolve(nil, false, 10, true)
            return true
        end
    }))
end
jade crescent
#

Is there a Lua specific editor that would help with UI configuration?
AKA a way to view the layout of Nodes and check for bugs?
Used to SQL code and have been just using Notepad ++ for stuff but having to launch the game to see the layout is a pain.

ionic verge
#

what do i need to change for this to make a fool card without crashing the game

zealous glen
zealous glen
weak brook
#

think it would help to get a bigger picture of what you're trying to explain to me. sorry im so dumb

zealous glen
zealous glen
#

there are some inputs that come from the game

#

like mouse position or card state

#

like when you hold a card

shell tangle
nocturne estuary
ionic verge
zealous glen
ionic verge
#

i need to create the fool

#

not it create something

zealous glen
#

Not what I asked

ionic verge
#

...

#

ok

zealous glen
#

The Fool creates a specific card

ionic verge
#

put 'The Fool' where the last nil is right?

zealous glen
#

No

#

Because the Fool is passing the card it wants to create to create_card

#

G.GAME.last_tarot_planet

#

so you replace that with the Fool's key

ionic verge
#

that is what i meant

zealous glen
#

the last argument is a seed so probably change it to something else

zealous glen
#

to avoid side-effects

ionic verge
#

can it be nil?

zealous glen
#

sure but "The Fool" is a name not a key

zealous glen
ionic verge
#

fool?

zealous glen
#

no

ionic verge
#

'fool'? i mean?

zealous glen
#

c_fool

ionic verge
#

got it

jade crescent
ionic verge
#

what needs to be changed here now?

zealous glen
#

Maybe the first argument needs to be the set

#

So Tarot

cedar stream
#

can i have some context so i can try and help

zealous glen
#

context.joker_main

ionic verge
#

im making the fool from a joker

cedar stream
#

oh so have a joker create a fool

ionic verge
#

yes

cedar stream
#

when are you having it happen

ionic verge
#

end of store

#

this is the perky joker

#

common perkeo

cedar stream
#

i have a joker that does something similar

ionic verge
#

ive got the context down

shell tangle
cedar stream
ionic verge
#

is that what those arguments mean?

#

i would have loved to have known that an hour ago

cedar stream
#

thats what makes it

ionic verge
#

the _type: area: legendary: etc

#

are those what the arguments mean

cedar stream
#

not sure what those mean, but if you dont want to brute force to figure out if it works i could do that part

ionic verge
#

please

#

i thought this joker was going to take 30 minutes tops

#

and it feels like it should have

zealous glen
#

I have Balatro in the project and it still has no idea

cedar stream
#

are you in the cryptid discord server

zealous glen
#

no

cedar stream
#

there are very few times im not in a vc here

#

and even when im not in a vc i am more than likly not doing anything so im avaliable

ionic verge
cedar stream
#

yea thats what i did, the code that creates it was actually sourced from morefluff's joker called "bad legal defense"

ionic verge
#

mhm

cedar stream
#

but my mod was only a test mod so not on github, and its super buggy

cedar stream
gilded narwhal
#

I'm trying to add a deck page to the run-info and the main thing that's slowing me down is I don't know how to put in the sprite of your deck

cedar stream
zealous glen
#

maybe another time

#

I'm going to sleep

cedar stream
gilded narwhal
weak brook
#

@zealous glen you want the code?

ionic verge
cedar stream
gilded narwhal
#

I want the deck to go like right here

zealous glen
ionic verge
#

i want Exact and Precise information on how this code should be changed to correctly have a custom joker spawn the fool into my consumables without it crashing or breaking

ionic verge
#

what. does. that. mean.

dreamy thunder
#

So it actually spawns it

zealous glen
#

example

ionic verge
#

thank you.

zealous glen
dreamy thunder
#

I mean its useless without it

weak brook
# zealous glen Yes! (also maybe <@182956788579041280> would be interested)

here it is, it's this file and also this lovely patch for intercepting the use button so it doesnt get destroyed

[[patches]]
[patches.pattern]
target = "functions/button_callbacks.lua"
pattern = '''
e.config.button = nil
local card = e.config.ref_table
'''
position = "at"
payload = '''
local card = e.config.ref_table
if card.config.center.activation then
    G.FUNCS.tape_activate(card)
    return
end
e.config.button = nil
'''
match_indent = true
zealous glen
#

I remember some weird behaviour where I spawned inert, floating Jokers

dreamy thunder
#

Its fun to mess arround with

zealous glen
weak brook
#

beats me 🤷‍♀️

zealous glen
#

you need to manually check the consumeble area isn't full

#

but also

#

the number of cards in the consumeable area isn't the number of cards in the consumeable area

#

because effects can try to create cards before other effects that create cards

#

hence the buffer keeps track of the actual number of cards that're supposed to be there

ionic verge
#

just tell me what i need to add to the if statement

#

or

#

i can probably find that myself

zealous glen
#

yeah anywhere with consumeable_buffer

#

it's usually the number of consumeables + (consumeable_buffer or 0)

#

something like that

ionic verge
#

i copied pasted this

#

what do i need to change this to what the actual chance is (for example to account for sixes)

gilded narwhal
#

YES YESY EYS EV sorry that took so long to do

ionic verge
#

if anyone has an answer, ping me, im getting food

pure quail
#

is there a way to round down, it offsets the entire screen and gets a lil annoying

elder vapor
#

and have loc_vars return G.GAME.probabilities.normal or 1, card.ability.extra.odds (or whatever your variable is for odds)

sand oasis
#

agreed with Halo

gilded narwhal
sand oasis
#

WHOA lmao

random sleet
#

then just set the use function of the consumable to toggle whether it'll apply its effect

#

also you can just set functions in a table

#
jimbobread_man = {
        config = {
            extra = {
                hands = 1
            }
        },
        pos = { x = 2, y = 1 },
        rarity = 2,
        loc_vars = function(_c) return {vars = { _c.config.extra.hands }} end,
        keep_on_use = function() return true end,
        use = function(_, self, area, copier)...end,
        can_use = function(_, self) return G.STATE == G.STATES.SELECTING_HAND end,
    },```
#

yeah good code block

gilded narwhal
pure quail
#

I put the name and stuff is there another file i have to register my deck in or sum

elder vapor
#

what does your localization file look like?

sand oasis
#

anyone know how I can find a joker through an iterative process and destroy it? i haven't been able to find something exactly like this anywhere and it's hard to translate Ceremonial Dagger and Madness' abilities into finding and matching up to a specific joker

frosty dock
#

the SMODS.find_card in question:

sand oasis
#

I did see that but I'm not sure exactly how to use it

frosty dock
#

anyways you're comparing a card object to a string

#
for _,v in ipairs(SMODS.find_card('j_sp_thief')) do
  v:start_dissolve()
end
#

for your approach you'd have to check G.jokers.cards[i].config.center_key == 'j_sp_thief'

sand oasis
#

in terms of NOW it's searching the jokers for their key

frosty dock
sand oasis
#

yeah

sand oasis
frosty dock
#

pairs does the same for all key-value pairs in the table and doesn't guarantee any specific ordering

#

so if you set t.num = 10and iterste with for k,v in pairs(t) do ... end, at some point in the loop you'll get k='num', v=10 as well as the previously mentioned pairs, but not necessarily in that order

sand oasis
#

Thank you so much for explaining it to me!

pure quail
#

i have to be stupid help me

#

why isn't it recognizing

sick sparrow
gilded narwhal
long sun
#

hi, really weird bug, what's causing it? ^^

#

code:

calculate = function(self, card, context)
    if context.setting_blind and not (context.blueprint_card or self).getting_sliced and #G.consumeables.cards + G.GAME.consumeable_buffer < G.consumeables.config.card_limit then
      G.GAME.consumeable_buffer = G.GAME.consumeable_buffer + 1
      G.E_MANAGER:add_event(Event({
        func = function()
              local chosen_card = 'c_devil'
              local chosen_message = '+1 Devil'
              if pseudorandom('goldenfiddle', 1, 2) == 1 then
                chosen_card = 'c_chariot'
                chosen_message = '+1 Chariot'
              end
              local new_card = create_card("Tarot", G.consumables, nil, nil, nil, nil, chosen_card, 'goldenfiddle')
              new_card:add_to_deck()
              G.consumeables:emplace(new_card)
              G.GAME.consumeable_buffer = 0
              new_card:juice_up(0.3, 0.5)
              card_eval_status_text(context.blueprint_card or self, 'extra', nil, nil, nil, {message = chosen_message, colour = G.C.PURPLE})
          return true
        end
      }))
    end```
#

(the bug is that the +1 Devil text appeared on the top-left)

#

(also, all of the cards triggered at the same time, which i don't want)

elder vapor
#

context.blueprint_card or self should be context.blueprint_card or card iirc

long sun
#

trying that now :D

#

okay, that worked!

#

though, is it possible for them to trigger at different times?

#

like, one after the other?

elder vapor
#

yeah, just add a delay inside your Event

#

delay = 0.5 should do the trick

#

above func

long sun
#

trying that too

#

that didn't work

elder vapor
#

did they all activate at the same time?

long sun
#

well, the texts appeared sequentially, but that was the case before the delay was added

ionic verge
long sun
#

the cards were generated at the same time

open dragon
#

download the more speed mod

long sun
#

compared to Ramen, ya it seems a tad slow

ionic verge
#

ok its normal

#

just makin sure

long sun
#

i'm fine with it though :D

open dragon
ionic verge
open dragon
#

it looks about right for speed 4

elder vapor
#

oh ramen has delay = 0.2, in its return table

ionic verge
#

oh so i can decrease that?

elder vapor
#

so does yorick

long sun
#

which i don't quite get

open dragon
elder vapor
#

yeah

ionic verge
#

thanks yall!

elder vapor
#

is the default 1?

#

if so then setting it lower will speed it up

ionic verge
#

presumably, but-

#

fuck i forgot a comma

ionic verge
elder vapor
long sun
#

oh i saw that, but removed it =w=

#

which do i add the delay to?

elder vapor
#

try putting the card creation inside another event

#

none prob

long sun
#

👍

elder vapor
#

if you want it to animate like its cartomancer then you don't need to change the variables

long sun
#

hm, now it's broken again. code:

calculate = function(self, card, context)
    if context.setting_blind and not (context.blueprint_card or self).getting_sliced and #G.consumeables.cards + G.GAME.consumeable_buffer < G.consumeables.config.card_limit then
      G.GAME.consumeable_buffer = G.GAME.consumeable_buffer + 1
      G.E_MANAGER:add_event(Event({
        func = function()
          G.E_MANAGER:add_event(Event({
            func = function()
              local chosen_card = 'c_devil'
              local chosen_message = '+1 Devil'
              if pseudorandom('goldenfiddle', 1, 2) == 1 then
                chosen_card = 'c_chariot'
                chosen_message = '+1 Chariot'
              end
              local new_card = create_card("Tarot", G.consumables, nil, nil, nil, nil, chosen_card, 'goldenfiddle')
              new_card:add_to_deck()
              G.consumeables:emplace(new_card)
              G.GAME.consumeable_buffer = 0
              new_card:juice_up(0.3, 0.5)
              return true
            end}))
              card_eval_status_text(context.blueprint_card or card, 'extra', nil, nil, nil, {message = chosen_message, colour = G.C.PURPLE})
          return true
        end
      }))
    end
  end```
elder vapor
cedar stream
elder vapor
#

since its a local variable and its created inside of the second event, its only accessable there

long sun
#

bingo, that worked!! tysm :D

elder vapor
valid trench
#

I'm a little confused on why this doesn't work, isn't the function being loaded getting the same variables the calculate function it's part of passed into it, why is it not understanding what context is

cedar stream
#

its only visual but i have had a crash from it before

elder vapor
#

either its not better calc compatable or its not programmed correctly

cedar stream
#

wdym "not better calc" compatable

elder vapor
#

its apart of the recent steamodded changes to make joker calculation (and other stuff) more streamlined

#

only matters for mod developers

cedar stream
#

ik what better calc is

elder vapor
#

some of the changes made break mods

cedar stream
#

just not understanding what you mean by not compatable

#

and is there no known reason why it happens

elder vapor
#

from what i can tell that joker is missing some context checks

cedar stream
#

any idea on what checks would matter on when it triggers based on game state?

elder vapor
#

checking if a hand was actually played 😭

cedar stream
#

so in the new calc we need to add a check for that, otherwise it triggers on every gamstate update/change

elder vapor
#

in general

#

that looks like the return message for context.joker_main

misty cape
#

Hey guys, new here! I just made a mod with my own card skin for High Contrast Cards and I was wondering if I could also change the color of text for each suit in the ui to match. I want the Hearts text on jokers and in menus to be pink rather than red and same for other suits. I'm very unfamiliar with coding but am willing to learn a little but need a bit of a point in the right direction! Using steamodded and lovely. any help is welcome, thanks 😄

ionic verge
#

how do you add this little side window thing?

#

for context, like a card mentioning a specific other card, i dont need it for the actual sticker presumably

cerulean rose
#

add to the info_queue table passed to loc_vars

cerulean rose
ionic verge
#

also, second question, whats the code thing for making description text smaller?

cerulean rose
ionic verge
#

so c_fool

cerulean rose
#

yup

ionic verge
#

thx!

cerulean rose
#

well actually G.P_CENTERS.c_fool

ionic verge
#

got it

#

thanks

long sun
#

had a joker idea similar to the Golden Fiddle: Reverie

#

Create a copy of The Heirophant or Temperance when Blind is selected (Must have room)

#

these cards chosen because they're the most peaceful

cerulean rose
#

big dolar

ionic verge
cerulean rose
#

no

#

add to the table

long sun
#

Golden Fiddle spawns Tower as its power card, and Devil as its money card

cerulean rose
#

info_queue[#info_queue + 1] = G.P_CENTERS.c_fool
alternatively, table.insert(info_queue, G.P_CENTERS.c_fool)

ionic verge
#

this then?

cerulean rose
#

not a return

ionic verge
#

ok

#

it works

#

thanks!

cerulean rose
ionic verge
#

how do i set this up so it actually responds to changes in chance (i.e. from oops all sixes)

elder vapor
#

did i not tell you earlier

ionic verge
#

yeah but it just says nil in nil chance

#

oh i didnt see the second part

elder vapor
#

did you not setup loc_vars

ionic verge
#

yeah i didnt

#

mb mb

#

i didnt see it

long sun
#

i think this should be Uncommon, the Fool is one of the top 3 Tarots

ionic verge
#

i think its fine tbh

#

between the 1/2 and having to be at the shop i think its good

#

also consider hallucination is also 1/2 and gets more opportunities to trigger and is common

long sun
#

ya but it randomly selects its Tarots

#

so you can get eg. The World

ionic verge
#

yeah

long sun
#

which 99% you sell

ionic verge
#

sell the world?

#

really?

#

at worst thats a 75% chance

#

(considering youve started building up one of the other suits)

#

and then theres also blackboard, which helps it

long sun
#

well, sometimes suit fixing can be good, but in my experience i go with Deaths, Strengths and Fools to build my deck

#

you sometimes want to hang onto a suit fixing tarot if you get in a bind

#

but, compared to the others, i think they're pretty weak ^^

ionic verge
#

(back to discussing the world) to me its more like 'no reason not to use it'

#

expecially bc youre getting it from a pack theres a non zero chance you can use it right away

misty cape
#

the only thing in my lua currently is what i copied from a template to make your own card textures

#

im even confused about how im supposed to go about structuring everything tbh lol. ill gladly check out any other resources for learning if there are better options

cerulean rose
#

no
thats for adding new suits, not for reskinning existing suits

runic pecan
#

Is the "prevented from shattering" doable?

#

remove "played" since it doesn't really matter if they're played or not

cerulean rose
#

wdym by prevented from shattering

runic pecan
#

I remember there's a joker that stops glass card from getting destroyed.
I'm asking this in case it's a false memory.

cerulean rose
#

but probably hook the glass shattering code

runic pecan
#

I... haven't learned the hook part of lua. Or of any language, maybe.

cerulean rose
#

patch would probably be required actually

runic pecan
#

What I originally planned to do is prevent the shatter unconditionally and run a separate 1 in 4 chance to handle the upgrade.

cerulean rose
#

i mean youd have to patch there anyway to prevent the shatter

#

also doing a second 1 in 4 would make it technically not seed accurate

runic pecan
#

So where can I learn/ look up the how-to about making a patch?

cerulean rose
#

you can look at steammodded itself for how to format lovely patches

#

and search the source code to find where to patch

#

do you know how to do this^

runic pecan
runic pecan
cerulean rose
#

yup

ionic verge
#

i never got a complete answer, how do i set this up right?

cerulean rose
#

loc_vars should return a numerically indexed table

#

the numbers correspond to the numbers in the description

ionic verge
#

mhm

#

oooooh

runic pecan
ionic verge
#

and set up odds in config right?

runic pecan
ionic verge
#

cool

#

lol i havent had to set up config yet for this joker

runic pecan
#

config = { extra = { odds = [your number] } }
in case you haven't look it up somewhere else

pulsar flower
#

i'm trying to make a custom blind that applies an effect when a card scores, is there something in steamodded that handles something like this

ionic verge
#

game crashed upon looking at description

#

wait

pulsar flower
#

self probably

ionic verge
#

mmm

#

better?

runic pecan
# ionic verge

Usually I use "loc_vars = function(self, info_queue, card)"
Either card.ability -> center.ability
or ,center) -> ,card)

ionic verge
#

besides the card to self change, no code change

#

i see

pulsar flower
cerulean rose
#

don't call a card object center

runic pecan
ionic verge
#

now it crashed upon looking at an in play version of it (that had a sixes tied to it)

#

im trying changing back to self but

#

no dice

sturdy compass
#

Here's an odd bug I'm running into. The first joker isn't being "retriggered" per say but I suppose it's technically being triggered multiple times? Any ideas for how I could fix this?

runic pecan
sturdy compass
#

I'm not trying to create more retriggers though, hence why it is zero

#

I'm trying to track them

cedar stream
#

is it not retriggering

#

cuz it is supposed to retrigger the playing cards right?

sturdy compass
#

There are no retriggers in the video, however the card still detects them

#

That's the issue

cedar stream
#

is it supposed to

pulsar flower
#

i guess the game considers that effect as a retrigger

runic pecan
cedar stream
#

cuz i might know the problem if its supposed to retrigger the playing cards

ionic verge
#

game crash on viewing the joker while not in the collection

sturdy compass
#

And for whatever reason, the other joker, despite not retriggering, is causing it to detect retriggers

cedar stream
#

its due to the context.other_card ~= card

#

as that is saying that the joker is not reading if a playing card is played

sturdy compass
cedar stream
cedar stream
ionic verge
#

when viewing the joker's description

cedar stream
#

in the start screen or during a run

ionic verge
#

it was while in a round but it should happen during shop/whatnot too

cedar stream
#

what does it do

ionic verge
#

i believe it has to do with the odds in its description

cedar stream
ionic verge
#

also, works while in the collection

cedar stream
#

what is table.insert meant to do

ionic verge
#

add that

pulsar flower
#

add the fool description to the side of the main description

ionic verge
#

but thats for sure not the problem

pulsar flower
#

man 🐌

ionic verge
#

bc it worked before i added the odds stuff

cedar stream
#

well i cant see the full code

#

or what line that is at

ionic verge
#

...
yeah let me check the line rq

cedar stream
#

is cryptid enabled?

ionic verge
#

no

cedar stream
#

try enabling or adding it

ionic verge
#

not touching that beast till i get my collection complete

ionic verge
cedar stream
#

some weird crashes get fixed from adding it

runic pecan
pulsar flower
#

it doesn't necessarily replace

runic pecan
#

replace when "at", insert when "before" or "after"?

pulsar flower
#

it finds a piece of code and then allows you to put something before, after or at it(?)

#

i think so

runic pecan
#

That makes thing easier.

pulsar flower
#

its fairly simple

cedar stream
sturdy compass
#

No kidding???

runic pecan
#

While we're at it, what is the difference between patch.pattern and patch.regex?

sturdy compass
#

regex will detect very specific parts as opposed to entire lines

cedar stream
sturdy compass
ionic verge
#

so nothing looks wrong with this bit of code, right?

#

and nothing with this either

cedar stream
#

not that i can see, why?

ionic verge
#

cus i believe thats the thing causing it

#

because the other part of vars works just fine

#

and card.ability.extra.odds should refer to the card's odds variable in config

sturdy compass
cedar stream
#

yea that would do it

ionic verge
#

center is worse iirc

#

but ill try

cedar stream
#

center calls the config set in the cards code

ionic verge
#

upon viewing the joker's description while it was in my joker slots

#

note that this doesnt call for center, it calls for card

#

better pic

sturdy compass
#

well why is it doing that

ionic verge
#

because someone told me to do that

#

but ill change it too

#

crashes here

#

at the same point

#

sigh

#

its because it was a joker from a previous savestate

#

from before all the patching

sturdy compass
#

Always remember to ctrl + s lmfao

gilded narwhal
ionic verge
#

and it works with the fucking dice

#

fuck me

runic pecan
#

I just realize I might have to rewrite the whole card:shatter function...
'cuz I ftlog can't find the 1 in 4 part in card.lua

gilded narwhal
#

forget it

wind turtle
gilded narwhal
#

i figured it out

cerulean rose
#

and remove the card

runic pecan
cerulean rose
#

is probably somewhere else then

#

functions:state_events.lua:961

runic pecan
#

"if scoring_hand[i].ability.name == 'Glass Card' and
not scoring_hand[i].debuff and
pseudorandom('glass') < G.GAME.probabilities.normal/scoring_hand[i].ability.extra then"
Wow, that's a long one.

merry raven
#

How do you create a custom set for Consumables?

runic pecan
#

So, I'm going to [[patch]] this part...

cerulean rose
#

yup

cerulean rose
merry raven
#

Gotcha, thanks

tall wharf
#

improving mod performance by generating a list of wildcards can match words

merry raven
#

What's the prefix for Consumables? Joker has j, Enhancements has m, etc etc

elder vapor
#

c

runic pecan
# runic pecan So, I'm going to [[patch]] this part...

pattern = "(?<indent>[\t ]*)if scoring_hand[i].ability.name == \'Glass Card\' and not scoring_hand[i].debuff and pseudorandom\(\'glass\'\) < G.GAME.probabilities.normal/scoring_hand[i].ability.extra then\n([\t ]+.*\n)*end"
Is this correct?

ionic verge
#

whats the way to check for a certain type of card played or discarded (in this case im looking for face cards)

runic pecan
ionic verge
#

how would i have a joker have a playing card generate money

#

this method doesnt seem to work

faint yacht
#

Is this in a calculate or calc_dollar_bonus?

vivid oyster
#

info_queue[#info_queue + 1] = {key = 'c_hermit', set = 'Tarot'}

what do I have to put in this line or any other in a joker to show the 20 dollars in the hermit info queue, it just shows as $nil atm

ionic verge
#

do i have to move it?

faint yacht
#

I just do this.

ease_dollars(card.ability.extra.money)
card_eval_status_text(card, 'extra', nil, nil, nil, {message = '$'..card.ability.extra.money, colour = G.C.GOLD})
#

calc_dollar_bonus is money given at end of round i.e. Golden Joker or Cloud Nine.

ionic verge
#

i seeee

#

makes sense

#

so i can just replace the code in that else statement and not worry about it?

faint yacht
#

Comment it out first, then try the two lines I've given for what you are trying to do.

ionic verge
#

fair nuff

#

didnt work

#

didnt like the second line

faint yacht
#

You're using card.ability.extra.dollars.

#

I've given use with card.ability.extra.money. Replace with card.ability.extra.dollars.

ionic verge
#

mmmmm

#

makes sense

#

works

#

it works

#

upon testing of it being debuffed, the message doesnt appear, despite this code presumably working in the vanilla joker that i stole this from

#

the debuff still takes effect, just doesnt do the message

nocturne garnet
ionic verge
#

does it need the context too

nocturne garnet
#

well yeah

ionic verge
#

i swapped that out a couple times

nocturne garnet
#

unless you defined other_card already

ionic verge
#

it was self originally

#

but that also didnt work

nocturne garnet
ionic verge
#

other_card

nocturne garnet
ionic verge
#

i tried that too

nocturne garnet
#

can you show me your calculate function actually

ionic verge
runic pecan
#

Is this the correct variable name?
I kinda forget where to look it up.

nocturne garnet
# ionic verge

yeah you should be replacing self with card, not other_card

#

you havent defined other_card at all

#

so its just nothing

ionic verge
#

i tried setting it to card

#

other_card was my second idea

nocturne garnet
#

wait

#

does it still calculate the other_card with its debuffed anyways

ionic verge
#

the effect gets prevented from the debuff, but no debuff message plays

ionic verge
tall wharf
nocturne garnet
nocturne garnet
# ionic verge

are you sure you shouldnt replace context.other_card with card here?

ionic verge
#

i did

#

and retried it, and the video was done with that code in effect

ionic verge
#

a note, i stole that code block from reserved parking, and i presume it works just fine there

#

(yeah the message contents is different but surely thats not the problem)

nocturne garnet
#

holon gimme a minute

nocturne garnet
#

since the card is debuffed

ionic verge
#

mhm?

nocturne garnet
#

card:is_face() wont work

#

just do :is_face(true)

#

instead of :is_face()

ionic verge
#

so add (true)?

#

and thats it?

nocturne garnet
#

basically just add a true yes

ionic verge
#

cool

#

it works!

#

thanks so much

deep sage
#

very silly question; would anyone happen to know off the top of their heads where the dialogue for jimbo (ie. when you lose / win a run) is stored in the files

gilded narwhal
#

All of the dialogue stuff is stored in localization

crisp coral
#

something with quip in en_us.lua

forest hinge
#

is it at all possible to get logging functionality from inside vanilla card.lua for the sake of debugging an attempted patch? I have some code which I thought should be pretty straightforward but it's not behaving how I expect

deep sage
#

thanks !!!! ^_^

ionic verge
livid tapir
ionic verge
#

i thought a joker that made a fool card on shop end would be easy to implement

#

it took me 2.5 hours i think

forest hinge
#

yeah, I am used to things not going my way

#

just want to debug so I can see why! :)

livid tapir
ionic verge
#

it ended up being three lines i think

livid tapir
#

lol

#

i do have a very funs idea (that will probably take me 50 years to code 2 lines of it)

wintry brook
#

I have a consumable type that I want to be more of a square shape but in game it squishes it to the normal card size. I see that Wee Joker is hard coded to be smaller, but is there a good way I can make every consumable of my type square?

cerulean rose
livid tapir
#

something fun about github is that you can just take the pull request version instead of normal if you so happen to want that before its merged

#

i learned that when i was today old

#

😭

cerulean rose
#

actually with this you could just add the file to your mod instead!

livid tapir
#

yeah that too

#

include some apis in your mod why wont ya

wintry brook
cerulean rose
#

you gotta do what you gotta do

#

i mean i've done this so much that i've at one point considered splitting the api parts into their own mod

nocturne garnet
#

i make your hard blinds harder 😈

cerulean rose
#

that doesnt even make sense

forest hinge
#

does something in SMODS override how spectral cards (specifically grim, incantation, familiar) work?

nocturne garnet
forest hinge
#

even if I literally remove all the card-adding code in card.lua for those cards, it still happens normally

gilded narwhal
#

Thoughts?

forest hinge
#

did you ever figure this out? I'm running into the same thing

wintry brook
runic pecan
#

What expression should I change \'Glass Card\' into?

thorny adder
#

Its tainted samson right

cerulean rose
#

it's set within the center

#

in the center's definition you would include pixel_size = { w = 5 },

gilded narwhal
wintry brook
rocky heron
gaunt thistle
#

I can't remember if that's a regex syntax token off of the top of my head

#

(also it's 400 where I am and I'm exhausted, so I might've missed somethning)

runic pecan
#

Now it says

#

I assume it needs something like

tall wharf
#

uhhhhhh

#

i didn't mean to do this

cerulean rose
runic pecan
cerulean rose
#

nothing

tall wharf
#

how do i change the turquoise lmao

gaunt thistle
sick sparrow
gaunt thistle
#

the change you proposed isn't valid lovely patch syntax

#

that's just a comment

cerulean rose
#

deck of justice if we didn't have minecraft programmer art glass

tall wharf
#

😭

sick sparrow
runic pecan
sick sparrow
#

the joker of blocks

runic pecan
#

I had to censor my username

sick sparrow
#

and jimbo hates that joker

#

looks wee different balatrojoker

gaunt thistle
#

share the patch in question (all of it, not just the pattern)

runic pecan
merry raven
#

I want to create a specific custom Consumable but I'm not sure how the syntax should look like

card:add_to_deck()
G.consumeables:emplace(card)
G.GAME.consumeable_buffer = 0```

Does this look good? `raid_elements` is the key of my custom Consumable type, and `c_fm_voltaic_mote` is the custom Consumable I made to spawn
sick sparrow
tall wharf
#

what have i done

pliant hawk
#

how can I install a modpack

sick sparrow
cerulean rose
#

i'm trying to make a booster pack but there's green sparkles around the cards that won't go away

cedar stream
pulsar flower
#

i made a patch that triggers my custom boss blind for every scored card, but the context simply doesn't work. is there any reason for the passed context have all its elements be nil?

frosty dock
#

what you're calling context here is just the blind prototype

#

(also doesn't this fail/crash on literally any other blind that doesn't have this function?)

pulsar flower
sick sparrow
#

how to take ownership of high card?

frosty dock
sick sparrow
#

does it require PREFIX if the card is in another mod?

#

except that another mod is same author as the mod calling create_card()

dreamy thunder
#

how to make custom rarities

#

i dont know how they work

violet void
sick sparrow
#
SMODS.Rarity{
    key = "gerio_unobtainium",
    loc_txt = {
        name = 'Unobtainium', -- used on rarity badge
    },
    pools = {}, -- you are not supposed to get this cards anyway
}
dreamy thunder
violet void
dreamy thunder
#

i tried that also

violet void
#

well, rip

dreamy thunder
#

but i never really went in that deep

#

well

#

time to waste a couple of hours then

sick sparrow
dreamy thunder
#

i mean i do have the same thing

#

but thanks

violet void
sick sparrow
violet void
dreamy thunder
#

oh yeah

violet void