#đŸ’»ăƒ»modding-dev

1 messages · Page 102 of 1

nocturne garnet
#

kid named joker

cinder elk
#

kID NAMED JOKER

arctic lion
cinder elk
#

waltuh.

#

put your joker away waltuh.

#

i'm not playing a full house, waltuh.

balmy stump
#

Its like one pixel off from Amiga Normal thanks for nothing

arctic lion
#

why is bro so mad it's literally custom

cinder elk
thorny adder
#

Its in the .exe

#

Open the .exe with 7zip, then its in the fonts folder

#

There are multiple

#

Its one of em

nocturne garnet
balmy stump
autumn coral
#

there is no font

hardy viper
#

pretty sure it is?

autumn coral
#

hand-drawn

#

i think

hardy viper
#

i think the entire game uses that font

autumn coral
#

for most of it

hardy viper
#

i would think

#

it's hand drawn

#

and a font file

balmy stump
#

The "JOKER" Text thats on alot of the Jokers

hardy viper
#

oh wait those work differently

hardy viper
balmy stump
#

that isnt that font

hardy viper
#

i imagine it was hand drawn and copypasted

tidal ice
#

yeah I probably don't understand seals, this is ment to gain 10 chips if the card is played in a pair, but its kinda just doing nothing

autumn coral
#

anyone know how to change the global music pitch permanently for the rest of the run

nocturne garnet
#

why does bro delete his messages all the time

#

wuddaflip

balmy stump
autumn coral
#

pitch_mod?

hardy viper
autumn coral
#

G.pitch_mod

hardy viper
autumn coral
#

no the game supports it directly

#

and i know this bc it does this

#

when u lose

hardy viper
#

ah yeah

#

true

autumn coral
#

gfuel is going to change the pitch by 0.25 every time you get a new one

balmy stump
# balmy stump

ended up just doing guess work for the N and the L, looks good enough

tidal ice
autumn coral
#

modulate_sound does this

balmy stump
#

comparison

autumn coral
#

every time u get a new one the entire game gets faster and the music speeds up

#

that was the idea

weary jungle
autumn coral
#

yes

#

i know

thick panther
#

Does this seem like its missing something? I feel like it needs something gold.

autumn coral
#

that was also the plan

#

i have all of the explosions

cinder elk
#

it's funny

autumn coral
#

i think it IS g.pitch_mod

#

lemme see what happens at the end of a hand maybe?

thick panther
autumn coral
#

nah on the inside

#

i'm not an artist tho so take it with a grain of salt

weary jungle
#

also make all the text capitalized and add exclamation marks to the end of the tex

autumn coral
#

i like this one

#

i'm gonna move this to the jimbo chat but that's funny as hell

#

i have all of the screams btw

#

it isn't funny without the gfuel screams

#

and explosions

tidal ice
#

true this seems hilarous

autumn coral
#

it's so funny in isaac too

#

speaking of which i accidentally launched isaac instead of balatro

#

i could also change the game speed lmfao

weary jungle
#

i have another idea as well

autumn coral
#

oh?

weary jungle
#

let me get somethig one sec

autumn coral
#

it'd be funny if i overlayed the explosion effect on the score counter

weary jungle
#
version = "1.0.0"
dump_lua = true
priority = 0

[[patches]]
[patches.pattern]
target = "engine/moveable.lua"
pattern = "self.VT.x = self.VT.x + self.velocity.x"
position = "at"
payload = "self.VT.x = self.VT.x + (self.velocity.x * 6)"
match_indent = true


