#💻・modding-dev

1 messages · Page 181 of 1

grim remnant
#

could i perhaps just put G.GAME.hands["High Card"].played in the equation, or would that not work? :o

rose dragon
#

update: i changed it to start with 2.50 xMult and removed the natural decay and now you get an average of 30k chips when scoring a flush of the chosen suit; i think it may need to be debuffed again

grim remnant
#

what am i not seein' here?

nova finch
#

how would I get the name of a joker? I'm trying to make a joker that takes the joker to the left of it and gives mult for each letter in the joker's name

plush cove
#

old loader file

#

new loader file

plush cove
# nova finch how would I get the name of a joker? I'm trying to make a joker that takes the j...

I honestly wouldn't recommend making something like this, because then if you're going to later localize your mod, the other Joker's name might be way shorter or way longer and make this new Joker better or worse

But if you want to do so anyway, maybe try localize{type = 'name_text', set = 'Back', key = [OTHER_JOKER_KEY]}

(replace [OTHER_JOKER_KEY] with some method of retrieving the other Joker's key)

grim remnant
#

i'm still trying to figure this out, but no dice?

limpid halo
#

The first line of your return statement

#

Take that out

runic pecan
#

Does anyone here know how the second input of play_sound works?
Like, I know it's pitch, but what number do I put there to shift it from F to G?

mint hull
#

how do i get the game assets?

#

im trying to get the high contrast / non high contrast sprites of the playing cards

paper zealot
#

Then look in resources/textures/1x or 2x

#

Regular card sprites are 8BitDeck.png, high contrast is 8BitDeck_opt2.png

mint hull
#

what the hell is that

lavish lake
limpid halo
long sun
#

if it helps, the base pitch of a sound is 1

#

i'd wager that it works logarithmically? so 2 is 1 octave above, 4 is 2 octaves, 0.5 is 1 octave below?

#

you'd have to calculate the ratio yourself though

scarlet spire
#

how can I stop this calculate from destroying all face cards in the played hand? I just want it to destroy the last one played

#

I had it working without destroy context but that's apparently prone to making ghost cards, but I'm not quite sure how destroy context works

red osprey
#

Change if lastfacecard to if lastfacecard == context.other_card

#

The context is called once for each scored card

#

And the return of destroying_card is not doing anything, only remove = true does

violet void
scarlet spire
#

hmm, now it doesn't destroy any of them

red osprey
#

My bad, destroying_card, not other_card

#

Standardization is for nerds

scarlet spire
#

ahh

red osprey
scarlet spire
#

okay thank you, that works!

red osprey
#

However removing blueprint from the equation is a good idea

limpid halo
red osprey
#

Just so that it doesn't also ramp blueprint (this won't do anything as blueprint doesn't return its chips, mult, and Xmult, but still would look weird)

violet void
scarlet spire
#

oh wait it would be adding mult to blueprint, I see

#

for cases like this would blueprint copying it just return the xmult of what the original is returning

#

I'm not 100% sure how copying jokers work under the hood

limpid halo
#

isn't all blueprint does is just call the calculate again but with context.blueprint?

red osprey
#

Currently it would copy the entire calculate function, so copying both the Xmult of joker_main, and the destroying in destroy_card

scarlet spire
#

ah so anything I don't want to happen to the blueprint I just specify with not context.blueprint

red osprey
#

So you just need to add and not context.blueprint to the second one to avoid weird stuff, and it will just copy the Xmult

limpid halo
#

i like just putting if context.blueprint then return end at the top if blueprint is unsupported

#

or wathever it is not at my balatro gaming device

red osprey
#

Since SMODS follows OOP principles much more closely than regular Balatro, this is also an option, yes

limpid halo
scarlet spire
red osprey
#

The irony is that the calculate function, while messy and only really possible because of how lax Lua is, is not a bad idea on its own

#

The massive 500 lines if else is

scarlet spire
#

will probably rebalance the mult values, it might be a bit op right now

red osprey
#

I think it's fine

#

It ramps twice as slow as Canio and requires you scoring the cards (so you can't burst out mult with Hanged Man or Immolate)

limpid halo
#

it's really funny looking at the source code of balatro and having that initial reaction of "oh god what the fuck" but then going "actually, this sorta does make sense in a weird way"

scarlet spire
#

true, yeah

red osprey
#

And has the same issue of "at some point you don't have face cards anymore"

scarlet spire
#

originally it was literally just mini canio but I wanted something more unique

red osprey
#

I do like it

#

Thematic and a good buildaround

#

Probably would consider it over something like Hologram or Constellation

#

Also small nitpick: Xmult jokers generally don't do anything when they're at x1

#

So a small check that the Xmult is above 1 in the joker_main would be nice

scarlet spire
#

ah never noticed that

#

though it does make sense i'd never notice that

red osprey
#

Yeah it's supposed to not be confusing to see the Xmult animation but nothing happens

sturdy compass
sturdy compass
red osprey
#

So many things that could have been factorized into helper functions...

sturdy compass
#

Shhhhhhhh

scarlet spire
manic rune
#

i have an idea for a joker

scarlet spire
#

fun fact, the four digits at the end of the phone number spell out joke (or, well, they're meant to)

sturdy compass
#

It was a practice project give thunk some slack

limpid halo
manic rune
#

Where's Waldo but as a joker, and when you have it, it randomly chooses one card in your deck and turns it into SOMETHING, and if it is played, big gains

violet void
#

Astra it seems we are all fighting for that one spot 😆

limpid halo
sturdy compass
red osprey
#

And I assume programming is not their career

limpid halo
#

hey a functional game > a pretty coded game

#

at the end of the day

sturdy compass
#

this is so true

manic rune
red osprey
#

(Ironically I also started out programming by making LÖVE games after seeing Move or Die used it, and yeah my code wasn't much better)

sturdy compass
#

if it works it works and you should never touch it again so you don't break it sweaty

limpid halo
#

I could not imagine using lua for a game myself though

sturdy compass
#

<--- is speaking from experience Clueless

violet void
red osprey
#

I could with the intellisense afforded by the VSCode extensions. Once you have touched autocompletion from more strongly typed languages you can't really go back

sturdy compass
#

For all we know, a ton of this stuff gets polished with the gameplay update

#

That might just be wishful thinking tho

red osprey
#

If so, that's nice because cleaning, and not nice because SMODS would most likely go down for a bit because of all the changes

sturdy compass
#

yep

#

lovely probably not ngl, but definitely smods

red osprey
#

Yeah lovely won't

sturdy compass
#

it'd be a hell of a week or so

violet void
#

I fear that moment

red osprey
#

Yeah, that's what I meant by SMODS

#

Lovely itself should still work (in fact I'm surprised it's so explicitly tied to Balatro, it should work with literally anything made in Lua)

violet void
#

🙏🏽

runic pecan
#

This happens when I played a hand.

sturdy compass
#

Show code?

runic pecan
violet void
#

wouldve been nice with the line numbers

manic rune
#

thats weird, did you declare card.ability.extra.vol_mod in configs and loc_vars?

sturdy compass
#

That’s what I was gonna ask

#

Those should be getting defined in a config array

manic rune
#

yeah, just declaring variables in loc_vars wont add them to card.ability.extra, i think

runic pecan
sturdy compass
#

Yep lol

red osprey
#

And loc_vars probably should return card.ability.extra.mod and card.ability.extra.vol_mod

sturdy compass
#

Assuming they’re used in the description

manic rune
#

yup

#

but im pretty sure they just got config mixed up with loc_vars

#

oh also

#

whats the joker in cryptid with a spinning ball?

#

i forgot its name

sturdy compass
#

Jimball

limpid halo
#

Kimball

manic rune
#

Limball

sturdy compass
manic rune
#

thanks guys

#

also ngl beeps, your name wouldve been really similar to me if i removed the Fever part lol

limpid halo
#

Thank you jimball for teaching me music how

#

True

sturdy compass
#

Jumball taught me joker animation lol

manic rune
#

im gonna see what i can learn from jimball and try to code an api for animated sprites

limpid halo
#

I should look into animated or at least sprite replacement for my timeout joker

runic pecan
manic rune
#

huh

#

oh wait

runic pecan
#

Before anyone ask, I did hit Ctrl+S

manic rune
#

try to make a new run

#

damn

#

hm

#

oh its not R

runic pecan
sturdy compass
#

Probably

manic rune
#

did you make a new run before testing again?

red osprey
#

Yep, the card doesn't have the ability configured correctly

#

A new run is not necessary, just a new copy of the joker

runic pecan
manic rune
#

since im pretty sure existing jokers dont add new variables in their .extra.ability when you change them in code

sturdy compass
#

They do not

red osprey
#

Config is copied into ability upon creation

wintry solar
limpid halo
#

Making a custom challenge for testing has been the best thing I’ve ever done

sturdy compass
#

Making custom challenges in general is just fun

red osprey
sturdy compass
#

I just put out 2 more for my mod today

limpid halo
red osprey
limpid halo
red osprey
#

Allows you to spawn jokers and consumables among a lot of other cool stuff

#

Fair

#

There's also TooManyJokers

violet void
#

I wish you could pin jokers with tmj

wintry solar
#

What would that be for?

manic rune
#

ah, so this is how they animate their sprites

sturdy compass
#

Indeed

limpid halo
#

Ahhh just in update that’s not too bad

violet void
sturdy compass
#

Yeah it’s not (luckily)

wintry solar
manic rune
#

theres save states?

wintry solar
#

Someone needs to figure out how to get the animatedsprites built in to work on things other than blinds

limpid halo
#

In debugplus ye

gray apex
#

UI is my passion

sturdy compass
violet void
#

just a small thing

manic rune
limpid halo
manic rune
#

but i am in no position whatsoever to comment on that 😭

sturdy compass
wintry solar
#

Only when you change the config but then you can just respawn the joker easily and resave the state

sturdy compass
gray apex
red osprey
#

So quitting gives you almost a full salary? Sign me up

atomic edge
#

what language are balatro shaders made in?

red osprey
#

F# iirc

violet void
sturdy compass
manic rune
#

i mean, only 2 regulations are not that bad

limpid halo
#

Ok I’m adding a joker to my todo list that gives you mult or smth but if you deselect a card it’ll cost you $1 or smth

manic rune
#

you should make it so new regulations are added for each ante passed, alongside more rewards and penalty

#

❤️

sturdy compass
wintry solar
limpid halo
manic rune
#

again, 2 regulations are not so bad when you can just dart your eyes over both of those zones, and you can completely ignore other fields

paper please is worse because theres deadass a handbook with 10+ regulations to take note of

gray apex
violet void
manic rune
#

a joker which has BALATRO installed

#

beat balatro in there for xmult

#

balatro squared

sturdy compass
#

Don’t you dare make a fractal 😭

gray apex
manic rune
#

❤️

limpid halo
#

Toy Freddy from UCN 😭

sturdy compass
#

So this is what happens at 5 AM in dev chat huh Fear

limpid halo
#

Oh you could make a security guard joker huh fuck

gray apex
#

Security guard joker, but you need to move it to the left and right ends of the Joker area to close the doors

manic rune
#

nah but imagine playing fnaf in balatro 😭

limpid halo
sturdy compass
limpid halo
sturdy compass
#

L

gray apex
#

It adds a desk fan Joker that does nothing except allow repositioning

sturdy compass
#

Lmao perfect

sturdy compass
limpid halo
manic rune
#

im calling forth power outage on your ass

sturdy compass
#

Lowkey please I need sleep

manic rune
#

2 days ago i stayed up late until 5 am when i had school at 6 lol

limpid halo
#

then sleep

manic rune
#

play balatro instead of sleeping

#

let the jimbo consume you

#

🗣️

sturdy compass
#

Oh god the angel and devil on my shoulders rn

sturdy compass
#

$6 shimp special

limpid halo
#

it's as shrimple as that

violet void
sturdy compass
#

it’s not normal

manic rune
#

it is not normal

#

but i have the exact same routine even as a high school student lol

limpid halo
sturdy compass
limpid halo
sturdy compass
#

Destiny

manic rune
#

i see

limpid halo
#

or a coin, i suppose

violet void
sturdy compass
#

My horrendous sleep schedule over the weekend (and also the fact I got up at 4 cuz there were unsolved bug reports that were tormenting my brain)

manic rune
#

quick question

#

does "dt" here mean deltatime or smt?

sturdy compass
#

Precisely

manic rune
#

mhm, thanks

plush cove
limpid halo
#

better commit messages than i ever write

manic rune
#

istg among the normal gifs i have an absolutely diabolical one which i accidentally sent before 😭

sturdy compass
#

Fr

violet void
plush cove
manic rune
#

wish theres a way to reorder my favorite gifs bruv

#

(im not refavoriting everything)

#

actually, i shouldve spoilered that

limpid halo
#

i wish favorite gifs were not a underbaked afterthoughts

manic rune
#

the gifs u send r the literal manifestation of your thoughts

dire palm
#

Any idea in which context I should put my code so that the rank change is taken into account in the scoring?

manic rune
sturdy compass
manic rune
#

watch a cryptid gameplay vid

sturdy compass
manic rune
#

damn

violet void
#

study for college

-# (youre bound to get bored)

sturdy compass
plush cove
limpid halo
manic rune
#

accidentally peeled off those black stuff which form on top of your wounds

#

💀

#

damn its bleeding

limpid halo
#

the crust?

#

why

manic rune
#

lowkey itchy

#

so i scratched around the zone

sturdy compass
plush cove
manic rune
#

😭 thats wild

plush cove
#

new Mistigris joker dropped

limpid halo
manic rune
#

i think they should destroy themselves after a certain number of round though

sturdy compass
#

Calling a scab “bruise crust” is foul

limpid halo
#

seal has a 1 in 4 chance to fall off

manic rune
#

since those crusts r gone after a while I THINK

violet void
manic rune
#

because i never left them intact for that long 😭

plush cove
manic rune
#

krispy crust

sturdy compass
#

Blegh

tall heron
#

Could someone please tell me where I can find .lua files on Steam Mac version? Cuz I don't see it inside Balatro.exe, even through search

plush cove
#

i am so sorry

sturdy compass
manic rune
#

(he was, indeed, not sorry)

plush cove
#

(hands you this)

limpid halo
#

i kinda wanna take a try at a fnaf joker now ffs

sturdy compass
#

Why is there an eternal sticker on the card sprite 😭

manic rune
plush cove
#

it gives you obelisks <3

sturdy compass
#

Ah

manic rune
#

nah but slap Foil on top of that

#

for maximum noobiness

random sleet
#

this chat isnt tech support rn oops

manic rune
#

GRAVEYARD???

#

YUGIOH REFERENCE????

limpid halo
plush cove
random sleet
#

me when i steal peoples abandoned projects like a vulture

plush cove
manic rune
#

third time im asking this, but can you change the text in loc_txt of a joker?

#

through code

limpid halo
#

oh my gods

#

that's scary

plush cove
#

because of ✨ flexibility ✨

random sleet
#

you have to do something like this

manic rune
limpid halo
#

i will succumb to the will of localization when i wanna release my mod but for now we simply look the other way

sturdy compass
violet void
#

altho I have 0 intention to add more localizations

random sleet
plush cove
#

I strongly doubt Mistigris or any other mod I ever make will get popular enough to warrant localization, but it's always nice to keep the door open

limpid halo
#

also doesn't it let other people localize for you if they really want

violet void
#

I suppose so

manic rune
#

do the chinese even play balatro

sturdy compass
#

I’d love for Maximus to get localization but I’m not a polyglot 😭

limpid halo
#

just only add the languages you know and someone speaking a different language with enough skill points invested will send a random PR

violet void
#

I dont even know the balatro terms in my language so english only it is

limpid halo
plush cove
sturdy compass
#

I mean true but accessibility do be important Emoti_Shrug

limpid halo
#

like i dont think even any installation guide for lovely and smod is available in non-english?

violet void
manic rune
#

can i ask what this does?

limpid halo
random sleet
sturdy compass
manic rune
random sleet
#

idk maybe

violet void
plush cove
#

y'all want bananas?

limpid halo
#

the bananerrrrrr

sturdy compass
manic rune
sturdy compass
#

LMAO

random sleet
#

make showman work please

manic rune
#

i had the same thought 😭

random sleet
#

hes slacking off

manic rune
#

fr

plush cove
limpid halo
#

wait what happens if you have two of them or brainstorm or smth

#

does it spawn 2 bananas

manic rune
plush cove
manic rune
#

you can never have too many bananas

limpid halo
manic rune
#

🐒

#

oh nevermind

#

i think i know how hooks work now

sturdy compass
#

It’s a weird concept to get a grasp on but it makes sense once you do

violet void
#

it took me a while to get it

sturdy compass
#

Same

manic rune
#

so basically, "igo" is the function im hooking to, and im supposed to run it again in the function below?

limpid halo
#

once you get it you're hooked though

violet void
#

I understood lovely patches faster than hooks

manic rune
#

then i can add the stuff i want below

left sonnet
#

Hey folks, I'm getting an error with Cryptid, specifically the Calculate Jokers function. My game's crashing, saying that callback is a nil value, which it is being set to. What is the reason for it being set as nil? Thanks. I'd send the function code but it's too long for Discord, it's in calculate.lua

limpid halo
#

wait hooks are just overriding functions? oh ezzzzz

manic rune
sturdy compass
#

Think about it like this. A hook is essentially a non-destructive redefinition of an existing function

violet void
plush cove
limpid halo
#

well you're overriding it and then calling the old one inside your new one

sturdy compass
royal ridge
manic rune
#

enh

#

eh

limpid halo
#

"The joke's on you"

sturdy compass
manic rune
royal ridge
# manic rune enh

it's enh because i don't think there's a single person alive who can spell enhenchancmant

manic rune
#

ngl lcorp mod was the sole reason i even decided to get into this whole modding stuff

#

such a cool mod, gotta credit it out of nowhere 🗣️

frosty dock
plush cove
# plush cove

i actually did make a useful SMODS.Joker hook that's used to

  1. impart the Cryptid placeholder art on jokers instead of Jimbo
    and
  2. allow Jokers to be disabled if certain mods are missing
violet void
sturdy compass
#

I credit my designer/artist for making a doc of ideas, causing me to think “hey I can do that!”

frosty dock
#

because it damn well isn't a function, it's just callable

manic rune
#

back when i was a child i legit didnt know how to spell "resource pack", so i went on youtube and quite literally went haybale on my keyboard

manic rune
#

"resurcece pack"

left sonnet
#

Had to save this one as a file manually, usually Discord does it automatically, weird

manic rune
#

correct me if im wrong but isnt cryptid an old-calc mod?

sturdy compass
#

Yes

frosty dock
manic rune
#

oh i see

plush cove
# plush cove funny you mention that

i'll just update it so that instead of SMODS.Joker it uses SMODS.Joker.register

code will still remain the same, and I think I can also benefit from the definition files in that one pull request this way

frosty dock
#

interesting how that doesn't just fall apart completely

plush cove
#

if I had just done
SMODS.Joker { (stuff) }
then it might have fallen apart

random sleet
#

i think what aure's thinking of would be much more obvious and catastrophic

frosty dock
#

nah that's syntactic sugar for the same thing

#

somewhat miraculously, steamodded just never has to refer to SMODS.Joker like a table directly

plush cove
limpid halo
#

good job everyone

frosty dock
#

like if you were to do the same for enhancements, it would break here

runic pecan
#

How do I play a sound at the same timing of the returned message?

wintry solar
#

sound = 'key' in your return

violet void
#

with the prefix I think

runic pecan
wintry solar
#

aure do you have any insight on #467?

violet void
runic pecan
wintry solar
#

yeah

#

pitch = X, volume = X

plush cove
# plush cove

@frosty dock okay so I ended up having to go back to SMODS.Joker because using SMODS.Joker.register means that Jimbo appears instead of the placeholder atlases I'm using

#

so unless there's another method I have to go back to the old hacky ways

dire palm
frosty dock
#

because you're not modifying the arguments to SMODS.Joker anymore, that doesn't happen automatically

plush cove
violet void
# dire palm And how do I separate the rank change and the visual change exactly?

I made it like this for my own Joker


play_sound('cs_flip')

for i = 1, #toflip do
    local hooked_card = toflip[i]
    hooked_card.base.id = target_rank
    hooked_card.base.nominal = target_rank

    G.E_MANAGER:add_event(Event({trigger = 'after',delay = 0.1,func = function()
        local suit_prefix = string.sub(hooked_card.base.suit, 1, 1)..'_'
        hooked_card:set_base(G.P_CARDS[suit_prefix..target_rank])
    return true end }))
end

delay(0.8)
cs_utils.unflip_cards(toflip, 'before', 0.1)```
manic rune
#

whats G.P_CENTERS?

limpid halo
#

Pokemon Centres
(i think the card type like lucky?)

sturdy compass
#

It’s basically a master table of all card definitions

manic rune
#

thats a nice joke but i dont think thats the case lol

manic rune
#

so basically pokedex

limpid halo
#

oops mb

#

aye!

sturdy compass
#

Lmfao

manic rune
#

im seeing if i can use that to make a universal API for animated sprites rn

plush cove
manic rune
#

oh, isnt that info_queue?

random sleet
#

info_queue[#info_queue+1] = G.P_CENTERS['j_gros_michel']

scarlet spire
#

putting this on all of my jokers

past forge
#

Anyone knows why both of this patches are not taking effect, like the effect changes but everytime, even if i dont have the joker

violet void
past forge
plush cove
manic rune
random sleet
#

oh no ive been identified

red osprey
limpid halo
#

ahh thats awesome

atomic edge
#

are there any tutorials on how to make a balatro shader?

scarlet spire
#

is something up with my screen or is that mult orange

manic rune
#

for instance, if its a modded joker, you would use j_(mod's prefix)_(joker's key)

manic rune
past forge
manic rune
#

thetes some tutorial down there

past forge
#

thats why im asking 😭

wintry solar
#

don't look at that readme 🤣

plush cove
wintry solar
#

it's like 8 months old

limpid halo
#

i love "Notes in case you can't read"

plush cove
manic rune
manic rune
wintry solar
#

that's true

plush cove
manic rune
#

i see

violet void
manic rune
#

a bit off but i dont mind

runic pecan
manic rune
wintry solar
#

that 10s being two colours is cursed

limpid halo
manic rune
#

oh wait actually

#

that sprite kinda reminds me of holocure

#

i think theres an attachment which does exactly just that, though my memory might serve me wrong on this one

runic pecan
manic rune
runic pecan
manic rune
#

mhm, always used that to enhance my other stamps

#

honestly your mod really reminded me of holocure as a whole lol

plush cove
#

i just realized

I have a Joker that guarantees all probabilities for the rest of the round

what if I made a Joker that ensures no probabilities happen for the rest of the round trollface

runic pecan
manic rune
#

downside: wheel of fucking misfortune

plush cove
manic rune
#

true

violet void
plush cove
manic rune
#

oof

manic rune
plush cove
limpid halo
#

i mean glass cards would go hard with it but

#

"Nothing ever happens"

past forge
#

how do i use the next() instead of SMODS.find_card("j_toyr_four_leaf_clover") ?

plush cove
past forge
#

thanks

manic rune
#

should i be concerned about this?

plain wyvern
#

nah

frosty dock
#

nah

random sleet
#

nah

jovial harness
#

Is there a way to show a custom description with the info queue? Not referencing another card

wintry solar
#

hooking update 🫣

frosty dock
#

wdym technically

#

you just make a loc entry to Other type descriptions and reference it in info_queue with set='Other' and the key you used

violet void
dire palm
#

Okay.

wintry solar
random sleet
#

this a smods feature?

#

based if so

wintry solar
#

mhmm

random sleet
#

real if based

limpid halo
#

hell yeah

wintry solar
#

not to adapt the voucher stuff to be expandable

#

then I'll do reroll stuff

random sleet
#

pack card quantity superplead

#

use and select both being available on the same card superplead

wintry solar
#

pack card quantity is a really easy patch

random sleet
#

yeah just like a unified way would be dope

wintry solar
#

perhaps, yeah

random sleet
#

but idk maybe something like that would want to be more featureful than just a number

#

runs into the probabilities' issues and that's a constant headache

manic rune
#

stuff["currentdt"] SHOULD increase every frame, right?

past forge
manic rune
#

im confused

wintry solar
#

you reset it to 0 every frame

manic rune
#

.

#

oh im fucking dumb

#

yeah you are right

#

😭

jovial harness
manic rune
#

💀

random sleet
manic rune
#

ok so it works now

#

(i dont have any spritesheet ready for this)

limpid halo
#

jezus

wintry solar
#

does it use AnimatedSprite?

jovial harness
manic rune
# wintry solar does it use `AnimatedSprite`?

i basically did the same stuff as what jimball in cryptid did, except it now checks for a table with different variables to account for multiple objects, which, i think, go beyond jokers

#

i have no clue how laggy it will be if a lot of objects r running this ngl

plush cove
wintry solar
#

what is this code doing

plush cove
wintry solar
#

probably not

plush cove
#

to replace one of the items

plush cove
manic rune
wintry solar
#

can it use a frames setting instead of using the entire sheet?

manic rune
crisp coral
manic rune
#

damn.

jovial harness
#

hell yeah, actually got myself a workin custom info box too

#

Time to actually write up some Actual text now and this joker will be 100% complete

manic rune
#

well off to the garbage bin we go, at least i know a bit more about hooking from this

wintry solar
#

this looks much better than how I understand aura to work

crisp coral
#

well aura is also only designed for vanilla jonklers

wintry solar
#

I'd still prefer it to use AnimatedSprite though

manic rune
#

whats AnimatedSprite tho

wintry solar
#

a vanilla class

manic rune
wintry solar
#

its how blinds are animated

manic rune
#

ohh, i will look into that later then

crisp coral
#

i feel like itd screw up some sprite drawing stuff

manic rune
random sleet
#

the problem is AnimatedSprite is like slightly different from Sprite in about a hundred ways that makes it not a drop-in replacement

#

source: i tried this before too

wintry solar
#

yeah I've never been bothered to look into it properly

violet void
jovial harness
random sleet
#

yeah uhhhh im like 90% sure that old code straight up doesnt work now

limpid halo
random sleet
#

and wasn't that good before either ngl

past forge
#

is there a way to increase the wave effect on the name of a joker?

random sleet
#

yes

past forge
past forge
random sleet
#

idk

neat plover
#

does anyone know if it's possible to access the hud graphics or not?

past forge
#

i know its possible, since a lot of people use the ui methods

#

but ive never used it

past forge
#

there is a whole ui_definitions.lua in the source code

#

i guess you could start there

neat plover
#

thanks

neat plover
#

this means that they are drawn in game instead of being textures

past forge
#

mostly

#

the textures are in the assets folder

neat plover
#

i swear i can't find it

past forge
#

resources>textures

neat plover
#

i mean the file with the textures not the folder

wintry solar
#

what sort of texures are you looking for?

neat plover
#

the hud like the red and blue rectangles and the pause button

past forge
#

those are definitely drawn by code

manic rune
wintry solar
#

yup

neat plover
wintry solar
#

they're just shapes on the canvas

unkempt thicket
#

What's the variable for total payout at the end of a blind?

neat plover
manic rune
#

if you want to change those buttons appearance, then i think you might need a patch

wintry solar
#

you can absolutely chagne them to sprites

neat plover
maiden phoenix
#

or function end_round() 🤔

manic rune
#

how do i tell animatedSprite where to exactly find animatedSprite.lua?

frosty dock
#

nvm

#

you mean your own, not the engine file

#

use SMODS.load_file instead of require

#

require doesn't have the context of your mod

manic rune
#

i see, thanks

runic pecan
#

What should I replace cfg?

manic rune
frosty dock
frosty dock
#

but card.ability

runic pecan
#

This is the easiest way I could think of to tamper with 5 and 15 since those are hardcoded.

#

(Two screenshots from lovely/dump/card.lua)
I'll patch these up as well.

random sleet
#

hee hee hoo hoo

runic pecan
neat plover
#

from the game

random sleet
#

from the game

neat plover
#

??

#

thats crazy

neat plover
random sleet
#

no lol

#

its like old magic the gathering syntax

#

"remove <card> from the game"

neat plover
#

oh ok

random sleet
#

here it's remove 2 random playing cards in your graveyard from the game

#

the graveyard necessitates the distinction of destruction and removal

manic rune
#

im done with the code, i think

random sleet
#

every time someone asks im going to send an increasingly shitty crop of this function

manic rune
manic rune
neat plover
#

thats cool

random sleet
limpid halo
manic rune
#

fr

random sleet
#

its???? literally on github

wintry solar
manic rune
random sleet
#

eremel can you please make ortalab check SMODS.has_no_suit(card) and SMODS.has_no_rank(card) more for its blinds please

wintry solar
#

I have done on the v1 private branch

random sleet
#

please i am tired of my stone and ore cards being actually useless

manic rune
#

stone cards should get more support jokers ngl

#

its actually so useless its sad

limpid halo
#

grinder to grind up stonre cards

wintry solar
#

look I did it this morning 🥳

manic rune
violet void
manic rune
limpid halo
hushed field
#

it's honestly baffling how you apparently are working on things just when I'm looking into them, Eremel

manic rune
#

i require more cat gifs

#

im running out of them...

random sleet
manic rune
#

very nice

unkempt thicket
#

What's the context of payout? after the payout calculations.

hushed field
# wintry solar hmmm?

when I needed the drawn cards on drawn_hand you'd just pushed that, then when I was looking into making some patches for splash, you showed you were working on better splash contexts, and just when I'm looking into no_rank interactions, you're posting about that, haha

wintry solar
#

oh the no_rank stuff is for ortalab blinds

manic rune
wintry solar
random sleet
#

animations are probably the one case where you could get away with it

#

changing the center object ensures all instances would be synchronized

maiden phoenix
wintry solar
#

that's why I don't like it 🤣

limpid halo
#

How hard would it be to construct a jokers sprite from multiple sprites?
(Like have a var change/add a small thing without a completely different atlas entry)
Basically like a legendary joker without the animation

runic pecan
limpid halo
unkempt thicket
manic rune
limpid halo
manic rune
unkempt thicket
manic rune
#

is that

unkempt thicket
#

it uses about 4 layers. (it doesn't use the base layer or soul)

limpid halo
#

aight cool

#

fnaf joker will be real

manic rune
#

🔥

#

arh arh arh arh

wintry solar
royal ridge
#

wait why does that happen exactly?

wintry solar
#

lua table jank

manic rune
#

ok i kinda wanted to replicate the animated jevil joker i saw earlier, but the spritesheet i got is horrendous so ig not

royal ridge
#

surely they would be in an indexed table

#

but idk

minor furnace
#

is there a resource out there somewhere for how to write lovely patches to modify the base game code?

manic rune
limpid halo
#

i just look at the steammodded patches for examples

minor furnace
#

thanks!

violet void
wintry solar
#

no it's the deck I'm using

minor furnace
#

oh ok lovely patches actually seem super straightforward

manic rune
#

mhm

#

its just finding a specific part of a file, then you can choose to add your code inside it before/after/at that part

maiden phoenix
lavish lake
#

Guys what should the "J" joker in my mod do?

manic rune
#

buff Js

glad osprey
foggy carbon
#

does anyone know the mod that will stack copies of the same card in the deck view?

red flower
#

cartomancer

neat plover
#

i needed that thanks

minor furnace
#

I'm just gonna bump this because I'm still not entirely sure where the infinite call is coming from, but commenting out the info_queue[#info_queue+1] = fool_c fixes it , at the cost of not showing the previously used card

#

In theory, if the previously used card is either the Fool or Reverse Fool it shouldn't be adding anything to the queue

lavish lake
manic rune
#

i mean, i have no clue what the joker is supposed to look like and all that, so i cant really suggest anything

#

oh, how about making "J" gives more mult depending on how many "J"s there are in every joker's name combined?

limpid halo
#

localization based buffs my beloved

red flower
gusty sequoia
#

How would I make my joker take away money?

limpid halo
#

add negative money

gusty sequoia
#

Interesting

#

Idk what I expected

minor furnace
red flower
#

yeah, I would probably check for keys instead to avoid those problems

jovial harness
#

Is there a way to give a custom back sprite to a joker?

red flower
#

this is how i do it

gusty sequoia
#

So how do I add money...?

red osprey
#

ease_dollars

lavish lake
#

Can someone give actual good ideas for the joker in my mod "J"?

gusty sequoia
limpid halo
lavish lake
red osprey
#

Would need more, because currently that's worse Smiley Face

limpid halo
#

Worse smiley face?

lavish lake
#

Maybe +10 mult

#

for every jack

red osprey
#

Could be scaling mult

#

"This Joker gains +5 Mult each time you score a Jack"

neat plover
#

not 5

red osprey
#

Most likely, just throwing ideas

unkempt thicket
#

x1.25 chips per jack in hand?

limpid halo
#

Jack of all trades, $3 for each jack held in hand on round end?

lavish lake
neat plover
#

this joker gains +6 mult for every unscored jack

red osprey
#

If you are using SMODS, you can now return Xchips (or x_chips)

#

It was recently added

limpid halo
#

i misread, my bad

lavish lake
limpid halo
#

x_chips doesn't exist iirc

red osprey
#

It does since less than a week ago or so

unkempt thicket
limpid halo
#

Oh, Awesome

red osprey
stray wing
#

How can I have a Joker copy the ability of any other jokers present from a specific list? So if I have a list of Jokers (Joker A, Joker B, Joker C), Joker X will copy the abilities of them like blueprint if they are present

red osprey
#

Look at how Blueprint/Brainstorm does it, and instead of checking for the Joker to the left/first Joker, check all Jokers and do it for each one taht falls within that list

lavish lake
#

Guys how do i check unscored cards again?

red osprey
#

If you don't know how to access existing source code, go into your Balatro Steam folder (Steam/steamapss/common/Balatro) and unzip Balatro.exe (you might need to copy it and rename it to Balatro.zip)

red osprey
neat plover
#

how do i check if a scored card is a stone card

limpid halo
wintry solar
#

Xchips isn't a valid key, they're xchips,x_chips or Xchip_mod

red osprey
#

You can enable it with SMODS.optional_features.cardareas.unscored
And then you can check it with context.area == 'unscored'

stray wing
wintry solar
#

I believe it's to stop infinite loops

red osprey
#

Seems like it yeah

neat plover
red osprey
#

It increment context.blueprint and stops when it exceeds the number of Jokers

#

@neat plover

neat plover
#

thanks very much

red osprey
#

card.config.center == G.P_CENTERS.m_stone

lavish lake
#

What do I insert?

red osprey
#

Just like regular scoring

#

So main_scoring

lavish lake
#

Wait isn't it supposed to be context.cardarea == "unscored" and not context.area?

red osprey
#

Yes, I don't have the wiki open

#

And I'm not at my PC right now, so it's not exact

solid surge
#

hey again
how would i change the info of a locked joker (smth like a legendary which has the '?????' until unlocked instead of its ability info)

tidal edge
#

help im having a stroke

#

how to calculate this i've lost all my knowledge of this game like overnight id k what happen

minor furnace
#

Why is this line spawinging in a Temperance card instead of a Magician?
local card = create_card('Tarot_Planet', G.consumeables, nil, nil, nil, nil, c_magician, 'fool')

wintry solar
#

key needs to be a string

minor furnace
#

ah

#

sure enough

gusty sequoia
#

What's the thing I write in text for it to be money colour?

minor furnace
gusty sequoia
stray wing
# red osprey Seems like it yeah

thanks, I think I'm progressing in the right direction, but what would I do if there is more than one joker to copy? I think I understand what blueprint is doing here but do I need to somehow trigger the copying joker twice? Concatenate the effects of two copied jokers?

cursive glade
#

does SMODS.DeckSkin have a way to skin the standard background of playing cards as well as the pip's & faces?
I want to modify the standard faces in the vanilla Enhancers.png

unkempt thicket
#

How do I add text to the payout? just the text though.

cursive glade
unkempt thicket
#

I meant to this screen

cursive glade
#

ah, end_of_round screen. I'm not sure on that one

#

I'd like to know as well >.>

runic pecan
#

Would putting a for k,v in pairs(G.playing_cards)do in calculate without an if cause any problem?

wintry solar
#

what were the reroll things people wanted bundled in to smods?

runic pecan
hushed field
#

maybe make it so it always gives me the joker I need?

neat plover
#

how to test a joker in game after modding it in

#

?

violet void
#

spawn it with debugplus

neat plover
#

is this a mod?

cursive glade
frosty dock
neat plover
frosty dock
#

just hover the joker in the collection and press 3

#

(it tells you this if you hold tab in-game)

hardy viper
#

it takes like 3 seconds yea

minor furnace
#

How would I generate something like this, but for the specific tarot card that I want?
local fool_c = G.GAME.last_tarot_planet and G.P_CENTERS[G.GAME.last_tarot_planet] or nil

spring lantern
#

leaving some space for character art from the jokers in the mod

cursive glade
sturdy compass
#

Does anyone know if smods has a built-in bonus mult system yet? I remember there being chatter about it but no clue if any work was done on it

red osprey
minor furnace
stray wing
neat plover
#

i can't seem to make this work but i think it's because i'm dense

stray wing
#

In G.jokers.cards[i], how can I check what a given card is? I tried G.jokers.cards[i].key but that is not correct

red osprey
neat plover
#

?

frosty dock
stray wing
red osprey
#

You need to check context.scoring_hand[i].config.center == G.P_CENTERS.m_stone

#

Not is_suit

neat plover
#

ok

#

thanks so much i modded my first joker

sturdy compass
#

Would anyone happen to know why my PokerHandPart is causing this crash on startup with the JokerDisplay mod?

#

Actually wait nvm I think I see the potential issue

violet void
cursive glade
#

yeah 😄

violet void
#

actually I can just add smods.create_card in the start run function

violet void
sturdy compass
#

Is there a G.STATE for being in a run?

violet void
#

G.STAGE == G.STAGES.RUN

sturdy compass
#

sick

violet void
#

oh but did you sleep

sturdy compass
#

I think the problem is I have a check for the hand part that checks for the highlight limit to be >= 6 so shortcut and four finger don't activate the hand type when they're not supposed to lol

sturdy compass
violet void
#

3 hours is better than 0 I guess

sturdy compass
#

For sure, I'd be miserable rn without it

hushed field
#

Ever since I have a Baron, I just hold a bunch of kings and sleep for like 2 hours, but it counts for like 8

violet void
sturdy compass
#

Apparently not with JokerDisplay

#

So I'm accommodating for it

violet void
#

or you could check for G.jokers

sturdy compass
#

I got it working with the method I thought of so we ball

neat plover
#

gives you 1.4xmult for 3 hands if you have a stone card in your hand

obtuse silo
#

bumping this ._.

neat plover
#

where is the lua to edit a joker's detail in the collection or shop?

runic pecan
#

How do I word Earn $1 per card less than 5 in played hand. better?
It'd be equivalent to Earn $5 each played hand but -$1 per played card.

dim lynx
#

I think second one is more clear

minor furnace
#

working in lua is only strengthening my preference for strongly typed languages

sturdy compass
#

I hear that lmao

snow axle
#

Progress post B)

minor furnace
neat plover
minor furnace
#

are you trying to edit an existing joker, or a custom one?

neat plover
minor furnace
#

what does your SMODS.Joker currently look like for it?

neat plover
#

you mean the lua file in the jokers folder ?

#

here you go

minor furnace
#

ah ok you need a loc_txt field

#

something like this

    key = 'Rekoj',
    loc_txt = {
        name = 'Rekoj',
        text = {
            '{X:mult,C:white}#1#{} Mult'
        }
    },
    atlas = "Rekoj",
    pos = {x = 0, y = 0},
    config = {extra = {mult = -4}},
    loc_vars = function(self, info_queue, center)
        return {vars = {center.ability.extra.mult}}
    end,
    calculate = function(self,card,context)
        if context.joker_main then
            return {
                card = card,
                mult_mod = card.ability.extra.mult,
                message = "" .. card.ability.extra.mult,
                colour = G.C.Mult
            }
        end
    end
}```
wicked spire
neat plover
#

wasn't really where you told me, but searching in the files i found the localization files

minor furnace
neat plover
#

and sure enough, i found where to put the desc

unkempt thicket
#

How do you change the cost of a joker?

minor furnace
spring lantern
#

okay so like.... why

#

what did i do wrong

red osprey
#

What is your mod prefix, what is the joker's key?

#

Actually found it, it's Joker, not Jokers

spring lantern
#

LOL

red osprey
#

Also is it inside descriptions?

spring lantern
#

it-s not inside descriptions

#

\i think i-m dumb

violet void
spring lantern
#

wait no it is

red osprey
#
return {
    descriptions = {
        Joker = {
            j_reg_soldier_spades = {
                name = 'Soldier of Spades',
                text = {
                    'Each scored card with',
                    '{C:spades}Spade{} suit reduces the blind',
                    '{C:attention}2%{} of its starting value'
                }
            }
        }
    }
}
#

Make sure it's Joker not Joker__s__

spring lantern
#

Okay it works thx

grim remnant
#

how can i make a joker run a calculation anytime a queen is scored? :o

wicked spire
spring lantern
#

what da hell...

grim remnant
#

i'm maybe not the best authority to ask, but did you remember to specify it in loc_vars?

#

(unless it's always meant to be a high card, then you should probably just have it say "High Card" in the text itself)

spring lantern
#

i'm new to this whole localization stuff

grim remnant
#

it's a little annoying for sure; the main thing is that what you do to one (e.g. the actual variables), you do to the other (e.g. the loc_vars section). like this:

    loc_vars = function(self, info_queue, center)
        return { vars = { center.ability.extra.scaler , center.ability.extra.roundsElapsed , center.ability.extra.Echips } }
    end,```
spring lantern
#

that much i understand but the problem is localizing the current poker hand

hushed briar
#

having the strangest issue where the first variable green_seal_draws is getting passed to the game object but the second variable ante_stones_scored just isnt getting passed?

Game.init_game_object = function(self)
    old_ret = old_game_init(self)

    old_ret.green_seal_draws = 0
    old_ret.atne_stones_scored = 0
    
    return old_ret
end```
spring lantern
#

i think so at least

grim remnant
#

what's your card's description code look like, perchance? :o

grim remnant
#

okay, at least that checks out. i'm admittedly unsure of how to handle a variable with a string, but the issue at least doesn't seem to be, like, the description itself isn't calling the variables right. can you tell i have had that issue before ;P

hushed briar
iron socket
#

Hi, I'm looking to learn how to add new jokers, tarots, planets, etc. but I'm not sure where to start. I have the Steamodded wiki page, but not sure how to use anything there. I've done texture, malverk, and challenge mods before, just not adding completely new content.

I'd like to start out by creating a new tarot that decreases the rank of two cards (opposite of strength). Can anyone give me some pointers?

grim remnant
#

woah... cat jumpscare

spring lantern
#

i removed the localize func and suddenly table jumpscare

#

so the problem isn't the loc it's the variable being assigned wrong

iron socket
grim remnant
spring lantern
#

okay so i gotta get the key rather than the whole table

fickle quail
#

How would I check to see if a card is in the "new run" menu?

marsh basalt
grim remnant
#

oh ModdedVanilla.lua has come in clutch a lot for me fsdgljk

iron socket
grim remnant
iron socket
#

I'll take a look at that and come back if I have any questions, thanks!

marsh basalt
#

...also hello, does context.post_trigger on joker calcuations do anything?

#

It is listed in the calculation doc as "triggering when a joker triggers" but it is always nil from my testing

hardy viper
#

probably an optional feature

frosty dock
#

yeah it's an optional feature

#

(still need to get that into the docs)

marsh basalt
#

Ah, I assume I ask the SMODS API to enable it or something?

#

I can't find it in the docs ^^"

grim remnant
#

question! how do i make it so a joker activates whenever a queen is scored? docs are unclear how we're meant to make an effect proc every time a card of a given rank is scored. :o

frosty dock
marsh basalt
#

Thank you ^^

frosty dock
#

you just add this line in your main file

#

I'll get to docs for that soon

hardy viper
marsh basalt
#

You missed the "then" in the if check

wintry solar
#

Also just return xchips = …

spring lantern
#

this might need a nerf...

#

maybe just X0.5 per upgrade is fine

#

im on ante 6 for reference

hardy viper
#

for sure

surreal yacht
hardy viper
#

scaling 1x mult per round is far too much

spring lantern
#

still tho im thinking about the scaling of stuff like yorick or canio

#

they're way slower unless you have a very specific setup for them

#

this one's more flexible and works with almost any setup so i think it should scale less for each upgrade

hardy viper
#

actually nvm

#

it scales like slightly faster than yorick

surreal yacht
#

id argue with canio on scaling

spring lantern
#

i mean if you can get a consistent stream of hangmans then sure

surreal yacht
#

but yorick sure i guess if you dont get merry andy and ur on blue stake+

spring lantern
#

i guess it ain't that bad

hardy viper
#

not sure how yorick would be less flexible

#

it's just discarding

spring lantern
#

i meant like it's slower unless you have a billion discards

#

this one's almost once per round unless you hit a straight flush or smth

surreal yacht
#

not a good comparison

#

anyways the legendary is strong af but i dont think it should be nerfed

spring lantern
#

guess he can stay strong until testing tells me whether or not it's too much

grim remnant
#

this is a very silly question; how do i check for queens held in hand, under the context of them either being steel, or owning Shoot The Moon? i think it'd be really fun if those queens also procced the joker i'm making

fickle quail
#

How would I check to see if a card (e.g. deck) is in the "new run" menu?

neat plover
#

does anyone know how to check when a lucky card is triggered or fails

grim remnant
#

two questions:

  1. how can i take the amount of clubs cards in the current deck as a variable?
  2. how can i have the text color for clubs in a card text?
red flower
#

{C:clubs} for the color

neat plover
red flower
neat plover
#

so if i want to test if a lucky card fails?

red flower
#

you need to check if it's a lucky card and if not card.lucky_trigger

neat plover
#

thanks!

red flower
#

keep in mind that it's reset after card scoring

spring lantern
#

how can i apply a sticker to a joker generated by another joker?

#

i know cryptid does it with the banana perishable joker guy