#💻・modding-dev

1 messages · Page 539 of 1

timid zinc
#

I have a consumable type with 22 items but it isn't laid out like this. How do I make it laid out like that?

clear ocean
drowsy heath
#

can someone help with my issue

#

i dont get what i am supposed to dooo

clear ocean
#

m_[PREFIX]_[ENHANCEMENT KEY] i think

oblique lotus
#

Question: Is it possible to add a description not connected to an object to G.P_Centers?

drowsy heath
#

ill try that

clear ocean
#

so for example if your enhancement is tainted and your prefix is yoyorick it will be m_yoyorick_tainted i think

#

last thing i can ask if the 1 in 10 chance is balanced

manic rune
oblique lotus
oblique lotus
clear ocean
#

thanks

#

But I cannot fully test until I learn how to hook it up but I need to get some rest

manic rune
#

hook to generate_UIBox_ability_table or smt, then you want to change the return to be using the new description

drowsy heath
#

why is my enhancement showing a ui error

clear ocean
#

You need a loc table or file for that

#

Sorry I’m off to sleep but smods and vanilla remade wiki should help

drowsy heath
#

its fine

clear ocean
#

And the nice folks here can help

subtle merlin
drowsy heath
#

no its weird hold on

subtle merlin
#

It's an issue with your localization, mostly

drowsy heath
#

i forgot how to add enhancements to localization so i kinda just needed that

#

all ik is consumables and jokers

subtle merlin
drowsy heath
#

the flipped one

#

thats the enhancement

#

the joker isnt finished

#

i make the names and all that later

#

once the joker works

subtle merlin
#

It'd be really cool if it did, wouldn't it

drowsy heath
#

i forget that is a thing sometimes

#

but half the time that just leaves me confused like when i tried to make a deck

#

that went bad and i packed it in

#

but for loczation it will be fine

subtle merlin
#

If there's an issue, first consult the documentation on both the SMODS wiki and the Vanilla Remade wiki (I'd provide links but I'm not at my computer rn, if someone else that's lurking here could please provide them)

subtle merlin
#

-# I keep on adding it to my threads list idk why discord removes it so much-

frosty rampart
timid zinc
#

i see

#

thank you

manic rune
#

but you can just type # starter pack (without the space between # and s) lel

modern kindle
#

bepus

manic rune
#

hi dil

modern kindle
#

hello

#

i did not make more progress with what i asked you earlier

#

i instead made it to another extreme

#

lmao

manic rune
#

😭

modern kindle
#

i made ALL cards say + Mult instead of the amount

manic rune
#

what the hell happened lol

#

mm

#

yeah you need a flag

#

you see the card argument in the function?

modern kindle
#

i tried that also but it didnt seem to read it properly in order to set the correct amount

#

like it was just + Mult not + x Mult

manic rune
#
if card and card.ability and card.ability.converted_to_mult then
  --use the new localize
else
  --use the old localize
end
#

make sure its card and not _c lol

manic rune
#

the place where you patched before has the loc vars of playing cards

#

make sure your new description is checking the correct place

modern kindle
#

isnt the right place just the new area in ability, so id just do ability.converted_mult

manic rune
#

wuh

modern kindle
#

or do you mean the localization entry

manic rune
#

this place

modern kindle
#

yeye

#

well, its workin lmao

gleaming crescent
#

How to make a blind appear with a chance?

#

Oh, I've rewritten the blind system, I'll have to figure out this myself

glass scaffold
#

How do I make a mod load code from separate files?

gleaming crescent
frosty rampart
gleaming crescent
#

Wait, does the Blind:in_pool even work?

frosty rampart
#

it should

gleaming crescent
#

Maybe I'm missing some lovely injections

#

Because in source code there's no such thing as in_pool

frosty rampart
#

i assume SMODS.Blind inherits it from a higher-up class that it extends from

modern kindle
#

im fairly certain in_pool does work, i use it for a blind you can only get by cheating

gleaming crescent
#

Yup, I forgot to check blind.toml

gleaming crescent
modern kindle
#

in what way

gleaming crescent
#

It's here

modern kindle
#

you mean showdown vs not?

gleaming crescent
#

I have my own system for small and big blind, and I forgot to insert some logic for in_pool

frosty rampart
#

no this line does at least kinda sound like there's a way to define an entirely non-boss blind

boss: Marks this Blind as a Boss Blind and specifies on which Antes it can appear ({ min = 1, max = 10 }). max is an artifact and not functional. Use in_pool instead for advanced conditions.
(emphasis mine)

modern kindle
#

i know at some point eremel wants to make a way for custom big and small blinds in smods

modern kindle
#

he didnt make it sound very simple, said there was lots and lots of things to change to make them work

gleaming crescent
#