[[patches]]
[patches.pattern]
target = "engine/moveable.lua"
pattern = "self.VT.y = self.VT.y + self.velocity.y"
position = "at"
payload = "self.VT.y = self.VT.y + (self.velocity.y * 6)"
match_indent = true ```the funny patch
weary jungle
#

you can change the * 6 to a different number if you want

autumn coral
#

is this the game scale?

weary jungle
#

makes everything like shake

autumn coral
#

LMFAOOOO

weary jungle
#

its hard to describe

autumn coral
#

does it have to be lovely?

#

i'd rather have it be configurable

weary jungle
#

yes, liteally changes the movable script

#

its very funny

autumn coral
#

incredible

frosty dock
#

you can just add the config to the patch though

autumn coral
#

i'll save this somewhere

autumn coral
#

by gfuel

#

it needs to multiply for every gfuel you get

frosty dock
#

that doesn't really matter

#

just add some config value into the patch and modify it wherever you need to

autumn coral
#

Oh fair actually

#

oh not sure that that's what i needed

weary jungle
autumn coral
#

i was thinking the shake scale on a blind completion lol

#

LMFAO

weary jungle
#

but this is also funy

autumn coral
#

it funny but iunno if it gfuel

weary jungle
#

its just something i have but havent found a use for

autumn coral
#

istg is G.PITCH_MOD not the global variable that has the global current pitch?

#

i'm like 95% sure that it is because it has something configurable for the gameover state that changes it

weary jungle
autumn coral
#

oh that is pretty awesome

#

i think i need to patch modulate_sound actually bc i think it has a catch for if the pitch is too high

thorny adder
#

Screen:juice_up()

#

Lmao

autumn coral
#

oh yeah

#

lol

thorny adder
#

Omg I wanna try that

#

OMG MAMA MEGA

autumn coral
#

yea

thorny adder
#

Alr I'm doing that

autumn coral
#

sick

#

u can steal mama mega

#

honestly we both probably had the same idea for it

thorny adder
#

I mean

#

What other idea would even be possible

#

Its literally the in game effect

weary jungle
#

what haped

thorny adder
#

Haped

autumn coral
#

naur i meant for like what it does

thorny adder
autumn coral
#

ok i'm goin gback to my desktop time to figure out how to change the global pitch mod dynamically for the funniesâ„ąïž

thorny adder
#

It wont even be the same

autumn coral
#

probably just automatically clear a blind tbh

thorny adder
#

Yeaaaaaaaaaah

#

Anyway

#

Bye I have so keeper runs to do

autumn coral
#

hahahahaha

#

did you dead god yet?

#

i'm going for infinity%

#

i did dead god on save 1

#

getting close to all hard checks on save 3 rn

#

ok i got the global pitch mod thing working

#

let's see if it actually does what i want

#

oops

#

it's only temporary apparently hahahahahahahahahaha

#

i gotta fix that

clever steppe
#

only other thing i notice is maybe the symbols on the wheel could stand out more, maybe with a drop shadow or making the surrounding grey darker

autumn coral
#

time to figure out whether my shitty idea for changing the game pitch every time gfuel is added works

#

whyyyy

#

hmmm

#

i think i figured it out

edgy reef
#

Just woke up to draw functions being added

#

Hell yea

tidal ice
#

still tryna figure this out

#

well I forgot commas I realized but I tried a working version of this before

#

I tried doing a G.E_MANAGER:add_event thing but that didnt work

autumn coral
#

i made it work but it has a recursive loop on pitch lfmaoooo

frosty dock
tidal ice
#

notepad++

autumn coral
#

god that brings back the memories

#

back when i was a small child and vs code didn't exist

frosty dock
#

my eyes are not liking this

#

too used to dark themes

hardy viper
#

np++ has dark themes right

autumn coral
#

is there an added to hand event

#

like for when a joker is added to a joker slot

tidal ice
autumn coral
#

wait

#

actually

tidal ice
#

but anyways I still don't know how seals work

#

yeah I understand I'm being annoying sorry about that /srs

autumn coral
#

call my mod impractical jokers the way

#

the way

#

ow

#

my heac

hardy viper
#

real

autumn coral
#

today i have learned a valuable lesson: changing the global pitch sounded a lot easier in my head

#

of course, that isn't going to stop me

#

i could also like just

gilded narwhal
#

Did I cook here

autumn coral
#

alter the definitions of the songs actually

weary jungle
tidal ice
#

I tried doing ability but it caused a crash

#

but i guess ill try that again

autumn coral
#

do card.ability.extra

#

oh wait

#

i figured out an easier way to do what i'm doing

edgy reef
#

@frosty dock Small correction for group_key in the SMODS.Booster docs, it's not G.localization.misc.dictionary[k_booster_group'..group_key] that it draws from, it's either G.localization.misc.dictionary[self.group_key] or G.localization.misc.dictionary['k_booster_group_'..self.key] as the default

#

Also I think the default args for SMODS.Back docs are messed up

frosty dock
#

ok my bad, should have double checked that. I wasn't sure but decided just to run with it

autumn coral
#

my next mod is gonna be needy streamer overload i think actually

#

originally i was going to do something for my friend's card game that's like really cool

#

it's called railgrind (it's fucking insane)

#

it's like a jsr card game

#

anyway i still might do that but i want to add drugs to the game

weary jungle
#

wavy cap

tidal ice
#

actually maybe hang on

autumn coral
#

i still need to know what event triggers when a joker is added to the cards

hardy viper
#

add_to_deck

autumn coral
#

that triggers when it's in collection for some reason

#

well actually

#

now that i'm thinking about it

#

that might not matter for what i'm doing

hardy viper
autumn coral
#

yea

#

i think what cg recommended should work tho

#

unfortunately

#

it does not

#

💀

hardy viper
#

it should

frosty dock
#

there's a context for buying cards, unfortunately there's other ways to obtain a joker

hardy viper
#

you should use set_ability btw

autumn coral
#

context.card = card ?

wintry solar
#

Where are you doing this

hardy viper
#

add_to_deck doesn't trigger when you reenter a run

autumn coral
#

oh that's not good

#

i guess i'll have to um

#

make an extra event for this 😭

wintry solar
#

add_to_deck is a function you define in the object, it’s not part of calculate

autumn coral
#

yeah i know

hardy viper
#

it should be as simple as just

set_ability = function(self, card)
 if card.area == G.jokers then
  --blah blah
 end
end
wintry solar
#

Well then it depends on what you’re trying to do for what you should use

tidal ice
#

I changed it to be an enhancement but I'm still having issues, its not doing anything

autumn coral
#

i just need something to trigger once a run is either re-entered and the joker is in the hand or when it is added to the hand

#

hm

hardy viper
#

lemme check

autumn coral
#

it didn't work with the debugplus stuff

faint yacht
#
add_to_deck = function(self, card, from_debuff)
    play_sound("what_balls")
end

on Jokers does actually trigger when re-entering a run.

hardy viper
#

oh strange

autumn coral
#

let me try that

#

wait actually

hardy viper
#

keep in mind that also triggers when something is undebuffed

autumn coral
#

i don't even think it matters tbh if it does do what i was thinking it might

hardy viper
#

so you have to check from_debuff

faint yacht
#

Which is why I have if not from_debuff and togabalatro.config.SFXWhenAdding and G.STAGE == G.STAGES.RUN and not G.screenwipe then ...

frosty dock
autumn coral
#

wait yes it would

hardy viper
frosty dock
#

istg

autumn coral
#

what's the from_debuff again

hardy viper
#

as opposed to obtained or loaded

frosty dock
#

I swear I saw set_ability there

#

what's wrong with me

hardy viper
#

it's okay im blind sometimes too

#

more often than not

faint yacht
frosty dock
#

tbf these code blocks are super low contrast on mobile

autumn coral
#

just realized it doesn't even matter actually how i'm doing this

#

lol

#

i can remove that block

#

it's almost time to write out the effects

#

wait actually how do i make sure that it only plays when it's added to my hand actually and not on reload in this case i was thinking of

#

just realized it DOES need to play a seperate from the other logic i was running

tidal ice
#

still doing nothing

wintry solar
#

Enhancements don’t return

tidal ice
#

ohhh

#

wait is that the same for seals

wintry solar
#

No

#

I don’t believe so

tidal ice
#

ah

autumn coral
#

is config {negative=true} a valid value

#

i know eternal is

tidal ice
#

still does nothing

frosty dock
#

enhancements don't get before context calculate, right?

wintry solar
#

I don’t think so, no

tidal ice
#

god dammit

wintry solar
#

I believe they just get individual and repetitions

tidal ice
#

guess I have to make this a seal again if I even can

#

I don't understand seals

#

does seal not get context.before either

#

what am i missing

wintry solar
#

No it doesn’t

#

I don’t think

gritty valley
#

We really need to normalize the contexts

#

For all objects

tidal ice
#

this sucks

wintry solar
#

You don’t need this in context.before though

#

Just put it in context.individual

gritty valley
#

Yeah functionally the same

tidal ice
#

but I do want this to upgrade the card before it is scored

#

can I not do context.scoring hand?

#

if so what i'm doing rn is literally impossible

timid parrot
#

Should be possible, I’m pretty sure I’ve seen mods add scoring seals before

tidal ice
#

I'm trying to make a consumable card type that gives cards a seal that upgrades a card if the sealed card was played in a particular hand

timid parrot
#

Your goal is for the card to go hiking by 10 chips every time it scores right?

tidal ice
#

I kinda want it to be before the cards are scored

timid parrot
#

Which you should be able to do

tidal ice
#

how

timid parrot
#

I haven’t made any custom seals but I assume you just have the card be upgraded before the scoring return

#

Add an extra card eval display before the scoring to signify the upgrade

#

Probably gonna be in whatever the individual context is for seals

tidal ice
#

I don't know how to do that whatsoever

timid parrot
#

Have you looked at the vanilla seals?

tidal ice
#

idk how to

#

idk where the code is

timid parrot
#

In your local steam files

tidal ice
#

i mean which lua file

#

I have the game's files

timid parrot
#

Oh probably part of card

#

I haven’t looked at seals specifically but I’d assume they’re part of the card’s personal evaluation function

#

I’d look rn but I’m not at my computer

violet void
#

Can I just overwrite

G.FUNCS.evaluate_play = function(e)

by defining it again in my main.lua?

frosty dock
#

yes, but you shouldn't

#

what do you want to do?

nocturne garnet
violet void
#

I need to add an if

nocturne garnet
violet void
#

for a joker I added, similarly to "splash"

nocturne garnet
#

what does it do

frosty dock
#

what is it you're trying to accomplish?

violet void
#

I originally made it work by editing the source code but im using smods now

frosty dock
#

generally it's bad practice to completely overwrite functions

#

using lovely patches is preferred, though iirc steamodded itself has an override on that function, would have to keep that in mind

tidal ice
#

making a seal, this causes a crash, I guess it cannot detect the card it is on, but idk how to do that

#

the "fuck" print was debug stuff dont worry about it

frosty dock
#

context.card?

nocturne garnet
violet void
#

These are the only changes I made to that function

       utils.unscore_cards(G.play.cards, scoring_hand)

       for i=1, #G.play.cards do
           scoring_hand[i] = G.play.cards[i]
       end
   end```

