#💻・modding-dev

1 messages · Page 138 of 1

ionic verge
#

ok, how would i set it up to keep other_joker then?

#

or where would i set it up

candid epoch
#

can jokers detect if there are more jokers from the same mod?

ionic verge
#

youd probably have to add a way to detect it within each joker

valid trench
#

how can you edit the weight values of vanilla rarities

#

I can't seem to find where the weights are set at all

ionic verge
#

ok so whats up with cryptid's old blueprint setting it up the same way

weary jungle
nocturne garnet
ionic verge
#

mmm

nocturne garnet
#

unlike with your code where its only being set when blind is selected

ionic verge
#

ok

wild patrol
#

lol I found balatro's drm

#

it's so simple but funny

#

if it can't detect steam running it just closes lol

#
    --Steam integration
    if G.SOUND_MANAGER then G.SOUND_MANAGER.channel:push({type = 'stop'}) end
    if G.STEAM then G.STEAM:shutdown() end
end```
#

That's def indie game dev levels of drm

#

I love it

tepid crow
#

it's just the default steam drm + a love wrapper afaik

wild patrol
#
            love.event.quit()
        end```
#

it's in a line a code checking for steam

#

The game controllerdb.txt is funny to

#

has a list of random ass controllers

#

like the wii classic controller

#

even has support for street fighter joystick controllers

#

LOL

ionic verge
#

so real quick, if i set up local other_joker within an if statement itll stay in that if statement right?

#

just a sanity check

tepid crow
#

yes

ionic verge
#

ok

tepid crow
#
if true then
    local var = "defined"
    if true and true then
        -- var is still defined
    end
    -- var is still defined
end
-- var is no longer defined
ionic verge
#

yeah

hidden timber
bitter sand
#

hey guys, i'm wondering how do i change the reward of a blind ? (make it give more or less money)

hidden timber
#

wdym?

valid trench
#

can you just not edit the vanilla rarities using take_ownership like jokers and stuff

elder vapor
#

if you install a mod that has dependancies, does the mod manager download said dependancies

#

(ex. talisman)

dreamy thunder
#

i just changed how my card works

hidden timber
#

@elder vapor Btw your mod is already on the mod manager I think

candid epoch
#

skyline, will i be able to add later when i am done with mod that i be happy about?

#

also @elder vapor, so many stickers can be applied to one card?
if so, how do they look like stacked?
like, what sticker has priority to be placed ontop

tired marsh
#

Does anyone have a recommendation for where I can learn more about modding balatro? I'm currently running through the Lua documentation, so any other pointers would be appreciated!

elder vapor
zealous glen
elder vapor
candid epoch
candid epoch
#

and you have seperated page for gemstones or they use the sticker ones?

tired marsh
maiden river
#

published my mod egg

valid trench
#

Will I have to do Lovely stuff to change the rarity function for vanilla rarities or does SMOD have a function that can modify them I tried take_ownership but it doesn't seem to work on them, probably because the way they are coded, I assume you can edit the pool midgame because I've seen other modded jokers do it

weary jungle
#

Ok the release of my mod did not go so well

nocturne garnet
weary jungle
#

i dont know what happened here

#

i defined it!

#

i know i did

tired marsh
#

Is there a call stack somewhere

#

Oh duh

#

Lmao

nocturne garnet
tired marsh
#

Does that sprite exist

#

The one its saying isn't

weary jungle
#

eit works on my machine!!!

#

im crying

topaz sun
dreamy thunder
#

i see

#

thank you

raw geyser
#

Is there a way to save a config from a mod?

cinder elk
#

chat how do i make a deck skin with deckskins lite; wanted to try it out

candid epoch
#

my texture pack finnaly compleated, yippie

viscid bough
#

anyone know how i could make a patch to save the last played consumable's key? i already have a variable made for it to be saved in, but im not sure how to do the patching stuff.

#

also is there a function for creating a card with its key?

tired marsh
#

What file are the vanilla jokers located in?

#

Not the sprites but the objects themselves

frosty dock
tired marsh
#

So are specific functions also located in game.lua

dreamy thunder
#

how can i check if a voucher is used or not

cedar stream
dreamy thunder
#

i have a a joker which spawns a custom consumable but i want it to work only after redeeming the set voucher

candid epoch
#

HOW DID THIS HAPPEN

pulsar flower
#

is the deck at the bottom right of the screen during normal play a Moveable object? how would i access a reference to it?

pulsar flower
# viscid bough .

i think you can hook Card:use_consumeable and set the variable right after it, without needing a lovely patch

pulsar flower
#

something like

viscid bough
#

huh. i had no idea this was a thing. I thought that could only be done with Game.init_game_object()

#

lemme try that

sturdy compass
#

It can be done with any function. That's the cool thing about hooks

viscid bough
#

i thought i knew alot about lua, but it seems theres alot of stuff i havent learned...

sturdy compass
long sun
#

hihi! i've had two ideas for Modern Art, and would like to see which one you guys prefer :D
(Common): +20 Mult if played hand contains exactly one distinct rank
(Uncommon): ×2 Mult if played hand contains exactly one distinct rank

zealous glen
#

You can do hooks in any language

long sun
#

ah wait, just realising that the condition is a more lenient Half Joker :P

sturdy compass
#

Speaking of hooks and stuff btw, has Steamodded/Lovely updated to allow patching into Steamodded yet?

long sun
#

all the same rank

#

so eg. A, 5 5, 8 8 8 8

zealous glen
long sun
#

not quite

pulsar flower
#

i didn't think of that when i read "one distinct rank"

long sun
#

that implies you can only play a high card

zealous glen
#

5OAK is one rank

long sun
#