My system only adds thing, which means full compatibility with other mods (which don't overwrite my patches)

gleaming crescent
#

Wait, SMODS doesn't register in_pool in my case

#

Litteraly, blinds don't have in_pool methods

frosty rampart
#

yea this sounds like an issue with your situation in particular, considering how much you've adjusted blinds

glass scaffold
#

how do I adjust the blind size from a Joker?

gleaming crescent
gleaming crescent
#

Yay, now game calls in_pool

#

It doesn't work tho

glass scaffold
gleaming crescent
glass scaffold
gleaming crescent
#

Wait, I messed up

gleaming crescent
frosty rampart
#

i don't think you're supposed to have the commas in the function part of the event

glass scaffold
gleaming crescent
#

@glass scaffold remove thees commas

glass scaffold
gleaming crescent
glass scaffold
modern kindle
#

WCCollection': [SMODS WCCollection "components/jokers.lua"]:643: '}' expected (to close '{' at line 636) near 'end

Missing close somewhere it looks like

frosty rampart
#

the end on 643 shouldn't be there actually

#

just delete it entirely

glass scaffold
daring heron
#

how do i make a joker self destruct after 5 rounds again

wintry solar
daring heron
#

iirc there arent any jokers in vanilla that do that

#

i mean theres decreasing jokers

#

but that isnt really what i'm looking for, i just want it to destroy after 5 rounds

shell sequoia
#

Does it not

#

Well

frosty rampart
#

make a decreasing joker but the decreasing value is actually just a round counter that starts at 5 and it doesn't affect the joker's calculation at all (except for when it checks when to destroy itself)

shell sequoia
#

The difference is that it reduces its mult every round

daring heron
#

hopefully

#

also how do i make it load this folder again

#

i forgar 💔

daring heron
#

yeah i tried that

frosty rampart
#

well in your case jokers is a folder, not a file
it's also in the items folder for you

daring heron
#

yeah

frosty rampart
#

the examples in the wiki are for this setup exactly

#

you would need to do the snippet for loading files from a subfolder, except replace "jokers/" with "items/jokers/"

#

(and a similar replacement for in the getDirectoryItems function call too)

daring heron
#

thankss

#

epic

#

ok i have no idea what this is

#

and also not sure what i should change to make it self destruct after 5 rounds instead of decrease

#

do i still need card.ability.extra.xchips = card.ability.extra.xchips - card.ability.extra.rounds_left?

#

or should it just be card.ability.extra.xchips = card.ability.extra.xchips

#

or just nonexistant

#

currently it doesnt decrease in rounds but it does give the xchips

#

This is what i have:

        if context.end_of_round and context.game_over == false and context.main_eval and not context.blueprint then
            if card.ability.extra.rounds_left <= 0 then
                G.E_MANAGER:add_event(Event({
                    func = function()
                        play_sound('tarot1')
                        card.T.r = -0.2
                        card:juice_up(0.3, 0.4)
                        card.states.drag.is = true
                        card.children.center.pinch.x = true
                        G.E_MANAGER:add_event(Event({
                            trigger = 'after',
                            delay = 0.3,
                            blockable = false,
                            func = function()
                                card:remove()
                                return true
                            end
                        }))
                        return true
                    end
                }))
                return {
                    message = localize('k_extinct_ex'),
                    colour = G.C.ATTENTION
                }
            else
                card.ability.extra.xchips = card.ability.extra.xchips
                return {
                    message = localize { type = 'variable', key = 'a_mult_minus', vars = { card.ability.extra.rounds_left } },
                    colour = G.C.CHIPS
                }
            end
        end
        if context.joker_main then
            return {
                xchips = card.ability.extra.xchips
            }
        end
    end
#

ok it still says "-4 mult" when it decreases but other than that it works

#

how would i change that?

wintry swallow
#

wrong katenope

daring heron
#

so does anyone know how i can change this to say "-1 round" instead of "-4 mult"

#

tried message = localize ('-1 Round'), but that didnt work

#

probably need to do smth in the localization file

#

now that i think about it

#

wow i actually fixed it by myself

sturdy compass
hexed mist
#

I wasnt sure where to put crash reports but does anyone know why this Rofflatro Mod crash happens?

foggy ginkgo
#

Sorry there can only be one Kate

native zinc
#

oh not again man

tall wharf
pure salmon
#

is talisman broken on newest smods

wintry solar
#

If you are on dev yes

#

Ruby fixed it somewhere though

hexed mist
#

I was using brainstorm seperately, but I turned it off and its dependency before running rofflatro

shrewd shell
#

im quite stuck, does anyone know how to make their jokers give exponential mult?

vernal path
#

Either you need to use talisman (and work through all of those issues), or you have to make your own operator, since smods does not provide one.

shrewd shell
#

thanks

carmine kiln
azure valley
#

Context: #💻・modding-dev message

For future readers, what was going on here (for me) was that the intensity of the shader effect tied to how saturated the color is. And it's completely invisible if your chip is already grayscale.

Shiny Stake Not Working (for future search)

red cradle
#
    context.full_hand[1]:start_dissolve()```
#

why this code dissolve card before scoring

wintry solar
#

use SMODS.destroy_cards(context.full_hand[1])

red cradle
#

ok

#

but why

wintry solar
#

it should destroy it properly for you

red cradle
#

and what difference

red cradle
wintry solar
#

because in the back end, calculation happens within microseconds, and waht you see is queued events playing out in order, your code doesn't use any events so it just disappears straight away. SMODS.destroy_cards not only respects animation timings, but it also does all the other stuff that you should do when destroying a card to trigger other effects and avoid side effects

red cradle
#

oh, thanks, i get it

tepid yacht
#

is there a way to give yourself a joker using the debugplus mod ?

red cradle
#

Use zokers mod menu

wintry solar
bold sleet
#

Hello. I ask again if there is a way to destroy and re-construct an entire UI box to update its contents. To be more specific, the settings tab of a given mod.

#

(or just give me the function that makes the settings tab appear idk)

wintry solar
#

you'll need to call recalculate() on the UIBox

bold sleet
#

That refreshes the entire UIBox?

wintry solar
#

should do

bold sleet
#

It does not update its contents, tho.

#

Which is what I want to do.

#

Apparently hitting this button does recalculate the contents of the UIBox. I don't know where to look for its code, tho.

slim ferry
tepid yacht
wintry solar
bold sleet
#

I am just doing G.OVERLAY_MENU:recalculate()

wintry solar
#

try G.OVERLAY_MENU.UIBox:recalculate()

bold sleet
#

So, help ig?

manic rune
#

can you try eval G.OVERLAY_MENU to see whats printed

bold sleet
#

now how do I send this...

#

also bepis get backa here you little

wispy falcon
#

Does someone have an example code on how to apply a shader to something?

manic rune
#

mmm

manic rune
# bold sleet

maybe try eval G.OVERLAY_MENU.UIRoot:recalculate()?

bold sleet
#

straight out an error.

#

i am very sorry I suck at this so much lol

manic rune
#

yeah so it doesnt have recalculate, hm

manic rune
#

lemme see

bold sleet
#

update your tonsmith btw

manic rune
#

wuh

#

later

bold sleet
#

ok

primal robin
#

Are you crazy or smth

bold sleet
#

-# Crazy? I was crazy once!

manic rune
#

oh try eval G.OVERLAY_MENU:recalculate()

primal robin
#

G.OVERLAY_MENU is UIBox. Use call G.OVERLAY_MENU:recalculate() water

manic rune
#

it seems to have that function

#

yeah

#

ive never done that before so i just checked in game lol

bold sleet
#

I mean, the function exists, but doesn't update the UIBox contents.

manic rune
bold sleet
#

Checking balatro's code it just seems to recaulculate the position of the UIBox.

manic rune
#

:p

bold sleet
#

It probably has to be something with that.

#

Since G.OVERLAY_MENU is literally an UIBox.

primal robin
#

If you need dynamic content inside, just use G.UIT.O

bold sleet
#

I need to just update text lol

#

this shitfuck, for example

manic rune
#

use dynatext then

bold sleet
#

😭 how the fuck does one use that?

primal robin
#

This text specifically should update automatically if you use vanill paginator

manic rune
#

yeah you should use dynatext if you want to update the text

bold sleet
#

Also does dynatext update itself with the value provided to it?

manic rune
#

yes

#

dynatext auto-updates its text depending on ref_table[ref_value]

primal robin
#

text nodes also have ref_table and ref_value

#

dynatext is optional actually

manic rune
#

yeah, though i havent tested to see if it actually updates yet 🤔

#

the ui documentation in steamodded recommends using either :recalculate() or dynatext for updating text rn

bold sleet
#

Now, how the fuck does one use dynatext?

manic rune
#

use a G.UIT.O node, in the object argument use dynatext

primal robin
#

It is

bold sleet
#

dynatext documentation 101 mayb?

primal robin
#

So dynatext is overkill unless you want animation

manic rune
#

huh

#

i, remember N' telling me about this before but i forgot

#

i blame the documentation since i learnt ui from there 3:

bold sleet
#

The documentation is a bit silly.

#

It tells you go figure half of the time.

manic rune
#

sometimes, i should do a pr on that specific part later

#

its pretty misleading

#

anyways, instead of using text argument in G.UIT.T, use ref_table and ref_value instead

#

basically what they mean is that it will update the text accordingly to the value of ref_table[ref_value], so for instance if you have ref_table = G.GAME and ref_value = "pluh", it will update everytime G.GAME.pluh changes

bold sleet
#

^ (dumb idiot)

manic rune
#

wasnt my ui already using G.UIT.T there

#

just change the text part to what i said

primal robin
#

My beloved hack:

ref_table = setmetatable({}, {
  __index = function() return #G.consumeables.cards .. " slots taken" end
}),
ref_value = "count"
bold sleet
#

most hardcoded shit ever

manic rune
red flower
manic rune
#

but i think i do understand how that part in particular works though

#

looks useful

primal robin
#

It's basically getter

bold sleet
#

dies of death

primal robin
#

Like, metatables relatively easy, but in most cases you don't need them

red flower
primal robin
#

(if we assume you have some implemented class)

manic rune
#

is this fine

bold sleet
manic rune
#

should i keep the dynatext part, actually

bold sleet
red flower
primal robin
#

Did you know that element have tooltip which will display popup on hover? I'm too ehehe

manic rune
#

maybe something like If you want animated text, use G.UIT.O with DynaText.?

bold sleet
#

Could someone construct me the dyna text for me so I can have it as future reference?

red flower
#

can't you look at the vanilla code

bold sleet
#

The reward will be uh... 1 chip

bold sleet
red flower
#

well dedumb yourself

bold sleet
#

:[

primal robin
#

Just look at game's code

bold sleet
#

That doesn't help me 95% of the time.

primal robin
#

In most caes you hae enough info from it

#

Then not just look but analyze code, you know

bold sleet
#

"go figure" isn't precisely a great answer, but whatever

red flower
#

it is because looking at any dynatext code will show you the syntax

primal robin
#

Idk how differently explain "try to figure out how game uses pieces it has"

red flower
#

do you think i know the parameters off the top of my head

bold sleet
#

No, but I think you could- nevermind you are on the phone.

red flower
#

if you were saying to look it up i wouldn't have done it even on PC because you can do it yourself:3

bold sleet
#

e

#

The difference would be that it would take you 1/20 of the time it would take me.

manic rune
#

mmm would adding soul_set = "Tarot" make it so my consumable is as rare as the soul?

bold sleet
#

Whatever testing shitfuck and see what sticks

manic rune
#

cool, thanks

bold sleet
#

Though I have gotten like 2 souls back to back, but that might be just luck

paper citrus
#

I have been trying to localize a message for my joker, which swaps chips and mult

#

but right now the message simply displays as "ERROR"

unborn bay
#

the hidden part is hidden = true

paper citrus
#

give me a sec so I can show the code

#

return {
swap = true,
message = localize("charlatan_swap")
}

#

and right now this charlatan_swap is located in the dictionary section of the misc in the localization file

paper citrus
#

one sec

gleaming crescent
wintry solar
#

this is awful advice

paper citrus
#

I did try but no result

gleaming crescent
paper citrus
#

hold on one sec

#

misc = {
dictionary = {
charlatan_swap = "Swapped!",
}
}

red flower
#

that part looks fine, i think the problem might be somewhere else in the localization file

paper citrus
#
    descriptions = {
        Joker = {
            j_charlatan_briscola = {
                name = "Briscola",
                text = {
                    "Each played card with",
                    "{V:1}#3#{} suit gives",
                    "{C:chips}+#1#{} Chips and",
                    "{C:mult}+#2#{} Mult when scored,",
                    "{s:0.8}suit changes at end of round",
                },
            },
            j_charlatan_corrupted_joker = {
                name = "Corrupted Joker",
                text = {
                    "{C:red}#1#{} Chips",
                },
            },
            j_charlatan_sette_bello = {
                name = "Sette Bello",
                text = {
                    "First played",
                    "{C:attention}7{} of {C:diamonds}Diamonds{} gives",
                    "{X:mult,C:white}X#1#{} Mult when scored",
                },
            },
            j_charlatan_primiera = {
                name = "Primiera",
                text = {
                    "Each played {C:attention}6{} or {C:attention}7",
                    "gives {C:chips}+#1#{} Chips and",
                    "{C:mult}+#2#{} Mult when scored",
                },
            },
            j_charlatan_swappie = {
                name = "Inverted Gravity",
                text = {
                    "{C:attention}Swaps{} current",
                    "{C:chips}Chips{} and {C:mult}Mult{}",
                },
            },
        },
        misc = {
            dictionary = {
                charlatan_swap = "Swapped!",
            }
        }
    }
}  ```
#

this is the whole loc file

manic rune
#

misc is inside descriptions there, isn't it

red flower
#

uhh im on my phone so i cant tell haha

manic rune
#

same lmao

paper citrus
#

oh my god I knew it was something stupid

manic rune
#

theres an extra bracket under misc though

wintry solar
#

it is, yes

manic rune
#

so in assuming thats the cade

wispy falcon
#

What do you typically write into func(card, layer) in SMODS.DrawStep?

manic rune
#

cade*

#

CASE

paper citrus
#

welp

#

thanks chat

#

oh also is there any way to turn that message background into a different color

#

not the text itself but the little square thing

wintry solar
#

colour = something

gleaming crescent
#

How do I make a shop item change it's cost?

manic rune
#

change G.shop_jokers.cards[1].cost if im not wrong

gleaming crescent
manic rune
#

im pretty sure using set_cost resets the cost though

red flower
#

context.set_cost when

wispy falcon
#

Okay, I'm trying to learn how to do shaders in LÖVE and in the SMODS Wiki it links to a 'general guide'. The guide uses stuff like

  myShader = love.graphics.newShader[[
    vec4 effect( vec4 color, Image texture, vec2 texture_coords, vec2 screen_coords ){
      vec4 pixel = Texel(texture, texture_coords );//This is the current pixel color
      return pixel * color;
    }
  ]]
end
function love.draw()
  love.graphics.setShader(myShader) --draw something here
  love.graphics.setShader()
end```
in main.lua. That's not how I do shaders in Balatro with SMODS, is it?
wintry solar
#

you only need to look at the actual shader code from that site

wispy falcon
#

So stuff like this?

  vec4 pixel = Texel(texture, texture_coords );//This is the current pixel color
  return pixel * color;
}```
wintry solar
#

yes

paper citrus
#

is there a context function for gaining/triggering tags?

bold sleet
#

yipee the shitfuck numbers work

bold sleet
paper citrus
#

oh

wintry solar
#

omg it's the malverk layout 😲

bold sleet
#

BepisFever did 90% of the front-end so uh...

fluid nebula
#

does anybody here know how balatro programs random chance?

#

like what the specific lines of code are

bold sleet
#

This was my attempt at the front-end before hiring them.

manic rune
bold sleet
#

Everything else go figure idk

gleaming crescent
gleaming crescent
carmine kiln
manic rune
gleaming crescent
manic rune
#

yeah you are probably setting the cost to something before :set_cost() runs lol

gleaming crescent
#

But when I do G.shop_jokers.cards[0]:set_cost() manually it works

carmine kiln
manic rune
#

G.GAME.dollars = G.GAME.dollars - - 500 is + 500 basically lol

manic rune
#

ease_dollars(mod) increases money by that amount, while also having that pop-up animation for when money changes

red flower
#

bepis whats pemdas

carmine kiln
manic rune
red flower
#

parentheses exponent multiplication division addition subtraction

manic rune
#

.

#

what

gleaming crescent
#

Order

manic rune
#

OH i see

#

so thats what its called

carmine kiln
red flower
#

no, just ease_dollars(-((1 - 50/100) * 10)) (or what the values actually are)

carmine kiln
red flower
#

no

#

mod is the modifier

#

if you want to subtract it needs to be negative

gleaming crescent
#

Mod is the value you want to add

red flower
#

also it's ease_dollars with an underscore

red cradle
#

how can i write something like #1#*2 (doubled value of first var) in localize file?

#

without additing new var

gleaming crescent
carmine kiln
gleaming crescent
red flower
gleaming crescent
#

Replace 50 and 100 with... uh, what did you want in the first place

carmine kiln
#

oh jeez my attention span in the negative, yippiee

#

So i have changed it so that it works, the death attempt will be taxed.

gleaming crescent
#

How to increase reroll cost?

modern kindle
#

Good schmorning chat

red flower
#

hello dilliard

red flower
modern kindle
#

Hi N

#

I so sleepy

red flower
#

same

modern kindle
#

We're so twin

drowsy heath
modern kindle
#

It is 0917 for me :b

#

But i have also only just woke at 3 pm or later

#

I hope your rest was awesome

drowsy heath
#

It was, I was sat on my sofa coding last night n passed out in the middle of it, feel a bit lost on what I was actually going for here but ima try make sense of it

modern kindle
#

What are you trying to do

drowsy heath
#

A custom enhancement which didn't work, and a joker that has a 1 in 2 chance to apply it to any card in played hand

#

Probably gunna make that a 1 in 10 tho

gleaming crescent
modern kindle
#

Whats the enhancement

drowsy heath
#

It's kinda of like lucky but less money lest mult and comes with XMult too

#

And the odds are a bit lower

#

But it doesn't sork

modern kindle
#

Does vremade have it so you could just adjust that

drowsy heath
#

That's what I had done, must have bcoz it has the lucky cat explination under it

#

All I did was change the odds and add XMult value and change the names around so it wasn't vremade lucky anymore and was my enhancement name

#

Yet I got nothing 😭

modern kindle
#

Hmm
That seems odd

drowsy heath
#

Just shows as error in game and doesn't give the effect

#

And my joker is having a hard time applying the enhancement but that's the joker issue not the enhancement issue since it recognises there is an enhancement to give

#

It's a bit of a wild problem only half asleep coding end up with

carmine kiln
#

is this joker i made even balanced? It is atleast not blueprint compatible.

modern kindle
#

i mean inherently large numbers by default are not traditionally balanced, its just a one time use

candid elbow
#

Yeah i think one time use balance it out

#

But not for a rare

carmine kiln
#

it's rare, so that you have less chance of getting it.

#

well besides getting it from tags and tarot cards

foggy ginkgo
#

I mean it's not an uncommon

red cradle
carmine kiln
#

also i did have changed somethin to this Joker (see response) to 2.5 mult

tropic hawk
#

it is progressing

#

mwhaahah

#

my ultimate plan

#

of sound

bold sleet
#

What plan?

cursive gazelle
#

I just think this is funny so i’m gonna throw it here

bold sleet
#

Best part is when you don't fucking know what the error means.

cursive gazelle
#

Missing } to close { at line 82628

bold sleet
#

error in main.lua, line 48
main.lua, line 48: }

