#💻・modding-dev

1 messages · Page 564 of 1

slim ferry
#

what about the vanillaremade post_trigger example....

robust marsh
#

i'm not normal

sturdy compass
#

-# Play Maximus

cursive gazelle
#

Play fanfare when i fix it and make it balanced

wide chasm
#

yep it works

#

ty

cursive gazelle
#

Shoutout N

red flower
sturdy compass
#

slmao

red flower
#

ok astra is blocked

sturdy compass
slim ferry
red flower
#

yeah that's a better example lol

cursive gazelle
sturdy compass
#

Forgive me for thinking "sluhmao" sounds funny 😭

frigid cargo
#

Poor astra

red flower
sturdy compass
#

so

#

So laughing my ass off

frigid cargo
#

That dont make sense tho

#

Gahdayum i cant type

red flower
#

im like, so laughing my ass off rn

jolly shadow
#

context.post_trigger, check "other_ret" for values of "mult" or "mult_mod" and if it exists (and is greater than 0), increment a stored value

frigid cargo
frosty rampart
#

don't forget to enable the post_trigger optional feature

jolly shadow
#

something like this

cursive gazelle
#

Goodnight everyone

warped radish
#

good night! sleep well!!

sturdy compass
#

cya

cursive gazelle
frosty rampart
#

goodnight s

jolly shadow
warped radish
#

notedd!

robust marsh
cursive gazelle
cursive gazelle
#

Swap card areas ?

robust marsh
# cursive gazelle What does the swap do btw

aa i'll have to explain what the deck does for that, so basically when you use the active item (card above the long use button) the next used consumable won't be triggered, instead it will be turned into a locust with its own unique effect that relates to the consumable (each consumable has its own locust). So when you press swap you will see all of your locusts arranged which makes things a lot less cluttery and prevents weird interactions between jokers and locusts (i used to have both in the same area before)

#

it's just a visual thing

#

it has no impact on the gameplay

robust marsh
#

yup! I'll record it

warped radish
warped radish
#

aa tyty!!

sturdy compass
#

I'd keep VanillaRemade open on your end, it is a boon for beginners like yourself

cursive gazelle
slim ferry
#

vanillaremade is a boon for everyone

#

tbh

rotund sable
#

VanillaRemade my beloved

ocean sinew
#

If there's a joker that adds a random joker at end of shop will context.post_trigger catch it as the joker triggering? Even If the joker doesn't return anything in the calculate function

cursive gazelle
#

The music

#

Is so cool

robust marsh
#

it's Excelsior OST from the binding of isaac

#

the music is mostly just there because I personally use it, i can't rly use it in the mod but god damn it would fit so well if i could

cursive gazelle
#

I love the idea and btw

#

You can attach a button to the card

#

Instead of using the massive use button

robust marsh
cursive gazelle
#

Ah i see

robust marsh
#

well i could but it would be all stretchy and weird

#

I'm glad you like the idea c:

cursive gazelle
#

I really do like the idea and the art

robust marsh
#

it is really beautiful

#

this project wouldnt even be half of what it currently is without Ruby's help

warped radish
#

i went to go test my mod, put it in my mods foulder but its not showing up when i open the game?

clear ocean
#

any way to make the duff sticker incompatable with the rental sticker

robust marsh
warped radish
#

yea

robust marsh
#

it should show up unless you didn't properly specify the main file isaac_shrug

warped radish
rotund sable
#

Show the JSON

warped radish
rotund sable
#

I think

slim ferry
#

yeah invalid version

warped radish
#

o

slim ferry
#

should be 0.0.1~beta or smth

warped radish
#

ooooh

#

ty!

rotund sable
#

Is prefix comment a thing?

slim ferry
#

i think so

clear ocean
slim ferry
#

cryptid does it on dev versions

clear ocean
#

i tried both but not sure if i did it right

frosty rampart
frosty rampart
# rotund sable Is prefix comment a thing?

i think having extra fields in the json that aren't read just doesn't do anything, so it can be used as a comment. which is helpful because json doesn't actually have syntax for real comments

warped radish
rotund sable
#

There are YouTube tutorials,?!?

clear ocean
#

there are some

warped radish
#

not good ones, thats for sure. dude give the bare minumum of info and called it a day sigh

slim ferry
#

yeah but theyre all very old and sucky because yk. cant update a yt vid

clear ocean
#

yeah thats kinda the problem with a lot of them

#

and yeah the main problem is that they can get outdated stat

#

not a fault of the youtuber more of the fact youtube doesn't offer some sort of service of updating your videos

#

that's why often you see an addendum in either a new video or a pinned comment

slim ferry
#

i mean youtube isnt the best place to host coding tutorials

#

tbh

clear ocean
#

yeah

sturdy compass
#

very true

rotund sable
#

Another competing platform just for coding tutorials 🔥

clear ocean
#

has someone have done this before where they made a sticker that isn't compatible with one of the vanilla stickers

wide chasm
#

yo im tryna change my jokers description mid game and what the vanillaremade wiki told me to do didnt really work

clear ocean
#

i know yahimod changes description for bee and horse after spawning and triggering obviously not the best way to get code but its worth a try

wide chasm
#

aight imma look into that

#

yahiamice goated so i trust in his coding

slim ferry
slim ferry
#

you actually need a localization entry with that key too

wide chasm
#

yes yes

clear ocean
#

that fucking horse that i hate

wide chasm
#

i have a new entry with the modjoker_alt

warped radish
#

i cant tell what i did wrong?

clear ocean
#

looks like that is what yahimod does or at least for horse it looks like it has another joker called horse bait

#

this is probably so for stuff like the win tarot card or the horse it can just spawn the regular horse

rotund sable
warped radish
#

OOOH

#

omg i feel so stupid

slim ferry
#

also doing <thing> = nil does nothing

#

you can just leave it out

rotund sable
#

We've all been there for the comma's

warped radish
slim ferry
#

also the variables in your calculate dont match the ones in your config but im gonna assume youre changing that after

warped radish
slim ferry
#

vscode screams at you for it

#

at least it should

rotund sable
#

It's not that bad

slim ferry
#

it does that normally

rotund sable
#

Especially with a code editor with an lsp

warped radish
#

someone did the calculate part of this card for me, i dont really know how it works yet

rotund sable
#

Someone 🥲

rotund sable
wide chasm
#

its fully blank now