one distinct rank, but there are five ranks there (just, they're all the same)

zealous glen
#

No there's one rank

long sun
#

there's five of the same rank, but one distinct rank

viscid bough
zealous glen
#

I think most people would interpret 5OAK as one rank

#

and get confused by "distinct"

#

and though think it needs two ranks

zealous glen
#

What do you think it is?

violet void
sturdy compass
#

Yeah that's where I'm getting lost too. The term "distinct rank" seems to not be well defined

long sun
#

okay i've found out that KTaNE terminology doesn't carry over to Balatro :>

viscid bough
long sun
#

Keep Talking and Nobody Explodes, my primary mod outlet

#

okay i have a middleground

#

i'll be taking the second ability of the two

sturdy compass
zealous glen
tepid eagle
#

"if all played cards have the sane rank"

long sun
#

yep, that one :D

sturdy compass
long sun
#

(Uncommon): ×2 Mult if all played cards have the same rank

violet void
#

Looks fun for pairs

long sun
#

thanks ^^

viscid bough
tepid eagle
#

so would 9 9 9 9 7 not work since the 7 is a different rank that is being played but not scored?

candid epoch
#

oke
so.... what makes people take it over the 3 rares from vanilla?
Pair(x2), Thriple(x3), Quad(x4)

violet void
tepid eagle
#

well i'm asking for the intent

long sun
#

though again, it's a looser version of Half Joker, so i kind of want to change it a bit

sturdy compass
long sun
#

ooh i'll sit on Modern Art for a bit, because i have an idea for Sketch!

candid epoch
long sun
#

(Rare): All played, unscored cards give ×1.5 Mult

violet void
#

Does that only effect unscored cards? The comma looks confusing

long sun
#

mhm

candid epoch
#

the ones that dont score

#

example: playing high card with 5 cards, makes it trigger 4 times

long sun
#

does the ampersand fit?

#

the game doesn't use any, but it doesn't need any either

zealous glen
#

I don't think it needs it

long sun
#

hokai i'll revert

urban veldt
#

It's a rough first try, but does this look... decent enough?

candid epoch
#

i have no idea what i am looking at

#

but it does look good

violet void
#

"All played cards" is probably enough

long sun
#

ya, looks good!! though consider changing the fill colour of the text

long sun
#

which is different, and broken :>

candid epoch
violet void
#

All played + unscored cards seems to include both

long sun
#

ya, it works the same way that Green seal does

#

(speaking of which, lemme check how it words itself)

zealous glen
#

Green Seal?

tepid eagle
#

all played cards give x1.5 mult if not part of poker hand

tepid eagle
#

does it include debuffed cards?

zealous glen
#

I think

Played cards that don't score give x!.5 Mult

candid epoch
long sun
candid epoch
#

debuffed cards dont even count as unscored/scored
it just skips its calculation

long sun
violet void
#

"Unscored cards give x1.5" works

sturdy compass
#

Ah I see we've devolved into lingustics Pain

candid epoch
tepid eagle
long sun
#

okay i found Cryptid's wording

#

played and unscoring

#

which is miles better ^^

violet void
tepid eagle
long sun
#

lemme rephrase it then :>

dreamy thunder
zealous glen
candid epoch
#

debuffed is a debuffed

long sun
#

(Rare): Unscoring played cards each give ×1.5 Mult

candid epoch
#

wont give effects

violet void
sturdy compass
#

LMAO

long sun
#

:D

tepid eagle
long sun
#

wave! debuffed cards don't count

#

in the same way that Triboulet doesn't see debuffed Kings

tired marsh
#

Is there a better rundown of what exactly the patchers job is and when I should be using it

tepid eagle
#

i did receive an answer to my query

sturdy compass
tired marsh
#

The one on the git is kinda weird to follow, and either I missed what I'm looking for or its not there

sturdy compass
#

So you specify a pattern to look for, where you want your code to go (before, after or at (to replace the pattern)), and what the new code will be

tired marsh
#

Got it

#

Also stupid question, which mod folder am I supposed to be working out of lol

viscid bough
#

Okay so i got some hooks that should be saving the used consumable to a variable (As long as its not a fool or revenant card)

local init_game_object_ref = Game.init_game_object
function Game:init_game_object()
    local ret = init_game_object_ref(self)
    ret.last_consumable = nil
    return ret
end

local use_consumeable_ref = Card.use_consumeable

Card.use_consumeable = function(self, area, copier)
    use_consumeable_ref(self)
    local card_key = self.config.center.key
    if card_key ~= "c_fool" and card_key ~= "rev_revenant" then
        G.GAME.last_consumable = card_key
    end
end

I think thats the right key names.
Now i gotta make my revenant card create a negative copy of this card using that key. anyone know how i can do this? This is what i have so far

SMODS.Consumable {
    key = "revenant",
    set = "Spectral",
    loc_txt = {
        name = "Revenant",
        text = {
            "Creates a negative copy of {C:attention}1{} random",
            "{C:attention}joker{} card that has been destroyed"
        }
    },
    can_use = function(self, card)
        return G.GAME.last_consumable ~= nil
    end,
    use = function(self, card, area, copier)
        --Make negative copy of consumable with the key of G.GAME.last_consumable
    end
}

ignore the card description

violet void
#

You just create a lovely.toml in your mod folder

sturdy compass
tired marsh
#

So the Steamodded one?

sturdy compass
#

No

#

The folder the Steamodded folder is in

tired marsh
#

The common one

sturdy compass
#

yeah

tired marsh
#

Got it

sturdy compass
#

👍

frosty dock
tepid crow
viscid bough
#

and the code seems to work right

#

except i think i might be using the wrong keys in the second hook

#

my card created another copy of itself

long sun
#

is there a context for cards that don't score?

bitter sand
#

hey guys i have a question, i want to change the blind reward to make it able to show negative dollars and i don't really know how to do that except using the collection_loc_vars function. can someone please help me with that ? thx

violet void
zealous glen
long sun
#

hmm, this seems hard to implement — i'm gonna change the ability slightly

bitter sand
#

it works, i get the negative dollars but it doesn't appear in the collection nor in game (i'm gonna take some screenshots)

zealous glen
long sun
#

Gives X0.5 Mult for each played card that doesn't score

viscid bough
zealous glen
#

it's the same context for cards that score

#

the cards just aren't in the scoring hand

long sun
#

oh okay!

bitter sand
#

(took all the screenshots possible)

violet void
zealous glen
urban veldt
#

"Gains X.01 Mult for each scored Diamond.
Currently X1 Mult
How would I fix this? Right now I have it if *all scored cards are Diamonds

calculate = function(self, card, context)
if not card.debuff then
-- Upgrade the Joker when hand is played
if context.before and not (context.individual or context.repetition) and not context.blueprint then
for i = 1, #context.scoring_hand do
if context.scoring_hand[i].ability.name ~= "Wild Card" then
if context.scoring_hand[i]:is_suit("Diamonds") then
return
end
end
end

violet void
long sun
#

yepyep! on it :D

violet void
#

But you could still try with the previous idea

vocal verge
#

Man, I do not miss seeing lua

long sun
#

i actually like this idea more ^^

#

it's like a weird Stencil

viscid bough
#

Anyone know how i can make a description similar to The Fool? with the little text that shows the name and then the description of that card on the side?

vocal verge
#

what's the bonus card enhancement called? is it just self.ability.bonus?

frosty dock
viscid bough
long sun
#

weird bug, the xmult box appears, but does nothing and is blank

zealous glen
#

The wiki gives the signature

long sun
#

code:

calculate = function(self, card, context)
    if context.joker_main and #G.play.cards > #context.scoring_hand then
      return {
        x_mult = 1 + (card.ability.extra.xmult * (#G.play.cards - #context.scoring_hand)),
        colour = G.C.RED,
        card = self
      }
    end
  end```
zealous glen
#

xmult? Xmult? xmult_mod?

zealous glen
long sun
#

config = { extra = { xmult = 1.5 } },

zealous glen
long sun
#

also i forgot to change it to something else but ignore that :D

violet void
#

Xmult_mod or x_mult_mod

The game uses both it's confusing

long sun
#

weird. Ghost works fine with x_mult

zealous glen
#

x_mult = Xmult

#

thunk moment

long sun
#

nevermind! i'm wrong :>

#

turns out it's Xmult_mod

#

but the weird thing is, Goldor works with it

zealous glen
long sun
#
return {
            dollars = card.ability.extra.money,
            x_mult = card.ability.extra.xmult,
            colour = G.C.RED,
            card = self
        }```
dreamy thunder
zealous glen
long sun
#

alright so even stranger

zealous glen
long sun
#

the xmult is being applied, but no message, still

#

oh i. i'm a moron :>

#

there's no message :>>>

viscid bough
# zealous glen <@714256644229300356>

ive got this:

loc_txt = {
        name = "Revenant",
        text = {
            "Creates a {C:dark_edition}negative{} copy",
            "of last played {C:attention}consumable{} card",
            "{S:0.5,C:tarot}The Fool{S:0.5} and {S:0.5,C:spectral}Revenant{S:0.5} excluded"
        }
    },

and it seems to be working except for the attempt at changing size. Also, when you said main_end did you mean the little text at the bottom that says None if nothing was used or the cards name if there was something used?

#

Im not sure how to set the text of main_end to be the name of the card if i only have the key

#

let alone make it red if nothing was used

solar tide
#

Hello someone know how can debug joker, like i want to print some values in console or something just for seeing, i talk about values of variables

solar tide
#

and i've an other question what is the difference about center and card

#

'cause at some places, i put card for card.ability.extra.(....) for exemple and other i need to put center

#

i dont understand why

#

thanks in advance fr_pleading

zealous glen
solar tide
#

but in this example, i dont understand why they use card. and not center cause the value of repetition its on center

zealous glen
#

So it has a copy of the data

solar tide
#

ohhhh okay, i understand better

tepid crow
solar tide
#

and for debug, you know where and how i can print the variables values in the console

long sun
#

ooh new idea for Modern Art

solar tide
#

like i juste want to see if my code passed a if

long sun
#

Gives $5 if Blind is defeated in one Hand

tepid crow
viscid bough
solar tide
#

ty you helped me so much

wooden nexus
#

Okay, I got an odd question:

Let's say I have ModA with
local Test = --Code--
and i want ModB to reference that local variable. How do I do that?

hallow forge
#

that's the neat part

#

you don't

wooden nexus
#

crap

hallow forge
#

the entire point of local is to prevent that from happening

wooden nexus
#

well there goes my idea i had, scrapping it now

vocal verge
#

well at least it didn't crash
but idk if a bonus card is a good joker

iron plover
#

@tepid crow hola. so how would you go about adding those effects mid-game?

tepid crow
#

what you would then do is call that deck's :apply_to_run (or :apply in case of modded decks I think?), and store a copy of that deck's :trigger_effect so you can call it each time your deck's trigger_effect (I think it's calculate in new smods?) is called

#

make sure to store the decks you've "copied" in a table somewhere and you reload it with :load when the player continues the run

#

does that make any sense? 🤔

iron plover
#

yeah

tepid crow
#

no need for :load

#

good luck! let me know if you have something working? 😄

vocal verge
#

Reverse engineering is rough
but man, is it satisfying to get it working

frosty dock
#

reverse engineering?

vocal verge
#

Trying to figure out how it works

#

I haven't done lua in a while so i wanted to figure out how Midas Mask changes played cards before scoring

#

and if there's already a vanilla function to change enhancements and if it'll work for played hands

#

yeah i'm dumb, wiki does straight up outline how to do that

frosty dock
#

lmao nice job anyways

vocal verge
#

Is there anything special I need to do to make it appear in the shop? I assume yes

zealous glen
#

Make what appear in the shop

vocal verge
#

a modded joker

zealous glen
#

Not if you used Steamodded

vocal verge
#

sick

viscid bough
#

anyone got some ideas for what the art could be?

dry merlin
#

skull of some sort right?

rocky heron
faint yacht
#

...could take it literally and take a Doom I & II Revanant sprite, cyanotype it and then, after conforming the palette to the one spectral use, use a part of the result in there. Though, I did briefly imagine it being animated too. 😂

vocal verge
#

ultrakill skull

vocal verge
silk compass
#

@hidden timber i wanted to ask a question about installing mods using your mod manager, if a mod requires a dependency like DeckSkinsLite, how would it be installed? would I have to format my folders on github to look like this?
Mod_Name/DeckSkinsLite/assets/1x
(something similar with the skins folder as well)

foggy carbon
#

I'm looking in jokers.png but cannot find the Wee Joker. is it a special case? I wanted to make a few jokers that size

hidden timber
silk compass
#

guide is a better word

hidden timber
foggy carbon
silk compass
#

im guessing not at the moment

frosty dock
hidden timber
silk compass
#

making it an easy install via the modmanager

#

so installing the mod would just put the assets in the asset folder and the lua file in the skins folder

hidden timber
#

Why not make a seperate mod?

silk compass
#

well my mod only changes one suit at the moment

#

and deckskinslite basically integrates the selection of skins via the already built in "customize deck" button

frosty dock
#

steamodded has that built in though, deck skins lite just wraps the steamodded api

silk compass
#

forgive me, im not really experienced in any of this lol

#

i kinda just started a texture pack for balatro because I love the game and really wanted to see a luigi's picture poker texture pack made

gilded narwhal
#

Hey so calculate doesn't accept args as a context how would I do the whole if args.context == "eval" thing with calculate

#

Would it just be like if eval

faint yacht
#

This is tags or deck effects?

gilded narwhal
#

deck effects

faint yacht
#

Deck effects should pass if args.context == "eval" just fine... Though, from what I can assume, in your case, it does not.

gilded narwhal
#

Yeah you need to do that for trigger_effect

#

Wait does trigger_effect still work or has it been like completely removed?

#

Because in the wiki it just says it's depreciated

#

Okay I just tried it seems to not work

dusk shoal
proper stratus
#

WE HAVE A THREAAADDDDDD

#

WOOO

#

ITS REAL NOW

dusk shoal
#

-# (we have a thread)

proper stratus
#

EVERYONE CAN SEE IT

dusk shoal
#

-# (everyone)

frosty dock
#

it still gets passed the base game args that trigger_effect normally gets, when they happen

gilded narwhal
#

Gotcha

#

I don't think I need to use args anyway I can just use context.end_of_round

#

Okay one more quick q how can you tell what booster pack you skip

#

Like I wanna have a different effect if a mega pack is skipped

cerulean rose
elder vapor
foggy carbon
#

how do I get the contents of the played hand? Not the scoring hand, the played hand?

clever bear
#

Shit wrong modding chat mb!

gilded narwhal
foggy carbon
#

is that without the #?

cerulean rose
#

# gets the number of keys in a table

gilded narwhal
gilded narwhal
#

Here's the crash

frosty dock
urban veldt
#

Is there a mod template that just has, like, the files I need and stuff?

sand oasis
#

Not really. Each joker you make is going to end up being pretty much bespoke, but chances are they will fall in line with jokers that were either made examples of, or whose code is easily readable in the game's OG files. I've been told some examples are out of date but I will again point in the direction of the example mods for Steamodded, where at least the ExampleJokers mod helped me out. https://github.com/Steamodded/examples

GitHub

Steamodded example mods. Contribute to Steamodded/examples development by creating an account on GitHub.

#

trying to make a joker that finds the highest value card and turns it into a stone card and I really am not sure what to do here. I went after Raised Fist's code to model after, just filp it in reverse, and the iterative loop works but I have no idea how to iron out the second half of the card's function that actually turns the card into stone. "The Tower" tarot card has no documentation I could find. At the same time I've debugged this and "if raised_card == context.other_card" won't even run. Any pointers?

frosty dock
sand oasis
#

oh brother i had wondered

frosty dock
#
print('Final value of highest card: ', temp_ID)
if raised_card.debuff then
  return { ... } -- debuff return table, too lazy to type it out
end
print('Something will happen here')
raised_card:set_ability(G.P_CENTERS.m_stone) -- there's some other code you may put around this for it to look nice, such as flipping the card. but that's not needed to get it working
vocal verge
#

i need to figure out card flipping, great idea

sand oasis
#

wow dude thank you so much

frosty dock
#

as for not finding anything about the tower, the code for using it indeed doesn't mention it by name

#

we could have some consumables in ModdedVanilla

viscid bough
foggy carbon
#

okay, so now I have a card animating the flip over to show that it is promoting, but it only flips face down? It doesn't finish the animation to show that it's now a queen

vocal verge
#

repeat the flip afterwards?

cerulean rose
#

yes

foggy carbon
#

ahh

#

now I got it working.

vocal verge
#

king having affairs 😳

vagrant cedar
#

Is there a way to make a sound happen when a Joker is triggered?

#

Not constantly when you have the Joker

#

Just when it is used

tight thistle
#

i believe Cardsauce does that, so yes, but im not sure how

vagrant cedar
#

is cardsauce a joker or a mod

tight thistle
#

a mod

#

it has a joker that plays the wega scream when triggered

vagrant cedar
#

but do you happen to know which Joker it is

#

OH

#

Is it the Luigi looking one?

tight thistle
#

yes

#

its called "supper" in the files

vocal verge
#

wouldn't it just be putting the play sound command in the trigger part?

#

going off of seltzer

sick sparrow
#

is SMODS.Center directly creates center but not recommended to use?
if you are creating custom type of center, then it might be plausible to use

vagrant cedar
cerulean rose
#

turn on show file extensions

wintry brook
#

im trying to set the enhancement for a card but not visually show it till later. I tried set_sprites but it does nothing. as a test i even tried straight up setting the center to a new sprite and it still looks like the enhancement, so theres probably something somewhere setting the centers sprite itself. any ideas?

dusk shoal
#

yall ever get a really absurd mod idea thats way too hard to make but still a fun idea ?

#

maybe not hard but .a task

vagrant cedar
vagrant cedar
#

I've been trying to get a gameboy emulator to run in Balatro

dull saddle
#

anyone up to do a quick art review? i think im overthinking it

dull saddle
#

trying to make this look like a lightbox

#

wait i forgot a layer or two one sec

#

my refernce

ionic verge
#

oh one of those

#

i like it!

#

looks pretty complete as is to me

vagrant cedar
#

yeah that looks really good

vagrant cedar
dull saddle
#

im basically gonna make a hearts/diamonds vers of blackboard for my suit based pack

ionic verge
#

gotta make it 3x chips

#

for the funny

#

or more if you dont think its comparable

cerulean rose
#

twelve souls and ortalab have both already done this

nova finch
#

is there a way to check if the most played hand is discarded?

dusk shoal
#

not specifically, but you can check which played hand is discarded (burnt joker) and also check what the most played hand is

sick sparrow
#

how to access card.ability.extra while the game loads from saved run?

nova finch
cerulean rose
#

extract balatro.exe as a zip

random sleet
#

has anyone else had the problem where text added to playing card descriptions doesnt work on specifically modded enhancements?

im trying to modernize my old code for various things and the permamult and suit level tooltips both fail to apply to the description if it is a modded enhancement; cards without enhancements and those with vanilla enhancements are fine

#

ive been trying to read through the related code as for why modded enhancements are treated separately for this and i just cant find it and its driving me nuts aaa

karmic kelp
#

Does anybody have any ideas as to why these atlases aren't loading, and my jokers are instead appearing as Joker? (the coloration just means if they've been added to git or not, ignore it)