cursive gazelle
#

And attempt to call a nil value

bold sleet
#

the fabled whatever the fuck you call this

rocky plaza
#

at least thats what i call it

tropic hawk
cursive gazelle
#

Yeah actually you attempted to call Global variable hand (a nil value btw )

tropic hawk
#

i guess idk

bold sleet
#

The power to fucking change texts with DynaText

#

I am still working on changing all the values.

tropic hawk
#

:o

bold sleet
#

I will update it I swear.

brisk atlas
gleaming crescent
rotund sable
gleaming crescent
bold sleet
#

Even more debug options

#

Reminder to not use this for cheating, I beg.

gleaming crescent
bold sleet
#

ftrust

brisk atlas
#

No the pixel filter

cursive gazelle
#

It’s in the shader code

#

You can grab it and export it to shader toy or any other shader

#

And remove the pixelated effect

#

Because i tried changing the background shader and it didn’t work sadly

#

You can change it and recompile the game but that’s against modding rules (altering game files )

slim ferry
#

i remember seeing it once

cursive gazelle
#

If it changes the shader I’d appreciate seeing it

wispy falcon
#

How can I test how my shaders look or if they even work?

cursive gazelle
#

Ingame as an edition

#

You can’t test it outside the game

slim ferry
#

or add them to the draw function of an object but making an edition is probably easier