rotund sable
jolly shadow
warped radish
#

OOOH, tyty. also sorry for the ping, forgor to turn that off

jolly shadow
wide chasm
#
            vars = {card.ability.extra.mult, card.ability.extra.x_mult, combo},
            key = {card.ability.eternal and "j_nebula_phobos_alt" or nil }
        }
j_nebula_phobos= {
                name = "Phobos",
                text =  {
                    "{C:mult}+40{} Mult if",
                    "played hand contains a",
                    "{C:attention}Four Of A Kind{}",
                    "{s:0.9}Part of the {s:0.9,C:diamonds}Mars{}{s:0.9} set (1/2){}",
                }
            },
            j_nebula_phobos_alt= {
                name = "Phobos",
                text =  {
                    "{C:mult}+40{} Mult if",
                    "played hand contains a",
                    "{C:attention}Four Of A Kind{}",
                    "{s:0.9}Part of the {s:0.9,C:diamonds}Mars{}{s:0.9} set (2/2){}",
                }
            },

i literally copied the key from the wiki and made a new localization with the _alt in front

#

like this SHOULD work

slim ferry
#

If youre changing one number you shouldnt do this

#

Just use a variable returned in loc_vars

wide chasm
#

how would i do that

slim ferry
#

Add next(SMODS.find_card("j_nebula_deimos")) and 2 or 1 to the vars return

warm umbra
#

how do detect if a certain joker is in your jokers

latent perch
mystic river
#

SMODS.find_card("j_modprefix_jokerkey")

#

, true) if you want to find debuffed jokers too

latent perch
#

and don't forget the next() if you're checking in a condition

warm umbra
#

also yay discord back

warm umbra
latent perch
# warm umbra does this return a boolean

next() returns the next item in a table, nil if there is none. Because SMODS.find_card() returns a list of jokers, and {} by itself in a condition is considered true, nil however is considered false, wrapping it innext() makes sure that a condition evaluates correctly

warm umbra
#

this fixed it running in the collection

#

but not in the shop

latent perch
#

one sec

dreamy lodge
#

Why are the playing cards turning blank and the blind activate sound playing at the start of the hand? Its turning into stone at the end but the rest is happening before, I am confusion mr_bones

latent perch
latent perch
#

not 💯% sure that's quite the right thingy but should be fine

#

wait are you also trying to not have it run in the shop?

warm umbra
warm umbra
#

just not have it run when you're not using it

#

otherwise the song i put plays

latent perch
warm umbra
latent perch
warm umbra
#

like used_jokers would return the proper key so it would play wouldnt it

#

actually wait i figured out a workaround

#

set a value when the joker is added to the deck

#

theres definitely a more efficient way to do this but who cares

latent perch
#

showman doesn't affect it

warm umbra
#

no no i meant

#

if the joker appears in the shop again

#

it would return true

latent perch
#

Ooh you right

#

yeah you should probably use added_to_deck or similar

#

should it run during the blind only?

wide chasm
warm umbra
#

this should work

warm umbra
primal robin
#

This screenshots is crazy

latent perch
latent perch
warm umbra
#

how would i stop all sounds a joker is playing

latent perch
#

Oh god

warm umbra
#

yeah uh

#

not sure if its possible actually

latent perch
#

Good luck lmao

primal robin
#

Well

#

You need to prevent events which emits sounds to happen

#

That's probably it

latent perch
#

you'd probably have to take a look at the SOUND_MANAGER and related

#

or better yet

#

preexisting code

red flower
#

why do you do it in update

warm umbra
#

also because it does something when the music track ends

#

thats why it loops

latent perch
warm umbra
#

how would i do select_music_track though

latent perch
#

but could you just set up a timer that has the length of the music you're playing

red flower
warm umbra
#

i just use play_sound

red flower
#

if you're already using a timer it will work the same

dreamy lodge
warm umbra
red flower
#

read the docs

warm umbra
#

not sure how to use select_music_track and priority

latent perch
warm umbra
latent perch
warm umbra
#

a global variable?

latent perch
#

Who knows,,

#

I have done nope all with sound

warm umbra
#

yeah ill just mess around utnil i've broken every single joker

latent perch
#

blueprint perfect

red flower
#

if you return a high number the music will have higher priority

#

that's what the docs say

dreamy lodge
#

Why does Midas mask have nil to true?

latent perch
#

that last param was delay_sprites

latent perch
#

midas mask happens before scoring, the animations of the cards goin up and the slight delay after happens after midas mask is evaluated

#

so if it immediately changes the sprites of the cards it has turned to gold, they would turn to gold before fully finishing the pre-scoring animation

#

so it sets delay_sprites = true (the 3rd param) in the call to set_ability

#

but for after scoring, delaying the sprites appears to achieve the opposite effect, where they don't get updated in time before they are removed from the playing area

#

so that's why you want to call it with delay_sprites = false

warm umbra
#

do i just rename it

red flower
#

yeah the key has to have 'music' in it

latent perch
#

...isn't that erm.. interesting

#

I think SMODS should change it so GameObjects are only considered Jokers if they have 'joker' in their key balatrojoker

wintry solar
#

the joys of bringing a whole load of different people's work together in the initial smods days 🤣

faint leaf
#

is there a way to apply debuffed to a joker .. from a joker ?

#

actually wait i just remembered something let me try it

red flower
faint leaf
#

okay well im kinda doing it but right now when i move around the joker it doesnt update the debuff until i click on another joker

#

ill send the code in a sec

#

its prolly stupid overengineered

feral tree
#

is it possible to affect the entire deck? if i wanna remove a specific edition from all cards in the deck for example

red flower
faint leaf
#

ye yea ofc

red flower
foggy ginkgo
#

It's a cool concept

faint leaf
#

i have no idea

#

its just a little idea i thought of

feral tree
#

damn i had the same idea as well

unkempt thicket
faint leaf
#

okay, i think the joker works pretty fine as is right now even if the calculate thing is a little off

feral tree
#

damn

gusty iron
#

most normal flush ever

feral tree
#

speaking of

#

how do i change the color of the mod plaque?

frosty rampart
gusty iron
#

inside of your manifest.json file

#

"badge_colour": "4A412A",

#

replace the hex code with the color you want

feral tree
#

thank

wooden nexus
#

Hey, how hard is it for me to make it so that you can enable and disable groups of content (including vanilla content) in my mod?