and

          ``` if not scoring_hand[i].unscored then
               highlight_card(scoring_hand[i],(i-0.999)/(#scoring_hand-0.998),'down')
           else
               scoring_hand[i].unscored = false
           end```
nocturne garnet
#

the game doesnt like that

frosty dock
#

there's a card arg in the calculate function

nocturne garnet
#

so

tidal ice
#

hiker does that and I thought I needed to use that aswell

frosty dock
#

hiker isn't a seal

violet void
nocturne garnet
nocturne garnet
#

the game doesnt like cuss words

#

so hes in the timeout corner of balatro

tidal ice
#

dw ill change the code to say frick

thick panther
#

Do you think this should be played hand or scoring cards?

wintry solar
violet void
frosty dock
#

you would overwrite steamodded's override

wintry solar
#

Smods doesn’t override evaluate play anyway

violet void
#

in fact it crashes ;-;

wintry solar
#

But it does do a lot of patching into it

violet void
wintry solar
#

No

#

You never edit the source code

frosty dock
arctic lion
wintry solar
#

I mean using a lovely patch to insert your code

autumn coral
#

i know this seems really cocky but this gfuel card is going to be the single funniest card ever modded into balatro

#

i can feel it

violet void
teal estuary
#

what are some ways to make jokers only spawn if the player has a vanilla joker? i get how gros michel or cavendish do it, but for jokers that dont have a check involved đŸ€š

teal estuary
nocturne garnet
#

balls

#

it is

tidal ice
#

got it workin! not super ideal as I want it to activate before the hand is scored, but I'm ok with this

only issue is that idk how to get that message to appear and it does not score the bonus chips after adding them

teal estuary
#

so does that make that joker only spawn if you have no jokers?

nocturne garnet
tidal ice
#

ah

nocturne garnet
#

i assume you think it works because it worked when you returned it in joker calculations, but its different

teal estuary
#

second question, how can i check for a specific joker using #G.jokers.cards? is it something like #G.jokers.cards == “Joker Name”?

violet void
nocturne garnet
tidal ice
#

ah

nocturne garnet
stiff locust
nocturne garnet
#

G.jokers.cards is a table

wintry solar
stiff locust
#

someone forgot about discord formatting

stiff locust
#

yeah if you do #G.jokers it returns the length of G.jokers, aka how many jokers you have

teal estuary
#

-# is that how stencil checks how many jokers are there?

stiff locust
#

-# probably not

teal estuary
#

-# 😔

#

but that is very useful to know, ty

nocturne garnet
#

you mean #G.jokers.cards

#

G.jokers is the cardarea

nocturne garnet
stiff locust
#

if you're searching for a modded joker

#

you need to include the mod prefix for that mod in the joker key here

nocturne garnet
#

or just search for the joker name

wintry solar
nocturne garnet
stiff locust
#

i was gonna call it the beta method I just think searching by key is better

nocturne garnet
#

😈

#

/j

wintry solar
#

In fact bad probably isn’t a strong enough word

stiff locust
#

anyway yeah you put the mod prefix after j_ so it'd be like j_cry_jolly_joker for a cryptid thing since cry is their prefix

#

and i recently learned if a mod doesn't have a prefix, the prefix is automatically assigned as the first 4 letters of its name/ID

#

isn't that wacky josuke

frosty dock
#