elder vapor
#

how come its highlighted red in 2x

karmic kelp
#

because I haven't added it to my git repository yet

elder vapor
#

ah

#

oh i didn't read the second part of the sentence 😭

sick sparrow
#

how to access card.ability.extra while the game loads from saved run?

elder vapor
#

check the content of the 2x images

wintry brook
karmic kelp
#

the functional atlases I have in another file use the period so

elder vapor
#

:register() is deprecated, no?

wintry brook
#

also, the syntaxc is
SMODS.Atlas({ stuff })

elder vapor
#

(yes but no, you don't need the brackets)

karmic kelp
#

something something implied call if only argument is table?

cerulean rose
#

yes

karmic kelp
#

and yeah the 2x file is just an upscaled version of the 1x file

cerulean rose
#

is your joker set to the atlas

elder vapor
#

oh do you know if the atlases are being properly registered?

karmic kelp
#

I have no idea how to check

sick sparrow
#

how to access card.ability.extra while the game loads from saved run?

viscid bough
#

ive got a joker thats supposed to have a 1 in 4 chance to duplicate consumables on use, but nothing is happening when i use cosumables. No message shows up or anything.

SMODS.Joker {
    key = "recycle",
    loc_txt = {
        name = "Recycle",
        text = {
            "{C:green}#1# in #2#{} for {C:attention}consumables{}",
            "to be duplicated on use"
        }
    },
    config = { extra = { odds = 4 } },
    loc_vars = function(self, info_queue, card)
        return { vars = { G.GAME.probabilities.normal or 1, card.ability.extra.odds } }
    end,
    rarity = 2,
    atlas = "Jokers",
    pos = { x = 0, y = 0 },
    blueprint_compat = false,
    calculate = function(self, card, context)
        if context.using_consumable then
            if pseudorandom("reduce reuse recycle") < G.GAME.probabilities.normal / card.ability.extra.odds then
                SMODS.add_card({ area = G.consumeables, key = context.consumable.config.center.key })
                return {
                    message = "RECYCLED!",
                    colour = G.C.GREEN
                }
            else
                return {
                    message = "TRASH!",
                    colour = G.C.RED
                }
            end
        end
    end
}
karmic kelp
elder vapor
sick sparrow
elder vapor
#

do you know if card is actually a card

wispy rose
#

can anyone help me figure out the issue with this? it happens on card click after a run is loaded in

#

current mod list

viscid bough
sick sparrow
#

because of cyclic reference i have to overwrite/hook game's copy_table function to prevent cyclic reference

sick sparrow
karmic kelp
cerulean rose
#

remember that atlas coordinates are 0-indexed

karmic kelp
#

both 1, 2 and 2, 1 in my atlas have sprites
and from my prior efforts, I know that if you point to an element of the atlas that's just transparent pixels
you just get an invisible thing

sick sparrow
#

Defeated By ERROR Blind

#

caused by killer death card

nova finch
sick sparrow
#

and no the variants are not duplicates of card it's a real variant that changes no gameplay elements whatsoever

vagrant cedar
#

It's supposed to play a sound when it triggers

sick sparrow
#

did you prepend your prefix?

vagrant cedar
sick sparrow
#

this is because you might downloaded wav file instead of ogg file

vagrant cedar
#

no it's ogg

sick sparrow
#

then prepend your prefix

vagrant cedar
#

what does that mean

sick sparrow
# vagrant cedar what does that mean
--- STEAMODDED HEADER
--- MOD_NAME: HandPlus
--- MOD_ID: gerio_handplus
--- PREFIX: geriohp
--- MOD_AUTHOR: [GerioSB]
--- MOD_DESCRIPTION: Creates Extra Hand Types.

----------------------------------------------
------------MOD CODE -------------------------
vagrant cedar
#

ah

#

where do i attach this prefix

#

in the key or the path

#

or the sound in the joker part

sick sparrow
#

did you have a prefix in header?

vagrant cedar
#

it's in .json

sick sparrow
#

upload so i can see what's going on

vagrant cedar
#

i know the name is different of the lua i sent here, it's a snippet

sick sparrow
#

it's supposed to be

      return {
        mult_mod = card.ability.extra.mult,
        message = localize { type = 'variable', key = 'a_mult', vars = { card.ability.extra.mult } },
        sound = "mvan_jokerbabysound", volume = volume, pitch = pitch
      }
plain apex
#

does always_scores = true on enhancements just not work? both my enhancement and the one from ortalab using this don't score when played alongside other stuff like stone cards do

vagrant cedar
#

IT WORKS

#

Thank you qwerty

runic pecan
sick sparrow
runic pecan
runic pecan
#

So you want a bunch of jokers, while having different sprites, act exactly like each other.

sick sparrow
runic pecan
sick sparrow
runic pecan
#

And I seem to forgot, your current question is?

sick sparrow
runic pecan
sick sparrow
runic pecan
nova finch
runic pecan
runic pecan
sick sparrow
#

it's a simple sprite replacement

runic pecan
#

wdym "didn't coded in"

runic pecan
# sick sparrow all

I don't think this is a proper timing to reply "Yes" to my question of "How many".

karmic kelp
#

In the code he shared earlier there's 7 variants, so technically it's a good answer

runic pecan
#

7 or 8

#

wait

#

The way you said "1 joker different" made me falsely presume that 7 of them share the same in every part of code with just an extra odd one standing out like a bullied victim.

sick sparrow
runic pecan
#

There you go.

#

So you want ONE(1) joker that can switch its sprite on defined circumstances.

sick sparrow
#

yes

runic pecan
#

Is that even possible? @frosty dock

#

'Cause I actually don't know if that's a thing or not.

karmic kelp
runic pecan
runic pecan
# sick sparrow yes

So I just have two awful ideas:
a)Code some edition specifically for this joker to use.
b)Use stickers that can cover entire joker with new sprites.