gusty iron
#

updated the description because of a funny edge-case which i decided to leave in

clear ocean
#

wait what about this

#

i could make it where it doesn't count negatives

#

also not sure if that's the right word basically lose a dollar per non-negative joker you have

wooden nexus
#

I mean i guess it's a remover, but more a filter in a sense

#

See, I'm planning to port everything from older versions of Balatro, I wanna have the possibility someone can play with just for example: 0.8.6 content in one run, but then 0.9.0 content in another, or have a mix of 0.8 and 0.9 content,

#

because the chaos option of every version would mean you'd have dozens of the same joker but from different versions

pallid sleet
#

Is there a way to put discarded cards back into the deck?
also to change the playable hand size?

wooden nexus
#

and I think cryptid has some playable hand stuff

pallid sleet
#

mm okay

errant arrow
#

what were the correct keys for chips? wasn't it xchips?

obtuse wraith
gusty iron
obtuse wraith
#

Bunco and Paperback has that kind of hand.

gusty iron
#

it would probably just count as a flush

#

as it just returns true for any :is_suit() check

frosty rampart
#

if spectrum is above a flush (which it probably is) then it'll be prioritized over flush, and at least with paperback's code for spectrum it would count as a spectrum

gaunt folio
#

What am I doing wrong here?

#

ive updated smods to the newest version where it has support

frosty rampart
#

you possibly didn't save your code. the code screenshot references booster_choice_mod, but the error says booster_size_mod
alternatively your code screenshot just isn't relevant to the crash. the "1827" in the crash is the line number

gaunt folio
#

suppose i havent but ill try that again

#

although it happened before iirc

errant arrow
gaunt folio
errant arrow
#

genuinely lost, i've never had this error before, im pretty sure i did everything correctly

red flower
gaunt folio
#

aight

#

aight it works

red flower
errant arrow
#

i put mix instead of min-

red flower
#

also the else will run in every other context

#

you don't want that

errant arrow
#

it's 1-4 on the current joker since its 75/25, if it isnt 1, then run the other calculation
(which i realize now is not what the card says-)

red flower
#

no i mean that it will run in every calculation context so for example when you click on a card

frosty rampart
#

^ the else is on the whole (context.joker_main and random_number_from_min_to_max == 1)

red flower
#

also do you want this to be affected by oops?

errant arrow
#

wdym?

#

oh

#

oops all 6

red flower
#

yeah

errant arrow
#

uh... maybe for this one, i dunno about the stronger versions though since those go X#,X#,^# and ^#,^#,^#

red flower
#

imo if there are other unaffected versions then this one should be unaffected for consistency

#

but if you want it anyway i would recommend looking at cavendish in vanillaremade

#

if not then keep doing what you're doing

errant arrow
#

yeah, im gonna have a way to fuse jokers to make stronger varients

#

starts as Little Siblings, then Middle, then Big siblings. if you have big sibling + another joker/item, then you get an exclusive

#

i'll just leave them as is

#

also im still crashing, same error

errant arrow
#

shouldn't it only run if it's context.joker_main though?

#

that's what i have the calculate as

#

if context.joker_main and random_numberblahblah then
calc 1
else
calc 2

red flower
#

the condition says: if it's joker main and the number is less or equal to 3 then do this, in every other situation do this other thing

#

you don't want to give xmult in every other situation

errant arrow
#

so i need to do "elseif context.joker_main and (longname) == 4 then"?

red flower
#

yeah or just put everything inside a joker_main check

#

i would recommend so anyway because pseudorandom can be manipulated otherwise

errant arrow
#

for doing that, wouldn't it just be
if context.joker_main
return {
if (longname) <= 3 then
calc 1
elseif (longname) == 4 then
calc 2
}

red flower
#

no because you can't have if statements inside a table

errant arrow
#

-# i dont have my flower mod to look over to ;-;

#

what would i do to have it only run with joker_main?

red flower
#
if context.joker_main then
     if condition then
          return {}
     else
          return {}
     end
end
errant arrow
#

ah

frosty rampart
#

i actually recommend doing the pseudorandom thing inside joker_main too, so you aren't making a ton of unnecessary pseudorandom calls in every other context

red flower
#

that's what i said

#

:3

frosty rampart
#

true :3

red flower
#

also if you have pseudorandom out it can be manipulated by the player by just clicking cards

errant arrow
#

so i'd put pseudo into the return tables...?

red flower
#

no 😭

errant arrow
#

-# im slow okay

#

-# ;-;

#

if context.joker_main then
local (psuedo code)
rest of code
?

red flower
#

basically yeah

errant arrow
#

okay, also, just so i don't have to type random_number_from_min_to_max, can that just be replaced with anything?

red flower
#

yes

#

that's just a name i came up to describe it in vremade

errant arrow
#

ah

red flower
#

also vscode should suggest variable names if set up properly so you never have to type them all out yourself

errant arrow
#

well, my school internet sucks and wont let me connect to github at all

#

so i can't get any suggestions 🤷

red flower
#

it doesn't use internet

errant arrow
#

agent doesnt work, the vscode suggestion thing uses agent

#

i can't connect to github to use agent, can't use suggestion

red flower
#

is that the ai thing

#

i dont use that

errant arrow
#

yeah, that also does the vscode suggestion

red flower
#

no it doesn't

#

like yes it does suggestions but not the ones im talking about

errant arrow
#

now im lost, what other suggestions are you talking about then?
-# also the code works now, no crashing :>

red flower
#

not AI ones, normal intellisense stuff

errant arrow
#

are you talking about when you're typing and it tries to autofill?

#

if so, that doesn't work for me

#

the only time that works is when im putting a comment, anything else and it doesn't try to autofill

red flower
#

do you have the lau extension

#

lua

errant arrow
#

yeah, i have it

#

can't code the mod without lua

red flower
#

i mean the vscode extension. it's not mandatory to make lua files

#

but it's what gives you the suggestions

errant arrow
#

can't get it even if i wanted to, school internet sucks. it's only allowing discord

#

-# im complaining about the school internet, but i know that it's my laptop that sucks

red flower
#

well i would get it whenever you get the opportunity

#

this one

errant arrow
#

once im back at my dorm i'll swap my pc's ethernet to my laptop to download it

#

yeah i have that

red flower
#

then its weird you dont get suggestions lol

errant arrow
#