now you're gonna learn this is no longer the case with json metadata files

wintry solar
#

Does it just refuse mods with no prefix?

frosty dock
#

yeah it's required

teal estuary
#

im gonna presume even if its your own jokers, right?

stiff locust
#

yes

teal estuary
#

thats why it didnt work, whoops

#

ty

#

so is balatros prefix j_ then?

nocturne garnet
#

balatros prefix is

teal estuary
#

then why do people put j_jimbo when giving an example /genq

frosty dock
#

the j_ part is a class/type prefix

nocturne garnet
teal estuary
#

OOOOH

#

okay, i get you

frosty dock
#

it's just how the vanilla jokers are set up

teal estuary
#

that makes sense

#

ty

frosty dock
#

jokers, consumables, vouchers, etc. are all stored in the same vanilla table

#

so they have different prefixes

stiff locust
#

vouchers are v_

frosty dock
#

same with why we have mod prefixes

teal estuary
#

that explains a lot

#

i shall use this newfound knowledge to wreck havoc

frosty dock
#

steamodded is set up in a way where a lot of this prefixing stays hidden from you

#

say you create an atlas with some key

#

internally, your mod prefix gets added to that

teal estuary
#

oh yeah i know about that, i do love that feature

frosty dock
#

when you specify the atlas to some object, it's also added there

teal estuary
#

its so nice

gilded narwhal
#

Balanced?

raw path
#

Are there any guides with where to start for modding Balatro? I'm new to this sort of thing and don't really know where to start/what tools I'll need

cinder elk
#

i really want someone to make a deck/mode or whatever that's like the artifact of command from ror2

tidal ice
#

sound isnt registering, as trying to play it causes a crash where it instead tries to play resources/sounds/Iblock.ogg from the game's files (which doesnt exist) instead

raw path
violet void
frosty dock
tidal ice
#

oh that makes sense

#

i wasnt

#

fixed I think

thick panther
#

Is there a way to make a joker inhereit blueprint but make the direction left instead of right?

stiff locust
#

why

#

why would you do that

thick panther
stiff locust
#

oh my god

#

please do something more interesting with reverse blueprint

#

don't just invert the damn color

violet void
#

red is a cool color

#

(better than blue)

stiff locust
#

what's a blueprint for? building a building, the opposite naturally is a building that was already built so instead of having an effect that copies things because that's what a blueprint does you give it a building like effect and call it Joker Incorporated and it's a massive building

#

that's way more interesting than inverting the color

#

and direction

thick panther
#

I dont really need a complicated joker right now. I just need one that can go left.

stiff locust
#

brainstorm

violet void
#

wouldnt the opposite be destroying a building

stiff locust
#

that is another way of interpreting it

cinder elk
stiff locust
#

also

there's no situation where a blueprint that goes left is better than one that goes right

#

unless you have two pinned jokers and the one you want to copy is not the leftmost in which case that's your fault for getting two pinned jokers

thick panther
stiff locust
#

blueprint is already the best joker in the game

it does not need "another option"

#

damn powerscalers eating my cards and shit

#

you're not supposed to eat those

hardy viper
stiff locust
#

is it not just better to copy gemini

hardy viper
#

depends

#

if you need immediate econ and youre doubling an econ joker then youd want to double the econ joker not the gemini

stiff locust
#

then use brainstorm for it

#

it's perfect for this actually

hardy viper
stiff locust
#

brainstorm is already a left facing blueprint with a restriction

#

that makes it more interesting and defined from blueprint

edgy reef
#

There would also need to be enough jokers that would want you to copy left and middle because fully left jokers would just use brainstorm to ever justify adding “brainstorm but left”

#

If one joker is able to synergize it would still be pointless because one is not enough.

stiff locust
#

its only actual use is being able to get both blueprint and left blueprint at the same time without showman

fallen tendon
#

how does this art look?

autumn coral
#

how do you give xmult and xchips for a joker

#

i was looking through stuff, and the thing i tried wasn't working so i'm wondering if there's something built into steamodded

#

actually scrap the first part

#

i just need xchips

faint yacht
#

I've had a similiar run-in for my Start Menu joker which has both XChips and XMult.

autumn coral
#

ios there not just Xchip_mod

autumn coral
#

zamn

stiff locust
#

xchips isn't real

#

but

thick panther
stiff locust
#

you can mark talisman as a dependency and use its xchips

autumn coral
#

is chip_mod just a variable

#

i'm lazy

#

the chip_mod will probably work better for what i need anyway

faint yacht
#

Using Talisman as dependency here. 😅

autumn coral
#

is chip_mod a global variable

#

oh

#

riiight

#

actually this doesn't exactly matter to me if it isn't the exact thing

thick panther
autumn coral
#

oh wait that's so smart

#

that's pretty much what i was doing but the - hand_chips makes sense lol

#

ok let's see if i got what i wanted here for this

#

can i do a silent calculate

#

i don't want. box

#

nvm i'll deal

cinder elk
fallen tendon
cinder elk
#

THIS'LL BE SO COOL

fallen tendon
#

oh god

#

it does not look good with the booster pack shader

#

also this is the consumable those packs are for

cinder elk
#

lmao you should put the block tales cards in

fallen tendon
#

these are specifically based on roblox gears

#

also the block tales cards are not the correct size

#

i love how i make the background here

stiff locust
#

could probably modify the block tales cards to make them the right size đŸ€”

frosty dock
#

add the mod prefix maybe?

cinder elk
#

s

#

stairs?

autumn coral
#

i have achieved divine comedy

fallen tendon
#

how can you make a second type of seal?

#

that stacks with seals and enhancements but not itself?

edgy reef
#

That would require a bit of work (lovely injection) but yes you can definitely add a new card enhancement type that doesn't stack with another

#

The problem can be boiled down to adding an indicator to the card (such as card.ability.my_special_card_buff).

#

Then just checking for it when doing it's effect (calculation, drawing, stack prevention, etc.).

#

There's technically a bit more than this (like tracking discovery) but that's the jist.

faint yacht
#

...actually, how difficult would it be to add the extra _mods introduced by Talisman to SMODS.eval_this? gold_seal