karmic kelp
#

could you also maybe look at Jimball from Cryptid? since that thing's got an animation, might be able to offer an insight as to changing sprites

runic pecan
karmic kelp
#

oh that's just an outright supported thing?

sick sparrow
sick sparrow
#

yes

runic pecan
#

And is your problem solved?

sick sparrow
runic pecan
cerulean rose
#

cryptid's seal the deal also has alt sprites

sick sparrow
nova finch
#

how do i destroy selected playing cards?

cerulean rose
#

add remove = true to your return table

nova finch
vagrant cedar
sick sparrow
nova finch
#

oh yeah

sick sparrow
vagrant cedar
#

I didn't have to ask the question lmao

sick sparrow
#

and make sure the number is enclosed in math.abs(-5)

sick sparrow
nova finch
nova finch
sick sparrow
runic pecan
#

How do I write the patch pattern if I want to patch this part?

#

I wrote 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" and it didn't work.

viscid bough
onyx inlet
#

I would recommend doing something on failure, like playing JuiceUp on the joker.

#

Just to test

viscid bough
#

It supposed to send a message even if it’s not rolling right. And I’ve tested a lot, even with some Oops all 6s to make it guaranteed

runic pecan
onyx inlet
#

Oh? It’s hard to follow the “end” braces when the indents are messed up on my tiny phone screen XD

viscid bough
#

I’m wondering if it has something to do with the hook I put with the use_consumable function. However, the hook returns the right things, and the hook doesn’t change it

upper fern
#

is there a way to recalculate the scored hand after applying an effect to cards in a manner similar to Midas Mask?

#

In this case I am convering all scored 8s and 9s into 7s so that can affect what the played poker hand should be

cerulean rose
#

vampire doesn't recalculate if stone cards have their enhancements removed

runic pecan
upper fern
#