i mean, it works on my pc, which is connected to ethernet
-# and has agent, so i dunno

sonic cedar
#

does anyone know how you can render a sprite in front of the screen

trying to do a screen effect

#

wait i might have figured it out

daring fern
#

sonic cedar
#

almost answered then i read the rest 🥀

warm umbra
#

how do i destroy the joker in the code

fallow breach
#

so i'

#

m giving my mod to my friend to try

#

and he says that all of the sprites are invisible, even though they work completely fine on my end

daring fern
red flower
fallow breach
#

i figure, i just left the 2x sprite folder alone because 1x was working for me

#

does anyone know where i can scale my sprite sheet ?

frosty rampart
#

your best bet is aseprite (that's paid unless you compile it yourself, i recommend libresprite as a free fork of it)

warm umbra
#

how do i check for context.blueprint in an update function

daring fern
warm umbra
frosty rampart
#

update function doesn't get any contexts
what's your actual goal here

warm umbra
#

i forgot to add code to prevent blueprint from activating when it isnt supposed to

#

so i went through the jokers

frosty rampart
#

oh yea, then you don't need to do anything special. like something said, blueprints can't see update functions at all

warm umbra
#

alright

#

ty

icy vortex
#

Hey, I'm mostly just someone who replaces and makes textures, is it possible to replace a specific sound effect only in specific circumstances?
My current example is I want to replace the click sound of Again with Neon Green from Neon White saying Again, but I don't want it to change the rest of the cases where it makes the click sound

mystic river
icy vortex
#

Thank you!

warm umbra
#

im trying to make a joker that adds an additional effect to polychrome cards, but it doesnt activate, am i doing something wrong

mystic river
#

editions are tables, not strings

daring fern
warm umbra
#

oh alright

mystic river
maiden kindle
#

I have realized I posted that in the wrong channel…

mystic river
#

debugplus is great for this kind of thing, because you can easily check stuff like "is card.edition actually what i think it is?"

maiden kindle
mystic river
#

doggos...

maiden kindle
#

These are literally just pngs

#

I somehow learned to change the main menu UI

warm umbra
maiden kindle
warm umbra
sturdy compass
high verge
#

Pixel art is difficult

maiden kindle
sturdy compass
#

I hope you know we're on 872 rn 😭

maiden kindle
#

872?

sturdy compass
#

Yeah the smods version

maiden kindle
#

Oh yeah I don’t update my client

#

I should do that

sturdy compass
#

You're on 406

maiden kindle
#

I wonder how different it is

#

Although the mod still runs perfectly fine on that version since others have tried it

sturdy compass
#

It's far more developer friendly

#

Though most of your stuff should still work in theory

maiden kindle
#

Is it?

maiden kindle
#

Okay I’ll do it rn

sturdy compass
#

If you used a hook for that you should be fine I think

sturdy compass
#

good

maiden kindle
#

Have people actually modified the main.lua before?

sturdy compass
#

wdym by that

maiden kindle
#

Like directly

sturdy compass
#

Like through patches?

spark owl
#

#

Don’t say it

#

Don’t say it Hanaka

maiden kindle
#

The main Lua

daring fern
#

dreamy lodge
#

I just spent like over an hour trying to figure out why a line wasn’t working just to realize it was working the whole time I just accidentally put it in a if statement of a previous effect

sturdy compass
#

somecom on his way to ask the most niche questions about seals known to man

sturdy compass
#

Because if that's what you're talking about then yes, plenty have done that

maiden kindle
#

Must be scary

sturdy compass
#

No not really

maiden kindle
#

I just modify the game via the mod file

#

Not the main files

sturdy compass
#

That's what everyone does

#

😭

maiden kindle
#

As expected

#

Okay but fr I feel tired and a little high rn. That’s kinda it

sturdy compass
#

That explains a lot

maiden kindle
#

I might as well get rest

#

And then continue my monstrosity tomorrow

#

I will be taking my leave wheel_of_fortune

gusty iron
#

Is it bad that i still code using notepad 😭

mystic river
#

bad as in painful for you, i imagine

gusty iron
#

Its not even that bad to work with for me though

spark owl
#

certainly a way to code

gusty iron
#

Ive gotten so used to lua that i dont even need the formatting anymore

gaunt folio
gusty iron
#

I might consider switching if i find it to get tiring

gaunt folio
#

It’s basically the same thing ngl but the colors for stuff helps

gusty iron
#

Its so weird to see just how far my mod has come

#

It used to be just simple retextures

#

Then i figured out how to make custom jokers

#

And its just evolved into a whole fiasco of things

gaunt folio
#

Yeah a lot of my first jokers were basically ripoffs of example jokers

gusty iron
#

I showed my english teacher my mod and he asked if i could make him a joker

#

So i did 😭

gaunt folio
#

Tbh idk if anyone in my school knows Balatro

#

and if they do idk if they’ve gone down the rabbit hole enough like I have

gusty iron
gaunt folio
#

I got some irls who don’t go to my school addicted

#

and some online friends addicted to balala too

gusty iron
#

WE LOVE BALALA

#

Balala joker poker

gaunt folio
#

(:

naive agate
#

Hello latro enjoyers

gusty iron
#

I was actually gifted balatro as a birthday gift by one of my friends

gaunt folio
gusty iron
#

Then their birthday rolled around, so I gifted them the game too 😭

naive agate
gaunt folio
gusty iron
gaunt folio
#

Then I discovered mods like cryptid and it has devolved into this obsession

gusty iron
#

Balatro is just an addicting game in general

#

And i feel like mods add another layer onto it

naive agate
gaunt folio
gusty iron
#

Even if its something as "small" as talisman, you can still do alot more

gaunt folio
#

Ngl I’ve def made a lot

gusty iron
#

I have too

gaunt folio
#

Idk what my favorite is tho per se tho I did like finishing making the “One” from TPOT joker

gusty iron
#

Ive made warioware into a fucking joker 😭

gaunt folio
#

(This)

gusty iron
#

A really stupid joker i wanna add is like

#

A teamwork joker

#

That uses http requests so that if 1 person upgrades it

#

It upgrades for everyone else

gaunt folio
#

That would lowkey be interesting but idk if you could abuse it

#

Using like debugplus or something

gusty iron
#

I would probably have to do anti-cheat checks

#

But it would be cool

gaunt folio
#

Maybe one that checks if debugplus is installed

gusty iron
# gaunt folio

Also whats the upside to this joker? I dont really see one.

-# (ba dum tss)

gaunt folio
#

Mine tries to be relatively balanced but it’s definitely not

I have one that levels up a hand by how many times it’s been played, and one like misprint but XMult ig

gaunt folio
gusty iron
#

Oh fire

#

Ive made a joker that literally adds several new hand types

#

(6 to be exact)

gaunt folio
#

Tbh idk what I would add that would work

gusty iron
#

Because it lets you select 1 more hand, and lets you play ✨ six card exclusive hands ✨

gaunt folio
#

Maybe one if it contains all prime number ranks or something

gusty iron
gaunt folio
#

I would find six card plays interesting but it seems a bit cryptid-like to me or something

gusty iron
#

I called it a "Gay" because "Haha opposite of a straight"

gaunt folio
#

Nah you gotta call it that when it’s all polychromes in a straight

gusty iron
gaunt folio
#

If I was insane id add more ranks but im probably not unless I go crazy

#

1000000 of hearts let’s goooo

gusty iron
#

Two Pair scales to Three Pair
Three of a Kind scales to Two Three
Full House scales to Fuller House
Flush House scales to Flush Full
FoaK scales to SoaK
Flush Five scales to Flush Six

gusty iron
#

"The Amalgamation"

"Select 2 cards of the same rank, and combine their suits."

gaunt folio
#

I’m keeping the suits the same tbh

gusty iron
#

I mean they technically arent new suits

#

Just combinations of the old ones

#

But they count as both suits :]

#

I was considering adding 3-Combos and possibly even a 4-combo, but i decided against it for now

gaunt folio
#

You gotta make the Cluheiamonades (club-hearts-diamond-spade) when combining a four combo/j

#

I just mashed all four together but still

gusty iron
#

It would be called a Spheamolubs

#

The naming follows a sort of priority system

#

Spades>Hearts>Diamonds>Clubs

gaunt folio
#

Ah

gusty iron
#

So Spades+Diamonds = Spamonds

umbral zodiac
#

is there a way to get the screen width in the same scale as the offset values of ui so i can always have a ui element on the edge of the screen

modern kindle
umbral zodiac
#

wait a minute

#

are the ui positions just units of 100 pixels

modern kindle
#

im not sure honestly

hardy viper
umbral zodiac
#

oh nice

hardy viper
#

as opposed to just 19

#

i think it does some like, logical pixel stuff as well

umbral zodiac
#

that number is specifically 20 for me

#

so i guess ill just do the screen width minus a little bit

#

& prolly make it update(?idk if that really matters tbh)

hardy viper
#

im pretty sure if you're trying to put something there you need to subtract the width

#

depending on alignment

#

you can prolly just be imperfect though

umbral zodiac
#

ya the main thing is i just want my new ui element to be offscreen until i slide it onto the screen when i need it

hardy viper
#

ah

#

i should do this for TMJ

umbral zodiac
#

true

hardy viper
#

putting that on the bucket list

manic rune
#

is it possible to have mult/chips effects delay smaller?

daring fern
#

icy vortex
#

I know next to nothing about what I'm doing here so this is probably embarrassing but does anyone know why my sound doesn't play when a retrigger happens

manic rune
#

how do i change the pitch of the sound played in here

daring fern
manic rune
#

oh that simple?

#

thanks

feral tree
#

how do i make a deck have only face cards? reverse abandoned deck

sturdy compass
#

Maximus Autographed deck kinda does something like that

daring fern
icy vortex
daring fern
versed swan
#

how do you put a message on a card outside calculations?

daring fern
versed swan
#

thank you

daring scroll
#

Trying to make an Xmult Ceremonial Dagger that scales based on sliced card's rarity, but I dunno how to check the destroyed joker's rarity without it creating an error

    calculate = function(self, card, context)
        if
            context.setting_blind and
            not context.blueprint
        then
            local my_pos = nil
            for i = 1, #G.jokers.cards do
                if G.jokers.cards[i] == card then
                    my_pos = i
                    break
                end
            end
            if
                my_pos and
                G.jokers.cards[my_pos + 1] and
                not SMODS.is_eternal(G.jokers.cards[my_pos + 1], card) and
                not G.jokers.cards[my_pos + 1].getting_sliced
            then
                local sliced_card = G.jokers.cards[my_pos + 1]
                sliced_card.getting_sliced = true
                G.GAME.joker_buffer = G.GAME.joker_buffer - 1
                if context.jokers.cards[my_pos + 1].config.rarity == 1 then -- WHERE THE ERROR IS (jokers.cards[my_pos + 1])
                    G.E_MANAGER:add_event(Event({
                        func = function()
                            G.GAME.joker_buffer = 0
                            card.ability.extra.joker_score = card.ability.extra.joker_score + 0.4
                            card:juice_up(0.8, 0.8)
                            sliced_card:start_dissolve({ HEX("ec8957") }, nil, 1.6)
                            play_sound('slice1', 0.96 + math.random() * 0.08)
                            return true
                        end
                    }))
                elseif
daring fern
daring scroll
#

alright, got a few errors trying to impliment something like that? this is where I'm at now

if context.card.config.rarity == 1 then
#

ok, adding center to it

daring fern
daring scroll
#

I'm stumped on what context will get the sliced joker's rarity to be read when blind is selected, then

frosty rampart
#

it's not a context. literally you can see elsewhere in your code (that i assume you borrowed from vremade) that you access jokers with G.jokers.cards[index]
and yes the vremade code also literally sets sliced_card to the card that's being destroyed

daring scroll
#

I understand how the code functions to identify the right joker, then assign it as the card being sliced, but I'm still attempting to get it's rarity to then decide what Xmult to add

daring fern
daring scroll
#

sliced_card is a nil value when I put it in the context

daring scroll
#

brain's finally working. had to remove context.

#

Sorry for the headache and tyasm for the help lmao

foggy ginkgo
#

How would I randomize the rarity like how suits and ranks work

#

Cause I just did a 1 to 4 thing but it would be cool if it worked for other modded rarities

daring fern
foggy ginkgo
daring fern
foggy ginkgo
#

Right

#

It works

#

Thank you something

daring fern
foggy ginkgo
#

Thank you

foggy ginkgo
daring fern
foggy ginkgo
#

Hold up

#

It works for modded rarities but the base rarities don't work

daring scroll
#

This legendary doesn't appear from the Soul spectral card, but my others do. Is there anything blocking it?

SMODS.Joker {
    key = 'thunderlord',
    loc_txt = {
        name = "Thunderlord",
        text = {
            "Gains {C:blue}+#1#{} Chips for every {C:enhanced}Enhancement{} in deck,",
            "{C:red}+#2#{} Mult for every {C:attention}Seal{} in deck,",
            "and {X:red,C:white}X#3#{} Mult for every {C:dark_edition}Edition{} in deck",
            "{C:inactive}(Currently{} {C:blue}+#4#{} {C:inactive}Chips,{} {C:red}+#5#{} {C:inactive}Mult, and{} {X:red,C:white}X#6#{} {C:inactive}Mult){}"
        }
    },
    blueprint_compat = true,
    perishable_compat = true,
    eternal_compat = true,
    rarity = 4,
    cost = 20,
    atlas = 'JokerPackOne',
    pos = { x = 1, y = 0 },
    soul_pos = { x = 1, y = 1 },
    config = {
        extra = {
            chips = 80,
            mult = 10,
            Xmult = 1
        }
    },
    loc_vars = function(self, info_queue, card)
        local enhance_count = 0
        local seal_count = 0
        local edition_count = 0
        if G.playing_cards then
            for _, playing_card in ipairs(G.playing_cards or {}) do
                if next(SMODS.get_enhancements(playing_card)) then
                    enhance_count = enhance_count + 1
                end
                if playing_card.seal ~= nil then
                    seal_count = seal_count + 1
                end
                if playing_card.edition ~= nil then
                    edition_count = edition_count + 1
                end
            end
        end
        return {
            vars = {
                card.ability.extra.chips,
                card.ability.extra.mult,
                card.ability.extra.Xmult,
                card.ability.extra.chips * enhance_count,
                card.ability.extra.mult * seal_count,
                1 + card.ability.extra.Xmult * edition_count
            }
        }
    end,
    calculate = function(self, card, context)
        if context.joker_main then
            local enhance_count = 0
            local seal_count = 0
            local edition_count = 0
            if G.playing_cards then
                for _, playing_card in ipairs(G.playing_cards or {}) do
                    if next(SMODS.get_enhancements(playing_card)) then
                        enhance_count = enhance_count + 1
                    end
                    if playing_card.seal ~= nil then
                        seal_count = seal_count + 1
                    end
                    if playing_card.edition ~= nil then
                        edition_count = edition_count + 1
                    end
                end
            end
            return {
                chips = card.ability.extra.chips * enhance_count,
                mult = card.ability.extra.mult * seal_count,
                Xmult = 1 + card.ability.extra.Xmult * edition_count
            }
        end
    end,
    in_pool = function(self, args)
        for _, playing_card in ipairs(G.playing_cards or {}) do
            if next(SMODS.get_enhancements(playing_card)) then
                return true
            end
            if playing_card.seal ~= nil then
                return true
            end
            if playing_card.edition ~= nil then
                return true
            end
        end
        return false
    end
}
daring fern
foggy ginkgo
#

Damnit

#

Thank you something

foggy ginkgo
#

<@&1133519078540185692>

exotic hedge
#

Smh

lament agate
#

these yellow highlights really fucks me up

daring fern
lament agate
#

thanks for reminding me

manic rune
cursive gazelle
#

That’s the native speed no?

manic rune
#

yeah

#

but is it possible to individually make it go faster?

#

i remember ortalab doing smt like that

cursive gazelle
#

Check ortalab’s code

#

Or ask eremel

manic rune
#

hmmm

#

true, let me redownload it

cursive gazelle
#

You can check in github bro😭

manic rune
#

downloading means i get access to better searching in vsc though

cursive gazelle
#

Makes sense

manic rune
#

yeah its this one

cursive gazelle
#

Yeah that one is fast

manic rune
#

oh i see

cursive gazelle
#

Eremel is so cool

manic rune
#

i do wonder why its G.C.RED and not G.C.MULT though lol

rare torrent
#

how do i change the sprite of an joker during a calculate function? more specifically changing the "pos" in the atlas

red flower
#

card.children.center:set_sprite_pos({x=number, y=number})

robust marsh
#

no clue what's happening here but it's 100% related to my card areas. It happens when I go into a blind with any deck and then try to start a new run with another deck or try to exit to the main menu.

red flower
robust marsh
red flower
#

does it fix it if you do if G.pactive_area and G.pactive_area.cards then (and the same for the other one)

robust marsh
#

Yes it does work !!

#

Thank you so much @red flower, you've helped me a bunch over the past few weeks (counting in vanillaremade as well gemmytroll)

hidden mirage
#

which one is grey as seen in "(Currently +x Mult)"

stiff locust
#

inactive

hidden mirage
#

Wow thankyou

stiff locust
#

dark_edition is for editions and the word Legendary and Edition

#

green is for probabilities

#

there is also mult and chips colors iirc

#

the rest should be self explanatory

hidden mirage
#

and whats attention

stiff locust
#

attention is the basic highlight

#

a lot of jokers use a lot of attention

#

it grabs your attention

hidden mirage
#

orange?

stiff locust
#

yep

#

that's attention

hidden mirage
#

ok thanks

stiff locust
#

if you need xmult or xchips

#

you do {X:mult,C:white}

#

mult is the color of the box and white is the color of text inside it

#

you can also add the arguments S:x inside the brackets

#

S: changes the size of the text

#

if you set E:1 the text is wavy

#

thats pretty much everything

hidden mirage
hidden mirage
stiff locust
#

inside xmult or xchips boxes you should use white

#

that's how vanilla jokers do it

hollow horizon
#

Hi! How do I localize custom poker hands?
prefix_name = {} doesn't seem to work inside poker_hands and poker_hand_descriptions in my localization file

hasty kelp
#

i have a deck but it gives 3 random jokers not just jimbos

#
    key = "jimbo_deck",
    loc_txt = {
        name = "Jimbos Favorite",
        text={
            "Start with 3",
            "{C:green}Vanilla Jokers{}",
        },
    },
    
    config = { hands = 0, discards = 0, consumeables = 'c_opentolan'},
    pos = { x = 1, y = 0 },
    order = 1,
    atlas = "Decks",
    unlocked = true,

    apply = function(self)
        G.E_MANAGER:add_event(Event({
            func = function()
                if G.jokers then
                    for i = 1, 3 do
                        local card = create_card("Joker", G.jokers, nil, nil, nil, nil, nil, "yahimod_deck")
                        card:add_to_deck()
                        --card:start_materialize()
                        G.jokers:emplace(card)
                    end
                    return true
                end
            end,
        }))
    end,
})```
hollow horizon
hidden mirage
stiff locust
#

i'm colorblind

#

couldnt tell you

hasty kelp
#

my deck wont spawn 3 jimbos why?

red flower
hidden mirage
hidden mirage
hasty kelp
#

N can you help me with my deck problem

red flower
hidden mirage
#

yeah i should probably refer to them before asking here

red flower
hasty kelp
red flower
#

you did it wrong then

hasty kelp
#

scroll up a bit and look at the code

red flower
#

i did, you're not using add_card

hollow horizon
hasty kelp
#
        G.E_MANAGER:add_event(Event({
            func = function()
                if G.jokers then
                    for i = 1, 3 do
                        local card = add_card("Joker", G.joker, nil, nil, nil, nil, nil,)
                        card:add_to_deck()
                        --card:start_materialize()
                        G.jokers:emplace(card)
                    end
                    return true
                end
            end,
        }))
    end,
})``` is this more correct
red flower
#