autumn coral
gaunt thistle
#

idk but that video stressed me out

#

nice work though

autumn coral
#

only ppl who play isaac get it lol

wooden nexus
#

i don't get it

autumn coral
#

there's an isaac item that does basically exactly this but in isaac mechanics and i brought it into balatro

#

here one second

wooden nexus
autumn coral
#

wtf they loop the main theme over it

#

you can't appreciate that yes, the game's music does multiply by like

#

0.25 every time you pick one up

wooden nexus
#

So it just makes everything feel faster?

autumn coral
#

no

#

it makes everything faster

#

it literally makes everything faster

#

and then gives insane stat buffs

wooden nexus
#

so just speeds up the game then gives a buff?

autumn coral
#

no the buffs are different every time

wooden nexus
#

Yeah i'm not getting it, even after watching the video

autumn coral
#

for the first 7, it has a specific set of buffs to apply, and then after that, it picks randomly from those 7 to apply a random temporary buff to chips

#

mine i mean

#

in the game though everyone just likes it because it's REALLY fucking funny to hear him scream gfuel every floor

cinder elk
strong plume
#

Anyone knows why this doesn't compile?

faint yacht
#

...why the wrap of the Joker creation in a function?

strong plume
autumn coral
proven lava
balmy stump
#

what is this modifier? G.GAME.modifiers.flipped_cards

#

does it mean the card is face up or face down?

#

i wish there was more documentation for this game.

#

draw(self, card, layer)

i saw this code in the center api, what does this do exactly?

edgy reef
#

It allows you to control sprite drawing onto a card directly (such as moving a custom soul sprite or drawing a shader).

balmy stump
#

okay

orchid thunder
#

whty is making a config so difficult

hardy viper
#

ah you're streaming in cryptid discord you've figured it out haven't you

orchid thunder
#

kinda

#

i think

true jasper
#

how do it make this not say error in my consumable pack

#

I know it's using localization but idk how to do that

gilded narwhal
thick panther
#

Hey all, I'm looking for some feedback on these deck ideas. What item do you think Sloth should start with? Do these seem fair (The pros and cons are equal/closely equal)?

-- Deck Ideas:
-- - Pride Deck: Start with Money Seed and Director's Cut vouchers. Pride Joker has a 1/4 chance of doing one of the following:
--  1) X0.75 Chips
--  2) X0.75 Mult
--  3) X2 Chips and Mult

-- - Sloth Deck: Start with [something here]. When a hand is played, Sloth Joker has a chance of not scoring that hand.
--      This chance starts at 1/100, but increases by 5 with each consecutive scored hand.
gilded narwhal
#

There's no way this monkey brain strategy works

#

okay now the game just doesn't

#

lol

true jasper
thick panther
weary jungle
#

where is isac guy 😔

#

they would be estatic to know im making pertro

#

also idea, blind increases based on the rarity of the joker being upgraded

#

like common -> uncommon is like 10% increase

#

rare -> legendary is 100% increase

gilded narwhal
weary jungle
#

this guys balatromaxing

weary jungle
cinder elk
#

i wonder if it's possible to like. have cosmetics for the backs of the decks

cinder elk
#

so

#

say you wanna do a red deck run

#

but you like the design of

#

say

#

the zodiac deck

#

and you want to use that card back as a cosmetic

weary jungle
#

card sleeves:

#

but its good idea

#

i like ghost deck

cinder elk
#

i wonderif there's a way to turn off the sleeve effect...

weary jungle
#

how do you make a dictionary again?

fading pier
#

is there a wiki page on the
enhancement_gate property for seals? I tried looking at the github page maybe I missed it somewhere

#

or if that even is a thing. I wanted a joker that would only be available if you had sealed cards

wooden nexus
#

Odd Question: Is there a way for me to treat a suit like another suit?

#

Like how there's smeared joker

olive shoal
#

V simple custom boss blind

true jasper
olive shoal
#

since that handles smeared joker esque stuff i believe

thick panther
wooden nexus
olive shoal
#

:idk: sorry i havent touched enhancement stuff

wooden nexus
#

oh

#

:idk:?

#

I know what idk means but :idk: is new

olive shoal
crisp coral
#

it's usually an inside joke

olive shoal
#

yeah its usually an inside joke

#

do blinds have some variable you can freely modify like cards have the ability table? blind i want to do requires me to track something somehow

crisp coral
#

like if i write :politician: unless you're in this one community you won't know it's for sarcasm

crisp coral
olive shoal
#

ic

autumn coral
#

who @ me

olive shoal
#

@everyone me sorry

autumn coral
#

nobody apparently

#

@weary jungle btw if ur talking about me my pronouns are she/her

#

tyyy

weary jungle
#

what

#

no the other isac guy

autumn coral
#

oh

#

well either way

wooden nexus
#

Trying to figure this out still

crisp coral
#

figure out what

wooden nexus
#

how to make this an enhancement ability

#

i'm just modifying everything

wooden nexus
#

Welp, after playing around, I MAY have to make this a lovely patch

olive shoal
#

if im not mistaken could you not just dod like

#
function old_is_suit = Card.is_suit
function Card:is_suit(suit, bypass, flush)
  if (your code here which changes if its suit or not) then
    return true
  end
  return old_is_suit(suit, bypass, flush)