cursive gazelle
#

Mhm

wispy falcon
#

And how do I apply it to an edition?

cursive gazelle
#

Shader = shaderkey

#

Inside edition

#

Define shader with SMODS.shader

wispy falcon
#

Okay, thank you :3

cursive gazelle
#

Oh

#

I think you need to type modprefix_shaderkey

#

I think i had this issue (not sure if it’s in the edition or draw function )

brisk atlas
cursive gazelle
#

Try sending values with debug plus

azure laurel
#

hey, how can i make SMODS.add_cart to create a card with a garantee random edition?

cursive gazelle
#

There’s no edition_poll like seal and enhancement

#

But you can make a table with editions keys and use pseudorandom element

red flower
#

there is

#

it's poll_edition

azure laurel
#

whats poll_edition?

cursive gazelle
#

Okay so enhancement_poll but poll_edition

#

I see how it is

red flower
gleaming crescent
#

SMODS wiki at it's usual

red flower
#

this is all documented in the smods wiki

cursive gazelle
#

Honestly N

gleaming crescent
cursive gazelle
#

You might have cooked with the wiki

gleaming crescent
#

Maybe I'm looking not in the right place

cursive gazelle
#

I started to read the src code for smods

#

Docs don’t help anymore

gleaming crescent
modern kindle
#