no

daring fern
hidden mirage
#

why is canio spelt caino 🫠

red flower
#

it should be outside

red flower
hasty kelp
#

play the deck if you really love jimbo

robust marsh
manic rune
naive musk
#

can you add an animated joker in game?

manic rune
#

so its usually suggested you use them correctly to not have Trance changing colors in unintended places lol

manic rune
naive musk
manic rune
#

Tangents i think

naive musk
#

ah, thanks

manic rune
#

good luck

hidden mirage
#

Are aces generally considered number cards?

manic rune
#

yes

#

erm, i do, gotta ask others on that too lol

hollow horizon
daring fern
hidden mirage
#

probably should just say 2-10 to be clear (played 2's-10's??)

red flower
#

incantation says numbered cards and that doesnt include the ace so it's a vanilla term

hardy viper
#

last I checked the ace doesn't have a number on it

manic rune
#

dang im weird

hidden mirage
#

is there an info card for enhancements in general

red flower
hidden mirage
#

dw abt it how to pick pseudorandom element from list

hidden mirage
#

" (i.e. affected by Oops! All 6s)" not sure how oops would affect picking a random number a to b

red flower
#

it wont

#

i should move that comment down

strong terrace
#

i'm new to this and idk what the error is here (probably just made some stupid error)

manic rune
#