Ah, an excellent point rosethink
Yeah I should probably just leave it lol

#

And Vampire doesnt even specify 'doesnt affect scored hand' because that is implied so I'll just leave my joker as is

runic pecan
#

Can I make a patch that is targetting another patch?

wild patrol
#

I wonder if I can make a monster reborn card in balatro

#

Guess it could be a tarot card that restores a deleted card, but not sure if there's any code I could leech from to make it work

gaunt thistle
upper fern
#

That might be a starting point, seeing how it records the last used tarot/planet

wild patrol
#

Ooh that's a good it idea

#

Forgot about the fool

#

Right now just trying to figure out how to put them in their own card packs

#

Tho not sure if having jokers and tarot cards in same pack would confuse the game

#

Was gonna add copycat and make it just a carbon copy of blueprint lol

runic pecan
#

The downsides is the spectral cards won't be recycled that way though

wild patrol
#

Is it even possible to make custom packs

#

Something I really need to know

upper fern
#

I'm almost certain it is

upper fern
wild patrol
#

Ty

sick sparrow
#

all arcana pack?

sick sparrow
wild patrol
upper fern
#

check the second link I gave :)

#

CA_BoosterPacks.lua

wild patrol
#

Is that all I really need

#

Looks like there's some extra stuff in there that's needed

wild patrol
#

That files is basically creating the pack and is calling the cards from mod/CodexArcanum.lua

#

Hopefully I'm reading this right

random sleet
#

no dont use codex as a reference

#

codex is old at this point smods has its own booster api

#

ortalab uses it

wild patrol
#

As a smoothbrain individual what would be a good example of making one card with a proper file structure

random sleet
#

big recommend to look at a currently maintained project instead of codex lol

wild patrol
#

So I know how to properly do this

#

Getting sent left and right to different mods with different file structures and different methods of being done

random sleet
#

yeah

wild patrol
#

Kinda overloading me

#

I just a simple one and done

#

And good to go

random sleet
#

sorry but fr codex is out of date

#

unfortunately i dont have much time but yeah i recommend checking like ortalab in the current ecosystem if you want to peek at mod workings

wild patrol
#

Like I just something like

folder structure with card assets a one lua script to setup the mod one for the custom pack and one for list of cards lol

wintry brook
#

Pokermon has pretty good file structure imo

#

im basing my mod off of it's methods

wild patrol
#

I'll take a look saw it earlier

#

I just hate like copying someone's mod and reskinning it you know

vocal verge
#

You're bound to eventually copy someone else, even on accident

wild patrol
#

Still knowing I've done doesn't let me know I learned anything

#

At least watching video guides when ur copying code you're learning how things work along the way copying a mod from GitHub and just changed a couple lines and textures doesn't really help me learn more coding

#

You know

vocal verge
#

But studying that code, seeing what it changes and sets does

If you just copy paste then yeah

wintry brook
#

theres no better way to learn balatro modding than look at how other people have done things atm

#

just studying other code is pretty much all we got lol

#

and this discord of course

wild patrol
#

Yeah, but everyone has their own style of coding so sometimes it can be kinda hard to find best ways to make something

#

Especially in lua

#

Used to mod GMOD back then the only organization you'd really see is a Lua model material and sound folder lol

#

Anything after that is anything goes

#

I mostly just need to get a simple script going for a custom pack to slap my new cards in ain't really going above and beyond

#

Usually the best way is to start small work your way up

#

Maybe I can just look how the vanilla game handles card packs instead

wintry brook
#

atleast look at the wiki a little, particularly the booster section

wild patrol
#

That seems a bit easier to understand

upper fern
#

it would help if wiki links / up to date examples were pinned in the discord ^^;

wild patrol
#

More guides would be nice for more simplified code for people to begin with as well

faint yacht
#

Actually, if you need an example of booster packs that contain specific Jokers defined in a "list", I have one that does just that.

tight thistle
#

does lobotomy corp do that?

crisp coral
#

LobotomyCorp has uses a different (but similar to the vanilla) function to generate its own pool of cards

tight thistle
#

got it

proper stratus
#

heya fellas! im having some trouble over here- for some reason the game wont show the name and description of this sticker

#

i really dont know why..

crisp coral
#

if you're looking at its code, the parts you'd wanna keep in mind are the ones under these comments: --create the pool, --cull the pool and --if pool is empty

faint yacht
proper stratus
#

well, no see- the label works

#

its just everything inside description isnt shown

#

ive tried looking around inside other code files and they all seem to do the same thing as me

#

it must be some really small thing im missing

#

hmm

wild patrol
#

Trying to basically port in Yu-Gi-Oh cards as a funny meme pack

#

But some might have effects that aren't joker

#

So like to put them all in one specific pack so you are guaranteed to pull

#

Kinda like a real TCG pack pull lmao

#

With 5 cards per pull

#

An example code would help a lot without all the bells and whistles of more experienced modders

wild patrol
#

Are you wanting it to say sticker?

#

Change Miku seal to Miku Sticker in the label and the name below it should work

vocal verge
#

no, i'm just showing bird the structure for the sticker to show the name and description

#

was a quick example, but i'm also gonna make a miku seal

#

(when held in hand, creates hierophant tarot)

#

I wanna make a whole vocaloid set with a bunch of the most popular ones and some themed stuff for them

sly thunder
#

creating absolutely horrendous code for this

#

is there a way to hook steamodded functions

zealous glen
#

yes

#

but do you? I think like you could make it work like Blueprint

violet void
#

I have a question for the assets, whats the difference between x1 and x2 as in where are they being used respectively?

When making a custom Joker, do you make it x1 first and upscale it for the x2 folder or the other way around?

I've been doing them in the x2 format to paste into the x1 folder afterwards and I really don't see a difference

vocal verge
#

she's beautiful

violet void
#

That doesn't help me understand

zealous glen
#

1x to 2x is better IMO

#

because you can't lose detail upscaling correctly

vocal verge
#

😭 she got so scrunkled

zealous glen
violet void
vocal verge
# zealous glen more mikus

I do want to make a rare joker that has a 1,000 chance of applying Uber Miku
it just covers the entire card in mikus

dim steeple
#

Probably missing something really obvious here, but when using a custom Shader in a Seal:draw() method, I can't pass it the same list of arguments as a normal shader

zealous glen
#

I like the idea of a card being covered in stickers

dim steeple
violet void
zealous glen
#

they're different forms of interpolation

violet void
#

Ah I see now, thanks for the info 😄

wintry brook
#

cryptid upscaled with a python script which is funny i think

zealous glen
#

I just use aseprite

#

and export at 2x

violet void
#