end```
wooden nexus
olive shoal
#

as a seperate section of code

wooden nexus
#

aight

#

Lemme see if this works

wooden nexus
olive shoal
#

off how

wooden nexus
#

idk it just won't count as a heart

olive shoal
#

if you put print(self.ability.effect == "Heart Card") while thing is a heart card does it print true? ive had issues with "self" being weird before when doing stuff like this

#

you could probably also change the return self.base.suit == suit or suit == "Hearts" to return true and the if self.ability.effect == "Heart Card" and self.base.suit ~= "Hearts" then to like if self.ability.effect == "Heart Card" and suit == "Hearts" then, this isnt as prevalent as an issue but im concerned that its going to override other is_suit stuff unnecessarily if you have it how it currently is

wooden nexus
#

But if suit == "Hearts", wouldn't it check to see if the suit originally is a Heart?

olive shoal
#

im not sure what you mean, the "suit == "Hearts"" bit would check to make sure that the thingsi t asking for is a hearts, itll check anything thats originally the case (like hearts being hearts, stone cards being no suits) in return old_is_suit

wooden nexus
#

I don't want it to check if it's ORIGINALLY a heart

#

but ok

olive shoal
#

and you do not have to but in this snippet you sent me i think you unnecesarily are

#

well, youre checking that its not originally a heart (with self.base.suit ~= hearts) so that you can return that it is a heart later which i think is redundant

wooden nexus
#

well yeah

#

The point of the enhancement if it's another suit then it counts as a heart

#

So maybe i should check if it's the other 3 suits

olive shoal
#

if you have the enhancement on a card that is originally a heart does it count as a heart

wooden nexus
#

i'm gonna be real, idk how to even check that with the print

#

Because every time i play a card, nothing happens

#

and i'm like 90% certain i destroyed my code because i'm stupid to press save before i open balatro

olive shoal
#

does nothing come out of the print? SMOD might override the is_suit method

#

i hope it doesnt but

wooden nexus
#

I've been trying to look at how Familiar does it on their end to no avail

olive shoal
#

by the looks of things that doesnt change what classifies a suit as what i think?

#

i just tried by the way, im not sure what i did to change to make it work or whats different but

local old_is_suit = Card.is_suit
function Card:is_suit(suit, bypass, flush)
    if self.ability.effect == "Lucky Card" and suit == "Hearts" then
        return true
    end
    return old_is_suit(self, suit, bypass, flush)
end
``` makes it work **on lucky cards**, so change the name around from lucky card to heart card ig
#

i feel like it might be an issue with how youre checking for your enhancement since the changes i made functionally shouldnt have affected anything, but im just guessing

wooden nexus
#

Lemme try with my heart card then

#

it must be then

#

i have a weird idea

olive shoal
#

you might need to change the name your checking for to like prefix_key since i know the name stuff is different for modded content

wooden nexus
#

I have another thing that checks for card.config.center_key, could try something like that

olive shoal
#

out of sheer curiosity from a i like hearing about other mods perspective does the heart card enhancement do anything else other than make cards count as hearts

wooden nexus
#

Nope, it just counts as hearts in scoring

#
function Card:is_suit(suit, bypass, flush)
    if self.config.center_key == "m_SCB_heart_enhance" and suit == "Hearts" then
        return true
    end
    return old_is_suit(self, suit, bypass, flush)
end```
#

It works now

#

thanks btw

olive shoal
#

np

wooden nexus
#

gotta check if it works in scoring on something like bloodstone

#

or lusty joker

#

The enhancement is 1/4 btw, I'll have an enhancement for each suit

#

it does btw

#

I may have compatibility stuff, and curious what would happen if it's smeared

olive shoal
#

i assume these enhancements are like something that doesnt appear normally coz youd think youd rather have wild cards in most scenarios

#

oh actually i guess this has the up on wild cards coz its less likely to get disabled by boss blinds

wooden nexus
#

tbh, they're just gonna be like any other enhancement

#

may make it the same amount as their "Turn to suit" versions

olive shoal
#

ic

wooden nexus
#

Maybe I should have it so that it triggers twice for base hearts w/ enhancement? idk

olive shoal
#

this is an incredibly silly idea but itd be interesting if it was like

#

you could put it on a card as a seperate thing to an enhancement

#

i might just be wild cards biggest hater coz id rather have most other enhancements but itd be sort of cool to have an enhanced card which counts as two suits

#

maybe a little strong but ¯_(ツ)_/¯

wooden nexus
raw path
#

if I make a parts of a joker texture transparent or low opacity will it be 'see through' in game?

balmy stump
thorny adder
thorny adder
#

hey chat

#

how can I make my joker sprite work like a legendary joker

#

I have both sprites seperated on my sprite sheet but I dunno the code

shell tangle
thorny adder
#

oh alr

#

its that easy

shell tangle
#

Something not work, or what?

thorny adder
#

ye

#

I think its a problem with my atlas

shell tangle
#

Seems like it, double check that you have .png in the path, your image is saved as a .png rather than any other format, that it's in assets>1x and 2x, and those aren't misspelled.

thorny adder
#

oh shit

#

I forgor the x2

#

lmao

#

thanks

#

yeah it works now

#

lmao

#

:3

#

@dim ice

dim ice
#

yippee!

thorny adder
#

:D

#

its sad tho

dim ice
#

how ironic

thorny adder
#

hey

#

chat

#

can I make it so that

#

the background is different

#

based on a stat

#

so that the background changes from where I got the item

shell tangle
#

It's completely possible, but you might want to try modding a few other items and take a few smaller steps before trying to jump straight into that.

thorny adder
#

but just knowing its possible changes the way we are making the mod

#

so

#

thanks

#

so not like that

#

:3

#

lul

wintry solar
#

No, not like that

#

You have to change the position afterwards

thorny adder
#

ah

thorny adder
#

pretty please

lofty elm
#

Hello

violet void
#
[patches.pattern]
target = "functions/state_events.lua"
pattern = '''
for i=1, #scoring_hand do
    --Highlight all the cards used in scoring and play a sound indicating highlight
    highlight_card(scoring_hand[i],(i-0.999)/5,'up')
end
delay(0.2)
'''
position = "after"
payload = '''
if next(find_joker("Splish Splosh")) then
    print("next is splishsplosh")
    utils.unscore_cards(G.play.cards, scoring_hand)
    print("should have unscored hands")

    for i=1, #G.play.cards do
        scoring_hand[i] = G.play.cards[i]
    end
end
'''
match_indent = true```

I've made this lovely.toml to update the G.evaluate function
And altho this is added before mods are even loaded, the code is run after a hand is played so it should work no? 

It doesn't find my Joker even if I have it equipped

```next(find_joker("Splish Splosh"))```

did I write something incorrectly
thorny adder
frosty dock
#

you shouldn't use find_joker, use SMODS.find_card with the key instead