you are missing a ,

gusty iron
#

how would i make something happen when a key is pressed?

manic rune
#

SMODS.Keybind?

gusty iron
#

i should probably elaborate further:

i want to cycle through a list on a joker when a key is pressed, how would i go about doing this?

strong terrace
manic rune
#

-# why does that sound like description pages

manic rune
gusty iron
strong terrace
#

ok thanks

manic rune
#

if you want to refresh the description easily then you can do card:stop_hover() -> card:hover()

gusty iron
#

how would i check the current joker hovered?

manic rune
#

hook to card:hover()

red flower
#

you dont need to do that

manic rune
#

wuh

fast remnant
#

hey y'all, trying to make my first mod! How can I make my joker look at and modify the played hand?

strong terrace
#

sorry for asking another question, but what do i have to do here?

manic rune
#

is there a thing to check for hovered cards now

manic rune
red flower
manic rune
#

oh

red flower
#

idk why i check for G

manic rune
#

lmao

#

yeah thanks, i will keep note of that

gusty iron
red flower
#

yeah

gusty iron
#

how would i get its key

manic rune
#

i remember asking about questions relating to checking for hovered cards at least 2 times here nd no one brought it up so i didnt know :p

#

card.config.center.key

red flower
manic rune
#

thats a really long if statement