definitely is at the bottom

gleaming crescent
red flower
#

why is it unorganized

cursive gazelle
#

Hey dilly

red flower
#

where should it go

modern kindle
#

hello

gleaming crescent
cursive gazelle
#

Is smods.font a thing in the wiki

red flower
#

but it's not an smods function

red flower
cursive gazelle
#

Is someone making it ?

gleaming crescent
red flower
#

it doesnt change the signature

azure laurel
#

N' did you collaborate with SMODS or smth like that?

red flower
cursive gazelle
#

I might do the SMODS.font if i have time

red flower
#

i do contribute to smods a bit

cursive gazelle
#

Eremel said my fork is useless

azure laurel
#

waos

cursive gazelle
#

LMAO

red flower
#

im not part of the "smods team" so i dont have any decisions over it nor did i help make it in the first place tho

cursive gazelle
#

Yeah N just came and conquered

modern kindle
#

i didnt but i can lie and say i did if that helps

#

also hi ice great to see you

hushed field
#

yo

cursive gazelle
#

I think i need to help make a shader replacement function

#

Or hook

#

I still haven’t done it but one day

red flower
#

i think i need to uninstall balatro

cursive gazelle
#

Yeah i need to go on with my life

#

That’s what i would say if i have one

hushed field
#

still a dev question, but less specifically about code and more about the best way to set up an object. I'm converting the Counters I added to Kino so that they are their own object type. They function similarly to seals and editions, adding an additional calc to playing cards and jokers. Unlike editions, though, behaviour for Counters is slightly different between them being on jokers and playing cards, some are exclusive to only one, and all of them have an additional sprite sheet depending on what they're on.

#

For sprites, do I just have people give two atlases and poses, or do I force people to use a specific standard so i just extrapolate the one from the other? 🤔

cursive gazelle
#

I think stacked src can help

hushed field
#

Oh, yeah, I should see how Bepis handles pools as far as different types of effects goes, because it adds both detrimental and beneficial effects

red flower
#

atli

cursive gazelle
#

I think he mentioned you can add any effect because it works just like a joker calculate function

#

You might want to configure it a little to work on playing cards

#

And yes 2 atlas makes sense

hushed field
#

Oh, yeah, that part isn't the part I'm worried about, luckily, haha. Only thing I'm wondering for that if whether it makes sense to set up two types of calculate function, but just typing that, I'm already realizing that's unnecessary, haha

#

Getting these things to trigger won't be an issue. I'm mostly just trying to figure out how I keep the logistics simple so other people that wanna use this API don't get overwhelmed, with the subdivisions that these objects make. The functionality itself seems to already work as I expect, in my first quick test, luckily

cursive gazelle
#

Oh is this a new api

#

I thought this is a kino integrated thing

hushed field
#

It is currently, but I'm setting it up to be its own mod for people that want to use the designs without wanting to require the entirity of Kino. Also because I already know that if I'd make another content mod, I'd want access to counters as well, haha

#

Just because I really like the space they open up, and I think other people probably can do some creative stuff with them, too

wispy falcon
#

Why do I need to declare mouse_screen_pos and screen_scale in my shader? I didn't read anything about that

cursive gazelle
#

Very nice ice

red flower
cursive gazelle
#

You can just add it and do nothing

hushed field
#

I'm gonna force you to make some archetypes that use counters, N, be warned

red flower
#

i have a doc for the spell counter archetype

#

but i couldnt be bothered to make the ui for that

hushed field
#

also gonna force the people at pokermon to use the investment counters to make ghimmigoul jokers, probably

cursive gazelle
#

Thoughts ?

wispy falcon
hushed field
#

seems goofy, think it'd be a fun addition to a meme mod

cursive gazelle
#

Look at ethe ionized code

#

It literally says just copy someone’s shader end edit it

hushed field
cursive gazelle
#

And skill

#

Since balatro is just RNG

hushed field
#

very mario rpg

wispy falcon
hushed field
#

Why do I even use sprites to display these numbers? 🤔 This seems... unneccessary

fluid nebula
#

do y'all know how balatro programs random chance?

#

want to make a joker with an RNG mechanic and i want it to be affected by oops all 6s

ocean sinew
gleaming crescent
cursive gazelle
shell timber
ocean sinew
shell timber
#

automatic is not possible

ocean sinew
#

It is

#

already doing that

shell timber
#

seupai we've been over this

#

it will not work all of the time

ocean sinew
#

I'm using a lua ast parser now

#

so yeah it will

shell timber
#

you still have the same issues

#

what is scaling

ocean sinew
#

self-scaling when a card scale themselves

shell timber
#

so it shouldnt be automatic

ocean sinew
#

scaling when a number is added in a card value

hushed field
#

I have jokers that do that automatically every frame

ocean sinew
#

they use card.ability?

hushed field
#

Which I wouldn't mechanically want a player to interpret as scaling

ocean sinew
#

and why would u put card update stuff in card.ability

shell timber
#

why cant it be in card.ability?

ocean sinew
#

well

#

I can just read the other code

#

and then define If It's a scaling value or not that way

#

by the code context

shell timber
#

scaling detection should not be automatic

#

there are far too many edge cases

hushed field
#

Because the jokers are all of the 'Gives [score], slowly go to 0 over 120 seconds'

shell timber
#

i dont believe you understand the actual issue with automatic scaling detection

ocean sinew
#

yeah cuz there's no issue

#

there's a fix for everything

#

it only depends If I would spend my time fixing it or not

shell timber
#

the issue isn't code related

ocean sinew
#

what how

hushed field
#

I also have multiple jokers that scale internal values that aren't meant to be player facing, for example. I also have a joker who's value gets randomized under certain conditions, but I would not want a player to think of that as scaling.

shell timber
#

the issue is that scaling as a concept isn't equivalent to numbers changing

ocean sinew
#

numbers changing isnt scaling though

#

numbers changing is numbers changing

#

thats what am talking abt

#

the word scaling is too limited for the concept

cursive gazelle
#

I believe in my little steve

shell timber
#

okay then numbers changing isnt what you want to do

ocean sinew
#

yeah

#

for me two values getting a math operation done on them by itself or another card = scaling

thorn basin
#

I made a joker that increases the consumables slots by 2 when it's on the joker slots (like juggler does for the hand size).
Although the game gives me error saying that "consumable_slot" is a nil value.
How can I fix this?

ocean sinew
#

but setting it like cardvalue =-321 not scaling

gleaming crescent
#

And it's not working like the hand

hushed field
#