thorny adder
#

hey @frosty dock

#

can u help me pretty please

#

:3

#

actually I just need to know

#

if that's somthing I can make later

#

add a button here

frosty dock
#

yeah, totally possible. But UI isn't the easiest to deal with starting out

thorny adder
#

nah not for now

#

for later

faint yacht
#

Back to overthinking... but this time, pondering the Talisman Lovely patches and their "reproduction" in Steamodded itself. fool

violet void
faint yacht
#

j_modprefix_key.

violet void
#

yeah that, ty

faint yacht
#

Backwards slashes prevent *formatting* from _happening_.

#

@frosty dock Do you think Talisman's extra operations on chips and mult could be feasibly integrated into SMODS.eval_this() using similiar additions that its' Lovely patches do? Just curious. đŸ€”

frosty dock
#

yeah totally

#

talisman could patch that in

#

or rather hook, because load patches are broken in lovely still

thorny adder
#

ayyyyy

#

isnt that cool @autumn coral

faint yacht
violet void
frosty dock
#

i don't know how you're even defining that function?

violet void
# frosty dock i don't know how you're even defining that function?

utils


function unscore_cards(play_cards, scoring_hand)
    -- Loop through play_cards
    for _, card in ipairs(play_cards) do
        -- If the card is not in scoring_hand, mark it as unscored
        if not contains(scoring_hand, card) then
            card.unscored = true
        end
    end
end