gusty iron
#

how do i get a table of all of the suits?

strong terrace
red flower
manic rune
#

but the played hand should be G.play.cards

strong terrace
manic rune
#

why do u have config in loc_txt...

#

actually wait nvm

red flower
#

its not

manic rune
#

its just bad indentation

#

😭

#

in my defense its the same color bracket

#

remove this

fast remnant
# manic rune modify in which way

the joker i'm trying to make would convert each played hand to a flush house, so for example it would take the suit and rank of the first card to make the 3 of a kind, and then take the second card to make the pair

strong terrace
red flower
#

remove the }, at the beginning

strong terrace
#

thanks

gusty iron
#

how would i get the name of a suit?

red flower
gusty iron
#

SMODS.Suits

red flower
#

what for

gusty iron
#

so i can display it on the joker

#

basically what my joker does is:

Prioritize drawing [RANK]s and [SUITS]s first.

Press R to cycle rank
Press S to cycle suit

red flower
#

do you have the suit selected

gusty iron
#

it starts off as "Hearts", but in the keybind i have it saved as "index"

manic rune
#

imagine people try to hold R thinking it will cycle through the ranks quicker and it restarts their run instead lmao

red flower
gusty iron
# red flower can i see the code, its easier to tell you if i know what names youre using
SMODS.Keybind{
key_pressed = "s",
key = "andrew_suit_cycle",
action = function(self)
local card = G and G.CONTROLLER and (G.CONTROLLER.focused and G.CONTROLLER.focused.target)
or (G.CONTROLLER.hovering and G.CONTROLLER.hovering.target)

local suits = SMODS.Suits
if card and card.config and card.config.center.key == "j_JCJ_j_andrew_ex" then

local current_suit = card.ability.extra.suit
local index = 1
 for i, suit in ipairs(suits) do
if suit == current_suit then
 index = i
 break
  end
   end

            
index = (index % #suits) + 1
  card.ability.extra.suit = suits[index]
 end
 end
}
red flower
#

oh ok, i think SMODS.Suits is not integer indexed

strong terrace
#

i'm trying to start the game with my mod but it crashes with this log, what's the problem?

manic rune
#

why did you remove that too 😭

strong terrace
#

idk

#

i'm dumb

manic rune
#

add it back

strong terrace
#

ok

manic rune
#

partially my fault for having the cross a bit too big i guess

manic rune
#

also in Jr case maybe we can use pseudorandom_element or something to have a table of suits thats consistent to cycle through 🤔

red flower
#

try using SMODS.Suit.obj_buffer

manic rune
#

idk

gusty iron
manic rune
#

whats obj_buffer again

#

:3

gusty iron
red flower
manic rune
#

oh

red flower
#

i think

manic rune
#

is the order consistent when you reload the run/game though 🤔

manic rune
#

i would assume yes if it loads depending on mod order idk

gusty iron
#

so unless if the alphabet gets an update after you close your game, no 😭

red flower
manic rune
red flower
#

maybe for the vanilla suits

#

im pretty sure its just load order

gusty iron
#

oh

#

WELLLLL im sure it wont be that big of an issue

strong terrace
manic rune
#

whats the code

strong terrace
#

of the joker?

manic rune
#

why is it context

#

😭

strong terrace
#

idk

manic rune
#

change it to card

strong terrace
#

ok

#

sorry

manic rune
#

also you dont need tostring

strong terrace
#

ok

manic rune
strong terrace
#

ok thanks

manic rune
red flower
#

probably press_play

manic rune
#

that could work yeah

fast remnant
#

THANK YOU! :D

gusty iron
#

so when i try to load SMODS.Suits.obj_buffer[1], it returns nil for some reason??

red flower
#

SMODS.Suit.obj_buffer

#

singular

gusty iron
#

and then nil 😔

glass crane
#

Ive been somewhat working on a frutiger aero themed mod (prolly jokers only) but idk how to make my legendary idea work since im using joker forge.

My idea was that it doubles the effects (probabilities and multipliers alike) of all cards to its right.

manic rune
red flower
#

ohh

#

yeah that makes sense

manic rune
gusty iron
#

okay yeah that fixed it

#

2 more things

red flower
manic rune
gusty iron
#

how do i get the card's text to update when i use the keybind

primal robin
glass crane
#

Also need some advice on if this is balanced or not (do plan on making butterfly more expensive)

red flower
manic rune
#

gulp

wide chasm
#

what's a good way of turning all my consumables negative inside an event

primal robin
manic rune
#
for _,v in ipairs(G.consumeables.cards) do
   v:set_edition("e_negative")
end

in the event's func?

gusty iron
wide chasm
#

yeah

unborn smelt
#

before I waste time on this:
is it possible to set an animation atlas for joker art?

gusty iron
#

I SHOULD PROBABLY ALSO LOCALIZE THE RANK

red flower
#

no

#

@unborn smelt

unborn smelt
#

):