Internal counters also exist, but don't actually count as scaling. The following two abilities would interact differently with the rules of anything that cares about scaling:

Gain +1 mult whenever a face card scores.

Gives +1 mult for each face card that has been scored.

I'd also say that within the context of Balatro, there's ways of numbers being operated upon that I wouldn't default to calling scaling. Like Hit the Road

thorn basin
gleaming crescent
#

G.consumeables.config.card_limit = G.consumeables.config.card_limit + card.ability.extra.consumable_slot inside of an event inside of a add_to_deck

shell timber
#

your system will eventually require manual developer intervention so why not just use the system thats in smods already

fluid nebula
#

sorry if this is dumb but what's the thing here

shell timber
gleaming crescent
ocean sinew
shell timber
gleaming crescent
shell timber
fluid nebula
fluid nebula
#

i forgot about that

#

thanks

ocean sinew
#

So I guess hit the road counts as scaling

#

since it enlarges whenever a face card isnt scored

#

and shrinks whenever it is

ocean sinew
#

(I just searched it up didnt knew abt that before)

gleaming crescent
gleaming crescent
hushed field
fluid nebula
manic rune
hushed field
manic rune
#

using pseudorandom would mean there will be one point where os.exist will always run lol

manic rune
#

id rather have it math.random

wispy falcon
#

I'm so confused when it comes to making shaders. What does what? And I can't find a good tutorial TwT

hushed field
manic rune
gleaming crescent
#

Just a more straight way to crash your game instead of playing with entropy

fluid nebula
#

put it inside the context function, shoulda done that earlier

hushed field
#

about to investigate your code agai, btw, Bepis

manic rune
#

that wouldnt work

#

code after return wont run

hushed field
fluid nebula
manic rune
#

no

#

put your code above the return

fluid nebula
#

holy shit i'm dumb 😭
i did computer science lmao

#

how did my teacher not execute me

gleaming crescent
manic rune
#

wuh

fluid nebula
#

it works! thank you so much

#

i will learn for next time

manic rune
#

-# also that doesnt even look like vsc

fluid nebula
cursive gazelle
#

Vscode

#

Is free

manic rune
#

having visual studio code + lua extension can tell you where in the code is wrong

#

if you dont like microsoft theres vs codium or something

cursive gazelle
#

Lua extension is for the weak

#

My code. Has no syntax error

shell timber
#

lsps are worth it use them whenever you can

cursive gazelle
manic rune
#

.

#

s

#

you wont believe what im about to send

cursive gazelle
#

I don’t judge but joker_buff37

fluid nebula
#

Oker is born.

cursive gazelle
#

I didnt know stacked is that big

fluid nebula
#

1 in 2 chance to close the game, x999999 mult

#

not balanced at all

bold sleet
#

you can always try again

manic rune
#

and theres joker_curse8

cursive gazelle
#

Bsr will never see the light of day

manic rune
#

:3

latent perch
gleaming crescent
fluid nebula
latent perch
#

thanks!

bold sleet
#

It's a portal pew pew!

fluid nebula
#

what's the full effect? does it just destroy the first card drawn?

latent perch
#

yup, but I unintentionally made it a quick time event (you can move another card to be destroyed instead)

#

which, eventhough it's not very vanilla, makes it a better Joker sooo

#

Imma keep it :)

fluid nebula
#

ooohh, i see

#

sounds good for deck fixing

#

good amount of risk, too.

latent perch
#

yeah that's the idea

vast bough
#

hey guys

#

how would i reference the levels of a particular poker hand, i.e. high card

latent perch
vast bough
red flower
cursive gazelle
zenith scaffold
#

Can someone help me with this? I found the problem in card.lua, but whenever I try to fix the file, it reverts back to the previous state.

Syntax error: card.lua:1606: '}' expected (to close '{' at line 1589) near 'playing_card_joker_effects'


Additional Context:
Balatro Version: 1.0.1o-FULL
Modded Version: 1.0.0~BETA-0711a-STEAMODDED
LÖVE Version: 11.5.0
Lovely Version: 0.8.0
Platform: Windows

Stack Traceback
===============
(3)  C function 'function: 0x1a1c7d98'
(4) global C function 'require'
(5) main chunk of file 'main.lua' at line 884
(6) global C function 'require'
(7) LÖVE function at file 'boot.lua:323' (best guess)
Local variables:
 c = table: 0x1a1e1dd0  {identity:false, version:11.5, accelerometerjoystick:true, modules:table: 0x1a1e1e20, gammacorrect:false, title:Balatro, externalstorage:false (more...)}
 openedconsole = boolean: false
 confok = boolean: true
 conferr = nil
(8) global C function 'xpcall'
(9) LÖVE function at file 'boot.lua:362' (best guess)
Local variables:
 result = boolean: true
(10) global C function 'xpcall'
(11) LÖVE function at file 'boot.lua:377' (best guess)
Local variables:
 func = Lua function '(LÖVE Function)' (defined at line 355 of chunk [love "boot.lua"])
 inerror = boolean: true
 deferErrhand = Lua function '(LÖVE Function)' (defined at line 348 of chunk [love "boot.lua"])
 earlyinit = Lua function '(LÖVE Function)' (defined at line 355 of chunk [love "boot.lua"])
#

and apologies if I used the incorrect chat

frosty rampart
#

if it's an error in card.lua, then some mod is patching that file and that's where the error is coming from. editing the files in lovely/dump/... won't actually do anything, SMODS/lovely dumps the patched versions of the vanilla and SMODS files there for reference only and doesn't read anything from them

hallow slate
#

How would I get a Joker from a specific mod?

rotund sable
#

<@&1133519078540185692>

frosty rampart
hallow slate
#

booster containing jokers from only my mod

red flower
#

joker.config.center.original_mod.id == "modiid"

#

it's easier to just add your jokers to a pool tho

hallow slate
#

I'll try that out

fossil nebula
#

Hi i would need some help, i want to make a system that at a start of an ante gives a random modifier for the entire ante(something like boss blind but for all blinds). Problem is i have no idea how would i make something like this

red flower
fossil nebula
#

global

red flower
#

i would recommend waiting a couple of days for the next smods version

#

it allows using a calculate function globally similar to jokers

fossil nebula
#

ok thx

carmine kiln
#

N' i have a question, what would be needed if instead looking for the highest level, i was looking for the most played hand?

red flower
#

same thing but played instead of level

carmine kiln
#

ah

vast bough
#

what is the held in hand at end of round context for seals/enhancements, if context.end_of_round and context.cardarea == G.hand and context.other_card == card is just doing nothing for me, am i being silly with something

slim ferry
#

<@&1133519078540185692>

vast bough
#

true

slim ferry
#

kil

#

thanks mods

carmine kiln
#

thx mods

vast bough
#

one day i might just join one of those and see whats up

slim ferry
#