return utils```

main
```utils = dofile(SMODS.current_mod.path .. "/MyJokers-utils.lua")```
faint yacht
#

...you've defined a global function not as part of the returned table. Maybe function utils.unscore_cards?

violet void
#

that was supposed to be there

#

opsie

cerulean rose
#

interested in adding a new modification for playing cards, how would that work?

shell tangle
cerulean rose
#

that could be combined with an enhancement, edition, and seal

frosty dock
#

not sure if that fits what you need?

shell tangle
#

Yeah, that's what I was thinking, and then if that doesn't work, it'd be getting into SMODS.GameObject:extend for a new type of object, right? Or does SMODS.ObjectType work similarly? It's new to me, haven't really looked at it.

frosty dock
#

more likely GameObject, but that doesn't give you the integration of whatever modification you're adding, so you'd probably have to patch all sorts of places for initializing card values, drawing textures etc.

shell tangle
#

Stickers can already overlap with each other, unlike those other three, so stickers are probably the ideal way to go for it no matter what, if the aim is just to be able to kind of function as an enhancement that doesn't clash with other enhancements.

cerulean rose
#

i only want one of this type to be allowed at a time

#

kind of like how seals clash with each other

#

also ideally it would have its own collection tab/sub-menu/whatever

faint yacht
#

So something like the "Rigged" status from Cryptid's Code Cards.

cerulean rose
#

no, that's a sticker

faint yacht
#

I didn't say exactly like it, but I got what you meant.

shell tangle
#

I think you're in for a rough time either way, the two ways I can see going about it is either one, piggybacking off of stickers, and adding some weird lovely patches to make certain stickers check for each other, and also try to figure out the collection,
Or, make a new object type from scratch, and you'll have to scour the base game code for a ton of lovely patches and basically 90% mirror whatever code you can find on seals or enhancements or whatever.

frosty dock
#

i mean you can make stickers incompatible with each other / replace each other

shell tangle
#

Is replacing stickers with other stickers a feature? Never knew, neat. Still leaves the collection issue to solve, but that would've been an issue in any case anyways.

cerulean rose
#

ah, whatever
i don't need it that bad

faint yacht
frosty dock
shell tangle
faint yacht
#

All it took is replacement of the function with just a couple of extra lines from the lovely.toml of Talisman.

cerulean rose
#

how do i check for the player using a specific deck?

hazy acorn
#

Im getting rly confused tryna do this, i just wanna make the suit textures into the ones i made with a steammodded mod, im a lil stupid, sorry to bother but would anyone be able to help with this?

cerulean rose
#

you mean replace existing suits or create a new suit?

hazy acorn
#

just replacing the textures

#

I have this, and i dont wanna just, inject it into the exe

#

basically

cerulean rose
fallen tendon
cerulean rose
#

nah this is just the negative ranks from dndg

fallen tendon
#

Ok

#

They just look kinda like if those weird voodoo mobile games ever were a card game

#

Idk why

hazy acorn
#

these both seem fairly daughting at a glace, writing the lua is the thing im not sure about

#

would you recommend one over the other?

wintry solar
#

Malverk doesn’t handle suit teztures

hazy acorn
#

Lite it is then giggle

analog atlas
#

How can I create a random negative joker in this scenario?

calculate = function(self,card,context)
        if context.setting_blind then
            local new_card = create_card('Joker', G.jokers, nil,nil,nil,nil,'j_joker')
            new_card:add_to_deck()
            G.jokers:emplace(new_card)
        end
    end,
faint yacht
#

new_card:set_edition({negative = true}, true)

analog atlas
cerulean rose
#

remove 'j_joker' from your call

cerulean rose
#

context.before doesn't work for enhancements?

analog atlas
#

Is there a good documentation besides the steammodded one on github?

teal estuary
#

do examples count?

cerulean rose
#

referencing the balatro source or other mods's source is often helpful

teal estuary
#

because steammodded has example mods

autumn coral
fading pier
#

with debug plus can you spawn a joker in a shop or just your hand?

violet void
#

there's the preorder mod that lets you pick jokers in the shop afaik

hardy viper
thorny adder
autumn coral
#

i just woek up lol

wintry swallow
#

Can I give a new blind a single new image or do I have to use the ANIMATION_ATLAS thing? Tried a normal atlas for it and it's ignored

balmy stump
#

what does set_ranks() do

analog atlas
#

What do we think?

balmy stump
#

looks kinda weird whats its name and ability

violet void
#

very stern

analog atlas
#

Sergeant, creates a random negative card for each blind, perishes after 3-5 rounds

robust sapphire
#

does balatro run on a ui library or does it literally just use the whole love.mousepressed and then checking if it’s within the boundary of the element

mellow sable
#

it just runs on Love2D

robust sapphire
analog pilot
#

are there any tutorials or documents that would guide you through how to mod balatro? I’ve never modded a game before and I haven’t done anything with lua in ages (and when I did it was roblox LOL)

robust sapphire
analog pilot
#

I don’t know what that means 💔

robust sapphire
#

it’s basically what modding library u want to use

analog pilot
#

ah okay

robust sapphire
#

each one has documentation but to get a good reference u should look at projects

mellow sable
analog pilot
#

yeah I usually learn better by example than anything

mellow sable
#

a lot of those are moreso library files

robust sapphire
#

yeah me personally i’m just writing from source and recompiling
. would not recommend

#

there’s a lot of random limits

robust sapphire
#

those are the most popular

analog pilot
#

I have heard of steamodded yeah

#

that’s what most mods for balatro use right?

robust sapphire
#

the documentation is pretty decent and there’s more projects to reference

analog pilot
#

neat

#

when im able I’ll check that out

#

I’ve been coming up with some joker ideas and wanted to implement them and see how they fare but I wasn’t sure where to start with the actual modding part of the process lol

#

thanks for the help :D

robust sapphire
#

some people are different

hardy viper
#

100% of modern mods use lovely, the vast majority of which use steamodded

#

it's perfectly fine to not use steamodded if you don't necessarily need it but with a few special exemptions you should always use steamodded

analog atlas
#

Where can I find the source for the base game's jokers?

hardy viper
#

and if you're just adding basic jokers, lua knowledge isn't necessarily needed but it helps a lot

hardy viper
#

under P_CENTERS

#

the behavior of the vanilla jokers is hardcoded into the calculation functions though

analog pilot
analog atlas
#

So how can I check the amount of jokers I have?

teal estuary
#

im still learning stuff myself but i think i've got the basic stuff down

hardy viper
robust sapphire
#

yeah i was going to say just check the length of the array

#

but idk if he was talking about in hand or in total

hardy viper
#

?

#

he's talking about jokers not playing cards

robust sapphire
# hardy viper ?

total number of jokers in the game total or currently equipped jokers

#

that’s what i meant

hardy viper
#

ah

#

yeah idk when you'd ever need the former

robust sapphire
#

idk ui mod

hardy viper
#

i guess for a custom collection page yea

#

was somewhat relevant for tmj

robust sapphire
#

wait wait wait balatro doesn’t use _G

hardy viper
#

it does

#

it's lua you always have _G

#

unless you overwrite it for some reason

robust sapphire
hardy viper
#

but all the balatro related stuff is under _G.G

robust sapphire
#

OHHH

#

i seeeee

#

it wasn’t adding up in my head 😭

hardy viper
#

ya makes sense G and _G are very similar

#

probably intentional

#

but who knows thunk

robust sapphire
#

bro did NOT follow the basic naming rules

#

i mean who cares ig when u sell 5 million copies in a month

hardy viper
robust sapphire
hardy viper
#

it does a very good job at that

robust sapphire
#

like i wouldn’t say local x for calculating the sum you would say local sum

hardy viper
#

when you see G.foo you know it's obviously something global

teal estuary
robust sapphire
hardy viper
robust sapphire
#

it’s just weird cause u would have to do local G = _G.G

hardy viper
#

mod support has never and probably will never be a thunk thing

robust sapphire
hardy viper
earnest zealot
hardy viper
#

also wdym have to

#

you don't have to do that at all

#

ohh wait luau brainrot yeah

robust sapphire
#

oh wait do u not have to 😭

mellow sable
robust sapphire
#

are global vars not array calls 😭

hardy viper
#

in normal lua _G is indexed as a backup incase a matching local variable isn't found

#

and upvalue names are retained

earnest zealot
hardy viper
#

which lets you do that

earnest zealot
#

I’ll add some m next time I can

hardy viper
#

i get why luau doesn't do that because it's more efficient

mellow sable
robust sapphire
mellow sable
#

naming the variables the wrong thing will make people think the mod is for a different game

hardy viper
#

local indexing is handled in C, and __index only comes into play if you set it in _G

robust sapphire
robust sapphire
#

thanks for explaining that

#

that makes more sense

robust sapphire
hardy viper
#

if local indexing happened in lua space everything would be like 10 times slower or something ridiculous

#

high level language moment ...

hardy viper
#

how are you gonna cope with not being able to task.wait()

robust sapphire
#

dude no shit

#

am i allowed to cuss?

#

anyways

hardy viper
#

lol

robust sapphire
#

i was using love right and tried to use task.wait()

hardy viper
robust sapphire
#

and task.yield()

hardy viper
#

forced to handle coroutine stuff yourself.. the horrors

robust sapphire
#

wait is there not coroutine.create

hardy viper
#

well i guess it's not really coroutines in luau

robust sapphire
#

i thought there was

frosty dock
#

"luau"

hardy viper
hardy viper
#

luau

frosty dock
#

how would you even pronounce that

#

loo-aw?

hardy viper
hardy viper
robust sapphire
frosty dock
#

fair

#

I guess my brain is too infested my the French language for that

hardy viper
thick panther
#

Does lua have switch statements?

hardy viper
#

naw

#

unfortunately not

#

how lua programming feels with no continue 💔

robust sapphire
hardy viper
#

multithreading without the multiple threads part yawn yawn BOOOOORING

#

love2d does have multithreading

#

thankfully

analog atlas
#
calculate = function(self,card,context)
        local x = 1
        if context.joker_main then
            for i = 1, #G.jokers.cards do
                if G.jokers.cards[i].ability.set == 'Joker' then x = x + 0.5 end
            end
            return {
                card = card,
                Xmult_mod = x * card.ability.extra.Xmult,
                message = 'X' .. card.ability.extra.Xmult,
                colour = G.C.MULT
            }
        end
    end,

Its returning a x0 mult

hardy viper
#

coroutines are sorta useful outside of what they're claimed to be useful for in lua docs

hardy viper
robust sapphire
analog atlas
teal estuary
#

thunk moment