I was using PixiEditor, it's a different world entirely lol

vocal verge
#

gimp gaming

wintry brook
wild patrol
#

photopea because Photoshop too expensive

faint yacht
#

Honestly forgot for how long I've been using Paint.NET as main... but if I need to palettize something, Photoshop still is kept in the backpocket.

wild patrol
vocal verge
#

go miku, go

faint yacht
#

But as long as it works in the end for the user, anything can go.
-# Some still use the older versions of MSPaint for stuff.

sly thunder
vocal verge
#

imagine it triggers madness and just dies

wild patrol
#

Joker card that if u draw it you automatically lose the run

sly thunder
#

i could solve one issue but i cant find any examples for hooking into other mods (in this case steamodded) code...

wintry brook
#

cant you just make a table of references to the calc functions of the jokers it destroys?

zealous glen
wild patrol
zealous glen
#

SMODS.foo = function(args) smods_foo_ref(args) end

wild patrol
#

Where u sell it to protect from boss effects

vocal verge
#

where would i find documentation on making the cards flip

wild patrol
#

Gonna add exodia then try solving adding a card pack to the game

zealous glen
wild patrol
#

Before doing more cards

zealous glen
#

there's only flip

vocal verge
#

ah oke

sly thunder
vocal verge
#

thought there was like a whole thing about card animations and shiz

zealous glen
#

I thought of adding some YGO Jokers but I'm not sure I'll do that

#

I do have some programmed in

wild patrol
#

I've been doing it I got pot of greed working lmao

sly thunder
#

i was wondering abt lovely injection but i can probably just add my code to the end like that

zealous glen
#

yet another pot of greed in balatro

wild patrol
#

It was the most obvious starting card

vocal verge
#

lmfao
trying to find just a small clip of miku saying miku

what's the point of this? truly burning hte planet for no reason

zealous glen
#

I programmed a Tour Guide and I had an idea for AFD/Terraforming

wild patrol
#

It's literally the staple meme card of Yu-Gi-Oh next to exodia

zealous glen
#

I thought of BEWD before those

#

and it was easier to come up with an effect for it

wild patrol
#

I'm trying to stick with the theme of a card

#

And giving it a balatro equivalent effects

zealous glen
#

the WIP

zealous glen
wild patrol
#

Adding BEWD wouldn't make sense since it's a vanilla with no effect in the actual game on it's own

zealous glen
#

but I never programmed it

wild patrol
#

Oh that makes sense lmao

zealous glen
#

I don't like it tho

#

Who came up with that stupid idea

sly thunder
zealous glen
#

so now I need a new flavor for it

violet void
wild patrol
#

I'm going for simplicity

zealous glen
wild patrol
#

How far along is ur version of a Yu-Gi-Oh pack mod

zealous glen
#

I'm not making a Yu-Gi-Oh! pack mode so

wild patrol
#

Ah

sly thunder
#

as far as i can tell if i wanted to activate two jokers that had a "retrigger cards" effect but one said the usual "Again!" and another said something else there's no way i could replicate that in the effects of one joker without some very scary hooking i dont wanna touch but probably will end up doing anyway

zealous glen
#

either 0% or 100$ or NaN depending on your opinion

wild patrol
#

Soon as I can figure out how to add a new card pack

random sleet
#

100 australian dollars...

wild patrol
#

I'll probably be off to the races on my mod

random sleet
#

boosters are like mid tier trickiness to add

vocal verge
#

are the 2 arguments in play_sound just volume and pitch?

zealous glen
#

there's SMODS.Booster now

#

idk

random sleet
zealous glen
#

I haven't tried

#

why tho

random sleet
#

you have to handle a lot of the process smods mostly just gives you the hooks to do so

zealous glen
#

by the way do you know lua

#

I don't understand why vscode is yelling at me

wild patrol
#

Is the wiki based on the alpha or old version of smod

long sun
#

thoughts on this ability for Blind Joker?
(Common): Creates a Planet card if played hand contains a Pair of Aces

random sleet
#

i dont know lua sorry

wild patrol
#

Ok

wild patrol
#

Well I'll try coding it myself see if I can get new pack to work

zealous glen
long sun
#

well, it is common :}

zealous glen
zealous glen
long sun
#

Superposition is much rarer, so i thought Planets instead of Tarots would be good

zealous glen
#

strength-wise

vocal verge
#

maybe make it targetted planet for the played hand?

zealous glen
faint yacht
#

To be fair, I think you can have an "ObjectType" that has both Jokers and Consumables to "take". 🤔

vocal verge
#

yeah it gives tarots now

long sun
#

well ya because it's rarer

#

i know that :>

vocal verge
#

it's common

random sleet
zealous glen
#

I know it gives Tarots, but I'm saying it was buffed to not give Planets

long sun
#

the hand you need to play is rarer

vocal verge
#

i guess, yeah

long sun
#

but ya targeted planets would be neat

zealous glen
#

The point is that the effect is so weak you wouldn't buy it

vocal verge
#

just kinda feels wack to play a hand wiht pair of aces, like say full house

#

and then just get high card

long sun
#

fairfair ^^

zealous glen
#

I do think making it targeted makes it much stronger

vocal verge
#

maybe most played hand?

long sun
zealous glen
vocal verge
#

fairs

zealous glen
vocal verge
#

people who don't get any other joker

zealous glen
#

are these Superposition users in the room with us right now

#

/j

frosty dock
#

an empty joker slot can actually be more useful than superposition

vocal verge
#

you get stake stickers for having the joker in your joker slots when you beat ante 8, right?

frosty dock
#

yes

long sun
#

i mean, fair - superpos isn't that great either

vocal verge
#

i mean hey

#

better than egg when it comes to actual score

long sun
#

ya i'll go with targeted planets ^^

frosty dock
#

nah, I'd take egg over superpos all day

zealous glen
#

I think target planets makes it uncommon or rare

vocal verge
#

i mean moer like
keeping it around

#

and not selling it

long sun
frosty dock
#

the temperance in question:

vocal verge
#

oh right

#

ceremonial does get rid of egg

vocal verge
#

swash is a good call

zealous glen
#

temperance when egg

#

@frosty dock can you answer a quick lua question

#

why is vscode yelling at me

vocal verge
#

how would i go about delaying an action?
specifically flip a card, do the change, then flip again

vocal verge
#

mmm event manager

#

figures

frosty dock
zealous glen
#

you're right I lost the function

frosty dock
#

local func

zealous glen
#

it's happy now

zealous glen
#

but I forgot

vocal verge
#

mm, actual complicated code

zealous glen
#

the difference between local foo; foo = function and local foo() …

#