okay so if i know anything about this its just going to make you "verify yourself" via an external website which actually just gets you hacked in some way

slim ferry
vast bough
slim ferry
#

did you just directly copy vanillaremade blue seal?

#

because then it could also just be an issue with vanillaremade

vast bough
#

just the context check, and i get this error when it gets held in hand at the end of round (which makes zero sense)

INFO - [G] 2025-08-15 19:20:08 :: WARN  :: DefaultLogger :: Found effect table with no assigned repetitions during repetition check

this is the code btw

SMODS.Seal {
    key = 'adddollarsheldinhandatendofround',
    pos = { x = 0, y = 0 },
    config = {
        extra = {
            dollars = 1
        }
    },
    badge_colour = HEX('000000'),
   loc_txt = {
        name = 'add dollars held in hand at end of round',
        label = 'add dollars held in hand at end of round',
        text = {
        [1] = 'A {C:blue}custom{} seal with {C:red}unique{} effects.'
    }
    },
    atlas = 'CustomSeals',
    unlocked = true,
    discovered = true,
    no_collection = false,
    calculate = function(self, card, context)
        if context.end_of_round and context.cardarea == G.hand and context.other_card == card then
            return {dollars = card.ability.seal.extra.dollars }
        end
    end
}
rotund sable
#

fire name

vast bough
fluid nebula
#

yo i have a question

#

how may i edit the text colouor so it only shows partially

slim ferry
#

close the formatting with {}

fluid nebula
#

thanks

#

i love how i'm learning a few more of the basics

red flower
#

so it seems to work, you just need to restrict it to individual

vast bough
red cradle
#

Can I make one of my jokers appear multiple times, like with the showman effect, but for 1 joker?

red flower
vast bough
#

all i want is a working card held in hand at the end of round for enhancements and seals 😭

red flower
#

its weird that it runs but doesnt do anything

red cradle
#

or guide fot it

#

because idk how in_pool works

red flower
#
in_pool = function(self, args)
  return true, { allow_duplicates = true }
end 
final jewel
#

I have a question guys, so when I use this Joker it change the enhancement but just visualy for some weird reason is there a way to make the enhancement change for real and not just visualy. And is it possible to make the joker shake when upgrading the card as well

timid zinc
final jewel
frosty rampart
#

what are you talking about

timid zinc
#

area and copier are in the docs yes

frosty rampart
timid zinc
vernal path
final jewel
#

thx

timid zinc
#

I realized the issue, it's completely unrelated

#

I moved the location of the file and but didnt change it in my text editior 💀

carmine kiln
#

hmm i got 3 jokers that don't wanna work as i intended them to be

final jewel
#

for the enhancement I mean

vernal path
vernal path
#

The code from Midas Mask in V remade does work. I'm not sure what about it causes it to work, but it works for me.

#

Here's my implementation:

#
if context.before and context.main_eval and not context.blueprint then
            local clubs = 0
            for _, scored_card in ipairs(context.scoring_hand) do
                if MODE_UTIL.check_suit(scored_card, "clubs") then
                    clubs = clubs + 1
                    scored_card:set_ability('m_bonus', nil, true)
                    G.E_MANAGER:add_event(Event({
                        func = function()
                            scored_card:juice_up()
                            return true
                        end
                    }))
                end
            end
            if clubs > 0 then
                return {
                    message = localize('mode_k_bonus'),
                    colour = G.C.BLUE
                }
            end
        end```
final jewel
#

I don't have main_eval it can be because of that ?

vernal path
#

maybe? IDK

final jewel
#

No its not because of that

harsh bobcat
#

How do I make my joker not show up in the shop/boosters and my seals not in booster packs as well.

#

?

final jewel
#

for seal in_pool = function(self)
return false
end,

wintry solar
vernal path
#

Oh, yk, it might be the other args in set_ability()

wintry solar
#

it's because you're doing it in events

final jewel
#

oh

wintry solar
#

so the enhancement changes in line with animations which are after calculation

#

get rid of the event and do card:set_ability(key, nil, true) instead

#

that'll respect animations still but actually enhance the card in the correct sequencing

carmine kiln
#

can 'remove = true' work at this cardarea?
Asking because this doesn't work:

calculate = function(self, card, context) if context.cardarea == G.play and context.repetition and not context.repetition_only then if context.other_card:is_face() then return { message = 'Again!', repetitions = card.ability.extra.repetitions, card = context.other_card, remove = true } end end end,

final jewel
#

like that

compact bridge
#

hi there whoever is reading this, i am trying to create mods for balatro for the first time and i have never used lua before. could someone explain why this joker will not work? the message appears in game but the functionality does not work `SMODS.Joker{
key = 'snake_eyes',
loc_txt = {
name = 'Snake Eyes',
text = {
'Play 2 Aces',
'Create Random Spectral Card',
'Destroys an ace played and random card in hand'
}
},
atlas = 'snake_eyes_art',
pos = {x = 0, y = 0},

calculate = function(self, card, context)
    if context.joker_main then
        local aces = {}
        local hand_cards = {}

        for _, card in ipairs(G.play.cards) do
            if card.rank == "A" then
                table.insert(aces, card)
            end
        end

        for _, card in ipairs(G.hand.cards) do
            table.insert(hand_cards, card)
        end

        if #aces == 2 and #hand_cards > 0 then
            G.E_MANAGER:add_event(Event({
                func = function()
                    local ace = aces[math.random(#aces)]
                    if ace and not ace.destroyed then ace:destroy() end

                    local rnd = hand_cards[math.random(#hand_cards)]
                    if rnd and not rnd.destroyed then rnd:destroy() end

                    create_card('Spectral', G.hand)
                    return true
            end}))
        end
        return{
            message = "SnakeEyes Activated"
        }
    end
end

}`

wintry solar
final jewel
rapid stag
red flower
#

no idea

carmine kiln
red flower
#

idk why you pinged me tho

wintry solar
red flower
harsh bobcat
red flower
#

same thing

final jewel
carmine kiln
naive musk
#

sup guys, how do i make a custom deck? (e.g: starts with a specific joker, 4+ hand, &c. &c.)

scarlet sparrow
#

Not sure if this counts here since I'm not using smodded for this but I was making a deck as a surprise and I thought it was kinda cool that the game sorted the deck automatically since it's unlocked by beating purple stake

#

It could also be me putting it before erratic and forgetting but I'm pretty sure it just sorted itself

timid zinc
#

copy_card can transfer vanilla enhancements and editions, but not modded ones

clear ocean
#

is this a good start?

red flower
#

no i hate the guy that wrote that

clear ocean
#

imposter syndrome strikes once again

#

the example is about adding to deck is there a way to make a hook when you play a hand?

red flower
#

what do you want to do

clear ocean
#

when you play a hand roll a 1 in 25 chance and if succeeded spawn in this joker

#

i already got the rest programmed in

wintry solar
#

I didn't recognise that because who on earth uses light mode on git

clear ocean
#

i prefer the light mode on github sorry

#
local card_add_to_deck_ref = Card.add_to_deck
function Card:add_to_deck(from_debuff)
    local ret = card_add_to_deck_ref(self, from_debuff)

    if not from_debuff and -- If the card wasn't added by being undebuffed
        self.ability.set == "Joker" then -- and the card (`self` in this case) is a Joker

        -- Adds it to the run's global table.
        -- It is recommended (but optional) to preppend your mod's prefix to any global variable/field to prevent mod conflicts
        G.GAME.vremade_joker_added_counter = (G.GAME.vremade_joker_added_counter or 0) + 1
    end

    return ret
end
#

is there a way to randomise the atlas pos when drawing or appearing a sprite, ie a joker?

cursive gazelle
cursive gazelle
#

Make an update function to update the sprite

clear ocean
#

i figured with the random function i mean when are you supposed to do that

#

update = function()?

red flower
#

when do you want it to randomize

clear ocean
#

when it appears in the shop or spawns in

#

i don't want to change every frame

red flower
#

then in set_ability

#

set_sprites might work too

cursive gazelle
#

You can just change it in the pos

#

But copies of this joker will have the same sprite

red flower
#

then its not what they want lol

rotund sable
#

You can use card.children.center:set_sprite_pos({x=0, y=0}) if you have them on the same atlas

cursive gazelle
#

Idk i’m not a mind reader

red flower
#

youre a reader reader

clear ocean
#

what about a minder mind

red flower
#

my mind is very mind

clear ocean
#

🧠

rotund sable
#

If you put it in the update it'll change every frame

clear ocean
#
    set_ability = function()
        card.children.center:set_sprite_pos({x=Math.random(0, 1), y=Math.random(0, 1)})
    end,
clear ocean
hidden notch
#

-# Also use "load = function()" to update the Texture after returning to a run lewxen_ok

red flower
#

i dont think you need to

clear ocean
#

appreciate the suggestion regardless

hidden notch
rotund sable
hidden notch
#

Quick Question: Using main_start in a Deck/Back Description probably doesn't work, if I had to guess...? RobynMelt

cursive gazelle
clear ocean
timid zinc
#

how do i change the color of the particles that appear when you click on a consumable type in the collection?

sturdy compass
clear ocean
hidden notch
# cursive gazelle Find out

Well, I tried (like the misprint joker) and it did not work so I'm asking to see if it's different or not possible EspeonBooo

cursive gazelle
#

You can do dynatext

cursive gazelle
clear ocean
#

yeah true

cursive gazelle
#

Just make a function that updates every frame and make it update a gloabl string variable and use it in desc

cursive gazelle
#

And return it in loc_vars

hidden notch
clear ocean
#

god damn it

cursive gazelle
hidden notch
cursive gazelle
#

Well there’s definitely an easier way i’m just lazy to look it up

#

(You can be lazy and not make an update function just add it to any drawstep you have since it updates every frame

timid zinc
#

it creates a bunch of green particles meanwhile the other types create particles of other colors, i dont think it's connected to the primary and secondary colour of the consumable type

hidden notch
#

Nah no need, I get'cha I get'cha
I really only need to change one small thing, if it doesn't work I'll just skip out on the lil flair x3

cursive gazelle
cursive gazelle
#

(I think)

#

You need to send a color variable to the shader to change it

#

Tldr : it’s a lot of work for a simple thing just leave it like that

#

Nobody is checking the consumeables (maybe once at max )

hidden notch
#

I mean it depends, you could also copy paste the function from Card.lua in the Base Game and modify it - with custom sound and everything... At that point you could use it everywhere too! x3

clear ocean
#

for the time being im going to go make the art for record skip

#

feel free to mention me for resources of hooks or a solution if you have done something similar

clear ocean
timid zinc
#

Seems like a relatively simple patch

candid prism
#

oh i forgot to alter smth from the steamodded header oopsies i am not using dark mode

vast bough
#

is there any good documentation on pools for jokers, spawning them in, destroying, manipulating pools etc, im adding it to joker forge so i need to know EVERYTHING

red flower
#

"is there any good documentation" no

cursive gazelle
candid prism
odd fjord
#

Wheres the guide on how to mod the game

frosty rampart
odd fjord
#

Thanks

slim ferry
candid prism
fluid nebula
#

have another joker idea. gonna see if i can program it

#

Lottery Ticket
-$5 when blind selected
1 in 8 chance for $100

#

just a rough idea

#

but my last joker didn't care for balance

heady siren
#

How would I go about making a copied card use a specific card back rather than just the default red back?

red flower
#

oh i thought i pr'd smods to fix that

heady siren
#

I want it to use a card back that isn't the current card back

red flower
#

you can do it after you copy the card if it's not one of your cards

slim ferry
#

i mean i dont think theres much for that outside the smods docs

red flower
#

i dont think there's much documentation other than the objecttype page and some bits on my wiki

carmine kiln
#

Umm quick question... this here won't work, isn't it?
it only does the sock and busking thing so thats something i guess.
i apologize but i guess lua coding ain't really my strong suit, no pun intended..

vast bough
#

im sure i will figure some stuff out lol

red flower
carmine kiln
ivory widget
#

What do i put into is_suit() for it to recognize the random suit? Managed to figure out rank.id for the rank, but suit.id doesn't work

red flower
#

get_id doesn't have arguments tho

#

suit.key should be correct

#

not v:get_id() will always be false

ivory widget
#

How would i ensure it isn't that rank then?

rotund sable
#

get_id() ~= id

ivory widget
idle plaza
ivory widget
zenith scaffold
#

getting an error that says line 52 is attempting to call a nil value, any reason that'd be?

#

(I have very little Lua knowledge)

rocky plaza
zenith scaffold
#

yea

#

i'll also note that this isn't my own mod; I'm debugging a currently existing mod

keen atlas
#

try replacing it with assert(love.filesystem.load(modpath.."ConfigHelper.lua"))()

zenith scaffold
#

Now it's just saying the filedoesn't exist lmao

idle plaza
zenith scaffold
#

all it does is add an extra slash at the arrow

idle plaza
#

In that case, try using assert(SMODS.load_file("ConfigHelper.lua"))() to load your file instead. I use that to load my mod's files and it works perfectly fine.

spice wadi
#

Mods aren't loaded like that anymore

zenith scaffold
#

yeah this is 100% a graveyard mod, I'm basically just trying to see how many mods I can cram into my game before it gives up entirely

spice wadi
#

Actually it might not be
This feels like it might be an old mod tho

#

If it is, you may encounter some errors

zenith scaffold
#

I'm definitely expecting a lot of those lmao

compact valve