#

there goes my next idea

gusty iron
#

Me and all my homies love the 14 of spades 🤑

manic rune
#

it would be nice if you can stylize the suit part to its respective suit color too lol

gusty iron
#

whats the function to localize the rank again

red flower
#

localize("key", "ranks")

gusty iron
#

im guessing key is a number?

red flower
#

no

#

its the rank key

gusty iron
#

.

primal robin
#

One day I'll make extended Balatro UI guide

gusty iron
#

i have the rank stored as a number

primal robin
#

Which will include localization lul

gusty iron
#

how would i go about converting that

red flower
gusty iron
#

what table do i have to cycle through this time 😔

red flower
#

SMODS.Rank.obj_buffer should be similar

gusty iron
#

drawing ERRORs 🔥

#

oh wait i see why

#

i forgot to remove the quotes

round lion
#

what does front and center even mean in create_playing_card() ? im sorry for interrupting.

red flower
#

front is the rank and suit, center is the enhancement
dont use create_playing_card tho, use SMODS.add_card

manic rune
#

N' should i make herta randomly play between kuru kuru and kuru ring sfx instead or just the first one

red flower
#

random

gusty iron
#

yay :)

#

now to make this actually work

#

...how the hell do i rig deck drawing ._.

red flower
#

check aiko's mod

gusty iron
#

thats what im looking through

#

FOUND IT

robust marsh
#

how would I add a button to the win screen? nervous

wide chasm
manic rune
#

check for card.config.center.set == "Planet" i think?

round lion
red flower
#

it's in utility functions

manic rune
robust marsh
manic rune
#

hammer, yeah

robust marsh
#

dope

manic rune
#

the angle is a bit too bad to cover the hammer head unfortunately ;-;

#

i dont feel like redrawing her yet though so i will keep it like that for the time being

robust marsh
#

still looks nice 👍

wide chasm
manic rune
#

no

#

it should be in an if statement

wide chasm
#

inside the func?

manic rune
#

im more proud of my recent works like this one lol

manic rune
wide chasm
#

alr

red flower
manic rune
#

i like seele's color palette a lot :3

#

her sig looks so beautiful too

red flower
#

i wish she was good

manic rune
#

you can tell where i took the bg reference from :p

manic rune
#

:p

red flower
#

i dont think i will

wide chasm
manic rune
#

fair

wide chasm
#

could it be like this then

manic rune
manic rune
wide chasm
gusty iron
#

so i somehow managed to get the complete OPPOSITE effect of the joker i wanted

#

also what function would i call to reshuffle the deck?

#

actually wait im stupid

#

CardArea:shuffle()

manic rune
#

i think G.deck:shuffle()?

#

yeah

gusty iron
#

dont i need a seed though

manic rune
#

just any will work

gusty iron
#

how do i do a seed again i kinda forgot (havent done alot of randomizing in a while)

manic rune
#

just a string

#

any will work

gusty iron
#

okay so now it says attempt to index nil "list"??

robust marsh
#

idk how niche this is, is there a way to make a specific joker spawn in the first shop of Ante 8 and never again after that?

gusty iron
#

OKAY YEAH I WAS JUST CALLING THE WRONG FUNCTION

#

it was G.deck:shuffle()

stiff locust
#

it has a voucher like that

#

only shows up on the win ante

round lion
#

i wonder if i can just use card.sell_cost instead of using the entire sell cost function

gusty iron
#

it works :)

stiff locust
#

when the game recalculates the sell value your changes will be reset

#

unless you mean just reading the sell cost

robust marsh
stiff locust
#

you could do that with an uncommon or rare tag

#

or a variation of it

robust marsh
#

ye trying that out rn

manic rune
cursive gazelle
#

2 days of love2d

loud summit
#

hi what variable keeps tracks of the number of hands you have

manic rune
#

G.GAME.current_round.hands_left?

loud summit
#

thx

hollow horizon
#

Any idea why it doesn't work properly?