or maybe it was something else similar

frosty dock
#

with

local foo = function() ... end

a reference to foo doesn't exist within the function, so it can't be called recursively

local function foo() ... end

is syntactic sugar for

local foo; foo = function() ... end

both of which do allow foo to be called recursively

zealous glen
#

Because it didn't break when I did it recursively

#

even though vscode complained

vocal verge
#

puppy brain so small to figure out what the hell i'm doin

frosty dock
#

idk I've seen it break from doing that

zealous glen
vocal verge
#

aight

#

time to crash my way into a solution

dreamy thunder
#

how do i check if a voucher has been redeemed or not? i have a joker which i want it to work after the set voucher has been redeemed

faint yacht
#

if G.GAME.used_vouchers["voucherkey"] == true iirc?

zealous glen
#

Does pseudorandom account for a card being in the collection or not?

vocal verge
#

huh, there's no joker in vanilla that flips played cards

sick sparrow
#

how to create consumable set?

#

where is SMODS.ConsumableType located at? undocumented?

faint yacht
vocal verge
long sun
#

had another Common idea:
Gives $2 when a Tarot card is sold

#

might increase the value though

vocal verge
#

increase sale value by 2 bucks when tarot card is sold

#

Delayed Tarotification

long sun
#

:}

#

it doesn't affect sale value actually

#

it just gives extra money ^^

#

the plan was for this to work well with a Crescent machine

wild patrol
#

Are consumables things like celestial cards

long sun
#

mhm!

wild patrol
#

Where just a one time use

#

Ok just making sure

long sun
#

generally speaking, consumables are things that go in your consumable slot

wild patrol
#

Can you combine jokers and consumables together into a back or would that cause coding issues

vocal verge
#

uhmmm

#

they're called Consumeables

#

thank you

long sun
zealous glen
#

-# placeholder wording

wild patrol
#

I should probably turn pot of greed into consumable for a plus 2 hand

#

Or is it more funny for plus 2 joker slots

zealous glen
#

-# the people yearn for oddities

vocal verge
wild patrol
vocal verge
#

lucky

zealous glen
#

I didn't pay attention to the lucky

wild patrol
#

Could probably make it a draw 2 joker card

vocal verge
#

draw 2 extra cards per draw

candid epoch
#

how to make own stone cards i wonder

wild patrol
#

So much to learn

vocal verge
#

there's context for right after discard so, doable

candid epoch
#

exacly

wild patrol
#

Now I need an example consumable card code to understand how it works

vocal verge
#

i'm currently trying to figure out how to make miku say miku when she mikus the cards

wild patrol
#

Pretty sure there's a play sound function

vocal verge
#

yeah

#

i'm wrapping my head around G.E_MANAGER

#

cause i want to flip the cards nad play a sound

zealous glen
#

can't you use the vanilla example

wild patrol
#

If you can find how sounds play in vanilla game

#

You prob copy paste a sound function to play on card flip

#

If it's a Miku card only

vocal verge
#

puppy brain is small and slow

wild patrol
#

But not many examples for anything else

zealous glen
#

The Star, The Moon, The Sun, and The World

candid epoch
#

i think the worse part of makeing mods, is to try to get idea for it

vocal verge
#

nah

#

that's the easy part

wild patrol
#

Ideas are wasy

candid epoch
wild patrol
#

Trying to get a base going is the hard part

vocal verge
#

mods can be as simple as just

candid epoch
#

the only time i get ideas is during sleep, and it takes alot of energy out of me

vocal verge
#

"played cards play a cat sound when scored"

#

or as complex as

#

"When blind is selected, destroy joker to the right and add it's ability to this joker"

candid epoch
#

but its just a texture pack

vocal verge
#

LekkiThumbsUp that's a mod

candid epoch
#

normaly yes
but if going by the minecraft modding community sense
nah

vocal verge
#

going by definition

#

that's a mod

#

either way, you got htis

#

something will hit ya

sick sparrow
#

insanium cards

wild patrol
#

You can even add a new section of cards in collection

#

I need to learn that to

frosty dock
#

chat my crash screen just opened two instances of balatro on restart

#

they're in the same terminal

candid epoch
violet void
candid epoch
#

it can be boring

#

so why not fill the gaps with something?

vocal verge
#

ok well now what

wild patrol
#

Imagine having 7 hours to spare a day to code

#

Imagine having any free time to code

candid epoch
#

one day i had 13 hours of freetime

#

and what have i done with all of it? sleep

vocal verge
#

ok, we getting somewhere

frosty dock
candid epoch
#

i am more wondering why its sound is called miku

frosty dock
#

the game doesn't have enough information to know the sound key you're giving it is from your mod

vocal verge
vocal verge
#

or the path for hte atlas

candid epoch
#

whats your mod prefix?

vocal verge
#

vcld

candid epoch
#

then you also need to put it there, i think it was before but not sure

long sun
candid epoch
plain apex
#

what am i doing wrong here? its displaying properly what the mult should be but isn't giving me it?

SMODS.Joker{
    key = 'Vbucks',
    loc_txt = {
        ['en-us'] = {
            name = "Vbucks",
            text = {
                "{C:mult}+#2#{} Mult for each {C:money}dollar{} you have",
                "{C:inactive}Currently {C:mult}+#1#{} Mult"
            }
        }
    },
    atlas = 'Jokers',
    pos = { x = 1, y = 8 },
    config = {
        extra = { 
            multmod = 2,  -- Multiplier modifier per dollar
            mult = 0,      -- Stored multiplier (calculated dynamically)
        }
    },
    rarity = 2,          -- Uncommon joker
    cost = 10,           -- Cost to purchase
    blueprint_compat = true, -- Compatibility with blueprints

    loc_vars = function(self, info_queue, card)
        return {
            vars = {
                self.config.extra.mult,     -- Current multiplier
                self.config.extra.multmod  -- Multiplier per dollar
            }
        }
    end,

    -- Function to calculate multiplier
    calculate = function(self, card, context)
        local dollars = G.GAME.dollars or 0  -- Store dollars
        local multmod = self.config.extra.multmod
        local mult = multmod * math.max(0, dollars)  -- Ensure multiplier does not go below 0
        self.config.extra.mult = mult -- Store the calculated mult

        -- Apply the multiplier in scoring
        if context.joker_main then
            return {
                message = localize {
                    type = 'variable',
                    key = 'sj_mult',
                    vars = { card.ability.extra.mult }
                },
                mult_mod = card.ability.extra.mult,
                card = self
            }
        end
    end
}
long sun
candid epoch
#

haveing it read "the planet card" alone sure
but when creating it should be "create a planet card"