#💻・modding-dev

1 messages · Page 79 of 1

teal estuary
#

oooh, fair enough

#

so take out the repetition line, and stuff it... somewhere else?

wintry solar
#

I'd use card_eval_status_text for your message and then have the effect.repetitions = ...

#

and see if it retriggers

teal estuary
#

just replace message with card_eval_status_text?

wintry solar
#

there's a few parameters, look up some usage of it in the game code

teal estuary
#

this alright?

#

im gonna be honest, no clue what that extra, nil, nil, is

#

also need to change that self to card

wintry solar
#

no

#

take the effect line out of the eval_this function

#

in fact

#

take it all out the eval_this function

teal estuary
#

sure

#

i've tried a couple places, is there something specific i should put all that in?

wintry solar
#

just in the calc function

teal estuary
# wintry solar just in the calc function

sorry, i know this is a stupid question but is there somewhere specific, in the calculate function? because either the ==, , or something else is throwing errors at me

#

tried above the local left, right, below it, inside the break, and it just does not like it 😭

#

(a better way to put it, i tried these)

wintry solar
#

Where ever you had the return before

#

Oh it’s single = too

#

You’re setting a value, not comparing

teal estuary
#

ooh, okay

wintry solar
#

you are over 3 months out of date

#

update your smods dude

teal estuary
#

i presume you need to download it the git way to get the most recent one? because i got mine from the alpha download button 😭

tepid crow
#

you don't need git

#

but it's an easy way to update

#

also, Aure was working on an internal updater so I'm excited for that 👀

teal estuary
tepid crow
#

the alpha download button

tepid crow
#

I'm assuming you downloaded it about 3 months ago

teal estuary
#

8 days ago GOODLORDWHATISHAPPENINGINTHERE

tepid crow
#

🤨

#

what link did you use?

teal estuary
#

that one

tepid crow
#

well, that is the correct link

teal estuary
#

when unzipping the links you are giving me, its just saying "do you want to replace the [existing steamodded folder] files?"

wintry solar
#

did you actually install what you downloaded?

tepid crow
#

don't ever do the "replacing" of files when updating mods/etc

#

completely delete the old folder, drag the new one in

teal estuary
#

this is the copy thats in my documents, not the one thats in my balatro mods folder 😭

#

but sure

#

i've redownloaded it, if it does change the version i will be surprised

tepid crow
#

you can see the version in the top right on the main menu

teal estuary
#

thats new

#

OH

#

right

#

im stupid

#

forgot to take the folder out 😭

#

is this the newest version? raisedcateyebrow

wintry solar
#

yes

tepid crow
#

yea!

teal estuary
#

neat, new error time!

#

but ty

tepid crow
#

you probably updated something incorrectly last time 😵‍💫

teal estuary
#

somehow, but yeah sounds like me 😭

#

it happened after playing my enhanced cards, to be specific

#

could it be because im missing a not context.repition_only?

wintry solar
#

possibly yeah

teal estuary
#

i'll try it

#

same error, damn

wintry solar
#

oh wait

#

I think you need context.repetition instead of context.individual

teal estuary
#

that would make sense

#

nope, same error still

#

(for reference)

shell timber
#

oh @slow ocean can i use your oddity pack art for a rewrite of it for 1.0.0

wintry solar
#

move those two lines near the end up above one end

#

you could really do with learning to indent properly too

#

it'd make it much easier for you to read your code

teal estuary
#

good point 😭

#

it doesnt crash, but now nothing happens at all

#

they just play as if they had no enhancement

wintry solar
#

then perhaps enhancements dont support repetition

teal estuary
#

hm, true

#

that'd be a bummer, but not much to do about it 😭

frosty dock
#

any way to get the latest commit hash and/or modified date of a branch on a github repo without git (since at least some users won't have it installed on their systems and I don't plan to make it a requirement)? I'd prefer something that isn't the github api, unauthenticated ratelimits on there are horrendous

#

there's conditional requests which would only have requests on the repos that actually changed count, but I could see limits being exceeded even with that, if one were to have a large mod pack that's fallen a couple weeks out of date

shell timber
#

the remote hash?

#

not the currently downlloaded one?

frosty dock
#

yeah, the remote hash

#

I'd have to store the local one for comparison either way since I can't assume there's a git repo at all

tepid crow
#

balatro mod index has a "last updated" column, that I think Eremel made?

#

I'm not sure how it works though, maybe it uses github api under the hood

wintry solar
#

it doesn't

shell timber
#

is there a way to run a piece of code after everything else has loaded

wintry solar
#

it just scrapes the page

shell timber
#

to add "null oddities" if oddities of a certain rarity aren't registered

frosty dock
#

oh i guess i could scrape pages but idk how slow that is

tepid crow
shell timber
#

the oddity api itself doesn't have any content

tepid crow
#

ah, I see

shell timber
#

actually you know what you get five jimbos

#

if you have just oddityapi installed thats all you deserve

frigid flame
#

would you rather have

#

1 Jimbo

#

1 Jimbo

#

1 Jimbo

#

1 Jimbo

#

or 1 Jimbo?

shell timber
#

JimboPhone™️
Summons a Joker

tepid crow
shell timber
#

anyways that was surprisingly easy with the 1.0.0 stuff

nocturne garnet
#

do upgraded packs give jokers or is it just consumeables

wintry solar
#

Wouldn’t you just not spawn the packs if the pool is empty?

shell timber
#

oddities are a new consumeable type

nocturne garnet
#

oh i thought it was just modded things

shell timber
#

they were first made a while ago but the mod got cancelled and the creator left the server

nocturne garnet
#

damn

limpid flint
#

What? You mean oddity?

shell timber
#

anyways oddities should be working now

frosty dock
#

scraping the page works but uh 😭

tepid sky
frosty dock
#

wait was it running both 💀

#

it was, don't mind me

tepid crow
#

is SMODS.fetch_index for all installed mods?

frosty dock
#

it grabs the entire index repo

tepid crow
frosty dock
#

yeah

#

anyways just scraping the hash and comparing turns out faster than using git to tell you you're already up to date

tepid crow
#

that's pretty fast then

#

though that might change if the amount of mods in the index start increasing by a factor ~100

wintry solar
#

That sounds much better than my cobbled together scraping

frosty dock
#

the index files are still really small, so I doubt that'd be an issue. I'm more worried about large mod lists

#

checking for updates on ~100 mods for 500ms each is still pretty bad

tepid crow
#

yeah I'm assuming/hoping most of the overhead is starting/ending the connection etc

tepid crow
frosty dock
#

surely

tepid crow
#

surely it'd be as easy as that with no hidden drawbacks or issues 😏

frosty dock
#

maybe I can come up with something else to query that keeps track of updates/commits on each mod in the index and just sends that down whenever it's needed. I'm sure a lot of the overhead is just repeat connections

tepid crow
#

I mean yeah, some kind of server that can cache the latest version id of the mods would be best

#

but that would also require a server

#

unless github actions can do something like that 😬

frosty dock
#

never say never

#

if a static file on github that gets changed every so often can be considered a cache, that is

#

might be too spammy

tepid crow
#

yeah it's not... great

frosty dock
#

🤔

wintry solar
#

think we're getting somewhere

limpid flint
#

<@&1133519078540185692> again

livid scroll
#

Got to all servers just did clear messages on ban

limpid flint
#

thanks my god

hoary moss
#

well, now that I have free time, I am able to work on the mod I wanted to make for Balatro. However, there is one small problem during the time that I was not free. I completely forgot how to code in lua.

limpid wing
loud citrus
#

does anyone know my mistake?

tepid crow
#

I think localization.lua has to return something?

#

or at least have a return statement

hardy viper
#

why is there an smods function for that isn't loadfile just a luajit function

hardy viper
tepid crow
#

SMODS does that for you

hardy viper
#

ah hm

#

maybe SMODS.load_file actually works like a dofile and executes the file instead of just compiling it into a function?

tepid crow
#

not sure what you mean, but if your final conclusion is "don't do the function call at the end", all the examples do include it (stuff like SMODS.load_file("utils.lua")())

hardy viper
#

odd

loud citrus
#

as you can see that is all i have for loading

tepid crow
loud citrus
#

OH

hardy viper
tepid crow
#

also a good question

hardy viper
#

probably just don't use SMODS.load_file here then idk

#

if normal loadfile doesn't work either then there's an issue

edgy reef
#

localization is done automatically as long as it's in a localization folder and the name is default.lua or a valid language (e.x. en-us.lua).

#

json with the same names also works

#

No need to do it yourself.

loud citrus
#

oh

tepid crow
#

yeah, are you trying to actually make a localization file? cuz steamodded will load that for you if properly located+named

loud citrus
#

the reason i want to do it myself is because all the content can be turned on or off and i'm pretty sure invalid localizations can cause issues

#

correct me if i'm wrong

tepid crow
#

localization won't cause issues if it goes unused if that's what you mean

loud citrus
#

i don't know what this is referring to 😭

#

wait i fixed it :)

#

now i know what it's talking about

loud citrus
tepid crow
#

use the steamodded assigned key

#

[type]_[mod prefix]_[original key]

#

steamodded should really scream at you somewhere that you cannot use the original key to find the joker again

loud citrus
#

it's not though, the description just doesn't show

loud citrus
tepid crow
#

for a mod named "testing", a joker created with the original key example has the steamodded key of j_test_example iirc

#

also you don't need to do all the {["key"] = value, ...} stuff, you should be able to do {key = value, ...}

loud citrus
#

is this right?

#

oddities is my mod

tepid crow
#

did you define a mod prefix in the steamodded header?
If you didn't the prefix is the first 4 chars lowercased by default iirc, in your case oddi

#

which would make the steamodded key for your joker j_oddi_squareroot

#

you should be able to confirm that by printing the center too I think 🤔

loud citrus
tepid crow
#

your mod has a prefix

#

you can define a custom one, or use the "by default" one

#

the default one is the first 4 letters of your id lowercased, yes

loud citrus
tepid crow
#

that's the ID it takes the first 4 chars from

#

if you want a custom prefix, it's --- PREFIX: [pref]

loud citrus
#

i can get fancy

tepid crow
#

I'm not sure if there's an artificial limit on it, you'd have to check steamodded's code for that

#

I think you can just make it anything you want though

surreal marsh
umbral zodiac
loud citrus
#

is this every base game joker that can give flat mult?

surreal marsh
loud citrus
lusty epoch
#

Scholar

#

and space joker

loud citrus
#

space is fine

frigid flame
#

fibonacci

loud citrus
#

AH

#

thank you

frigid flame
#

onyx agate

#

i think those are the two that you missed

hybrid iris
#

came back to this a day later

#

genuinely dont know what the error is

surreal marsh
#

use card.ability instead of self.ability

hybrid iris
#

oh

#

,,,😭

#

sdfkjhgksdjhf

#

i cant believe that was it

#

sdkfjhsdfkjh

surreal marsh
#

🥹

hybrid iris
#

thank you so much

#

ksdfjhskdfjh

surreal marsh
#

yw

crisp coral
#

why is lua Bad

surreal marsh
#

what's this

crisp coral
#

sorting hands

surreal marsh
#

by rank?

crisp coral
#

mhm

#

to_proper_rank returns the rank id

tepid sky
#

omfg something is hella slow about my game 😭

limpid flint
#

Are there any good way to batch convert PNG files into transparent background

brisk rose
#

For the first, imagemagick can do it, for the second, you're gonna need an ai tool of some sort

#

well there is wiggle room if it isn't pixel-perfect for an algorithmic approach, aka imagemagick

limpid flint
#

I'm not quite sure, they are ripped from unity assets

brisk rose
limpid flint
#

Yeah they were txt files but extracted as PNG files

shell timber
#

ok that actually worked i'm shocked

brisk rose
#

becasue I'm lazy

#

that sort of thing actually works surprisingly well tbh

brisk rose
#

what purpose does it serve?

shell timber
#

well this one's just a common test oddity

#

which i will probably keep

#

it's better than the $1 oddity which used to exist

limpid flint
#

I tried, but there's a white border around black lines

brisk rose
#

or you could learn imagemagick's commands yourself

#

I've done it befrore, before chatgpt existed

limpid flint
#

much better

#

I...think?

brisk rose
#

oh I see the problem

#

tell it the noise is in the background andwhat you want is very nearly pure black with sharp edges

#

vyt ut dies kiij oretty decebt even as is bh

surreal marsh
limpid flint
#

I think it's a twitch problem

cursive ocean
#

Is there a way to dynamically set the loc_txt values for a jimbo while also using variables and formatting? I'm testing out ways to make tiered jimbos without having to make new jimmies for every tier.

This sort of works, but doesn't work with nested variables and formatting

loc_txt = {
        name = 'My Jimmy',
        text = {
            "#1#",
            "#2#"
        }
    },
    config = {extra = { 
        tier = 2, 
        maxTier = 2,
        txtTier1 = "Hello",
        txtTier2 = "Goodbye",
    }},
    loc_vars = function(self, info_queue, card)
        return {vars = { self.config.extra["txtTier" .. self.config.extra.tier], 'World!' }} 
    end,
frosty dock
#

you can have multiple localization entries (easiest to set up with loc files) and pass a key field in the return value of loc_vars

glossy stone
#

p.s. my mods will be on hold until I pull burnice kthxbai

crisp coral
#

LMAO

#

and then he hit hard pity and lose the 5050...

glossy stone
#

I am never to be seen in this server again.

tidal edge
#

looking to code a sort of

#

"wild card for ranks"

#

has this already been achieved

#

basically an enhancement that counts as any rank

brisk rose
frosty dock
#

basically that includes coming up with a better straights algorithm

#

and rework a bunch of other parts of that game that rely on cards having single ranks

tepid sky
#

Enhancement stacking?

frosty dock
#

tricky if it goes beyond stacking the same enhancement (which can often be done by modifying ability values), given it's the same as jokers structurally

tepid sky
#

I'll see anyway

brisk rose
#

reurposed rather

frosty dock
#

I haven't actually looked at that code, but that very much seems possible

#

though perhaps not as smoothly, there's a lot of explicit checking for specific enhancements via ability.effect

tidal edge
#

damn

#

just found out how wild cards really work

#

didnt expect that

frosty dock
#

it's stupidly hardcoded, yes

brisk rose
#

what x cards did was just be the rank that got you the best hand, idk how they managed that, seems like complicated math, bordering on simulations

#

but what wild cards do is just be all suits at once

#

in practice

#

idk the code

crisp coral
#

wild card always return true on any suit check with is_suit

opal spade
# brisk rose does that mean that infinitefusion code could be used?

the way infinifusion does things is by impersonating every card within itself and running whatever relevant function it needs multiple times, idk how that could be implemented for ranks considering most of what the game does with cards is done outside of the card itself

tepid sky
#

Manually?

brisk rose
#

not the rank one

tepid sky
#

Like all possible combinations lol

opal spade
#

ah enhancements
more likely but theres still a lot of code that would break bcos it checks outside of the card code

brisk rose
#

so support would be limited

opal spade
cursive ocean
#

I still cannot get the localization to work -_- let me sanity check it

I have my jimbo defined in jokers/jimmy.lua, with key = "jimmy"

My mod header is

--- STEAMODDED HEADER
--- MOD_NAME: DogMod
--- MOD_ID: dogmod
--- MOD_AUTHOR: [dog]
--- DISPLAY_NAME: DogMod
--- PREFIX: dogmod

I define a key before the jimbo is loaded

G.localization.descriptions.Joker.j_dogmod_jimmy = {
    name = "Hello",
    text = {
        "Cruel world",
    }
}

Should the jimbo now be automatically populated with these values? I can't get the name or description to appear. It works if I manually reference the key using localize

opal spade
brisk rose
opal spade
tidal edge
#

has anyone made an smods glass card

cursive ocean
tepid sky
brisk rose
#

for like small mods I mean

crisp coral
#

how did you define it in default.lua?

brisk rose
#

for big mods I get it

tepid sky
#

Just spitting out random ideas

cursive ocean
crisp coral
#

well that should work

maiden phoenix
#

What's your mod prefix and your joker key?

opal spade
cursive ocean
#
SMODS.Joker({
    key = "jimmy",
    atlas = "jokers",
    pos = {x = 0, y = 0},
    rarity = 2,
    cost = 7,
    unlocked = true,
    discovered = true,
    blueprint_compat = false,
    eternal_compat = true,
    perishable_compat = true,
    config = {
    extra = { 
        foo = 1
    }},
    loc_vars = function(self, info_queue, card)
        return {vars = { "world" }} 
    end,
    calculate = function(self, card, context)
        print("Hello Jimmy")
    end -- end calculate 
})
main.lua
--- STEAMODDED HEADER
--- MOD_NAME: DogMod
--- MOD_ID: dogmod
--- MOD_AUTHOR: [dog]
--- DISPLAY_NAME: DogMod
--- PREFIX: dogmod
#

Yeah im just trying to get something to load somehow

brisk rose
crisp coral
#

loc_txt still exists yes but it's better to keep things organized

brisk rose
#

I guess my sense of 'having everything in the same damn file I can scroll through' is a lot stronger than my sense of organization.

crisp coral
#

id die if i did that

#

(2k lines in main.lua and another 2k in localization)

opal spade
cursive ocean
#

I'm close to trying a fresh install of everything

tepid sky
brisk rose
#

idk man, if I'm defining jokers I just want every bit of code for the joker to be in one place if at all possible

#

Imight not have done so yet

cursive ocean
#

But it's weird, cus the same structure works in other mods I've installed

crisp coral
#

can you send your entire file

brisk rose
crisp coral
#

and how does it actually look ingame?

brisk rose
#

also, lmfao at this

opal spade
#

its scary

tidal edge
brisk rose
#

my vocabluary can be odd

#

apperently odd enough to false positive the automod pretty regularly

tidal edge
#

you cant swear per the rules but

#

the automod doesnt stop you

#

if you say fuck

brisk rose
#

you can say fuck and shit and stuff

#

just not in some contexts

crisp coral
#

it uses the default discord automod blacklist

maiden phoenix
#

What the fuck don't fucking swear in this fucking safe space

crisp coral
#

so normal swearing is fine but anything remotely nsfw is gone

opal spade
#

normal untargeted swearing

tidal edge
#

hwo does

#

coding for enhancements work

opal spade
tidal edge
#

like everything i've seen so far for the enhancements just

#

an effect in config

#

and no function for anything else

opal spade
#

there's a calculate

#

there are also various tags you can turn on to give the card certain effects

maiden phoenix
#

SMOD has examples iirc?

opal spade
#

like no_rank, no_suit and always_scores

brisk rose
maiden phoenix
#

That or check Ortalab

brisk rose
tidal edge
#

uh

brisk rose
#

and sorry for the ping

tidal edge
#

what do you put in the bracketes

opal spade
cursive ocean
cursive ocean
tidal edge
#

so i made this abomination

crisp coral
#

why the fuck was i pinged three times-

#

oh

opal spade
brisk rose
tidal edge
crisp coral
#

that makes four

#

ffs

brisk rose
#

tbh we shouldn't know now that it's no longer in their name

#

like.... it made sense then

opal spade
tidal edge
#

i didnt even know people cared about pings ngl

brisk rose
#

now you just have to remember or guess

tidal edge
#

its probably because they dont know they can disable the sound

opal spade
crisp coral
#

i just want a funny name without sacrificing half the letters man :c

brisk rose
#

it's in your bio at least, so that's smth

cursive ocean
#

Ah shit

crisp coral
brisk rose
#

but yeah i just... don't usually check that

#

I like pings though personally because this is the only server I give a shit about and I like being responded to

#

lmfao

#

even if it's irrelevent nonsense

tidal edge
crisp coral
brisk rose
brisk rose
tidal edge
#

anyway my policy with pings is

#

only check them if i care

#

i dont know how i choose if i care i just do

cursive ocean
#

thanks anyway..! ill figure it out aaaat some point

brisk rose
#

seems to be fine for your usecase

crisp coral
#

sanity check, what version of steamodded are you on

tidal edge
#

it works

#

kind of

#

it adds the mult and kills itself

#

but for some reason

#

it also kills

#

all other instances of the card

#

if i play an abstract 6; it kills itself

#

and all other abstract 6's held in hand

#

for some reason

cursive ocean
#

Balatro Version: 1.0.1g-FULL
Modded Version: 1.0.0~ALPHA-1012b-STEAMODDED
Love2D Version: 11.5.0
Lovely Version: 0.5.0-beta7

brisk rose
tidal edge
brisk rose
#

it's a guess

#

it seems to not only be triggering the calc function on play

crisp coral
#

thennn i'm stumped

brisk rose
#

beta 6 seems to be the one that works as expected

opal spade
#

those are the three contexts enhancements calc

brisk rose
#

might be the issue

tidal edge
opal spade
#

what are you trying to do there?

brisk rose
#

have the card destroy itself but not other intstances therof held in hand

tidal edge
#

this

#

gives mult then has a 75% chance to kill itself

opal spade
#

card destruction is handled outside of the enhancement code

tidal edge
cursive ocean
opal spade
#

do the check for your destruction effect then append the card to the cards_destroyed

wintry solar
#

oh I said I'd check out this localisation error the other day, lemme look now

brisk rose
wintry solar
#

it works?

brisk rose
#

dog is on beta 7

wintry solar
#

yeah

brisk rose
#

so I think i was right about the lovely ver

cursive ocean
#

I just got it working O_O

maiden phoenix
#

Gj

opal spade
crisp coral
#

but i'm using a different ver of lovely so i wouldn't know

brisk rose
#

it really really shouldn't, but it has bizzare effects from what I've seen

maiden phoenix
#

Im staying on 6 because its the most stable one currently

wintry solar
maiden phoenix
#

Brb telling Cryptid to add a Joker that makes 7s turns into 6s and call it "Lovely" balatrojoker

brisk rose
#

I presume this can be done without a lovely patch if desired

opal spade
cursive ocean
#

it works but i dont know why yet 😄 it didnt work for me on the latest push to git at least. very strange.. ill have to reproduce and do a little postmortem

wintry solar
#

all I changed with what you sent me on git is the header should read PREFIX rather than MOD_PREFIX

crisp coral
#

ooh did not catch that

wintry solar
#

but the version you posted here had that changed already

brisk rose
cursive ocean
#

i thought i tried that ;_; been staring myself blind on this. i thought maybe it now was a conflict between the mod id and prefix

shell timber
brisk rose
wintry solar
#

smods is intended to be used alongside lovely

crisp coral
#

ODDITYAPI 2 WOOOOOOOOOOOO

brisk rose
#

and enhanced cards destroying themselves is vanillia behavior

wintry solar
#

yeah but vanilla is hard coded in all sorts of ways

opal spade
crisp coral
#

i do try not to use lovely in my mods, but some stuff just gotta be patched with lovely otherwise it's gonna be a reimplementation mess

wintry solar
#

it's a fairly simple lovely patch too

shell timber
#

steamodded requires lovely to be installed

brisk rose
crisp coral
shell timber
#

also wow

brisk rose
#

though ofc lovely isn't an api exactly I know

#

it's a regex-like patcher

opal spade
crisp coral
#

lmaoo

wintry solar
#

we're getting closer 👀

brisk rose
#

well if I made a mod, it'd probably just add objects like jokers, tarots, enhancements, and the like, all of which afaik can be done without lovely. Maybe by putting vanillia code in a steamodded mod, but afaik that still works just fine

#

even if 'bad form'

brisk rose
wintry solar
brisk rose
opal spade
#

i wish i had more time on my hands rn bcos i have an idea of how i could implement so many things but i have too much to do elsewhere

brisk rose
#

ofc if I wanted an idea that needed a lovely patch I'd just do one

#

I just would avoid it otherwise

opal spade
#

speaking of lovely - how does the priority work anyway?
i never figured it out and i definitely should

shell timber
#

it just determines the order the patches run in

opal spade
#

yeah but like is it lowest first or highest first

shell timber
#

lowest first

#

i'd assume

crisp coral
#

lowest first but never negative

#

iirc

#

so you can't really force your patch to go first because everyone uses 0

shell timber
#

i could swear it was an i32 now

opal spade
#

i need to double check steamodded's lovely files bcos i never seem to be able to patch the smods lines

brisk rose
# brisk rose I just would avoid it otherwise

I do think that over time, steamodded should add support for things that currently need lovely, because well... it just seems like how it should be, being the main modding api. It uses lovely to load but shouldn't make its users use lovely themselves ideally (practically I get that's still a long way off, I mean it more in a philophical sense for something to shoot for)

wintry solar
#

you should be able to hit the smods patches with a priority of 1

crisp coral
opal spade
#

speaking of steamodded and lovely, wouldnt it make sense to patch overrides in? so other mods can patch the overrides?

brisk rose
#

I don't have any problem with lovely. I just think that an api designed to code balatro mods in lua has a sensible end-goal of being feature complete in that purpose

crisp coral
wintry solar
#

I think it can, yeah

opal spade
crisp coral
#

pros:

  • patch smods override files
    cons:
  • beta7
opal spade
#

are there any examples of such patches

crisp coral
#

idr

brisk rose
#

well a mod requiring beta 7 would mean automatic incompat

#

so prolly not

shell timber
crisp coral
#

oh swag

opal spade
brisk rose
#

I just dunno if anyone's bothered yet

shell timber
#

yeah the priority got changed from u64 to i32 i think

brisk rose
#

I know flowwy said they had a seperate beta 6 and beta 7 version for one of their mods, so maybe look there?

languid mirage
#

I still didn't migrate my smods patches to that format, though

#

just waiting until beta7 is more stable

languid mirage
#

and more people move to it

opal spade
#

although idk why burndi added "update your lovely" to recent releases lol

crisp coral
#

probably just wanted everything to be latest

#

including ap client for some reason

opal spade
#

the ap client up until that release had a major bug that got fixed after i reported it

#

well as major as broadcasting duplicate hints is, anyway

crisp coral
#

ic

#

well our ap waiting for next release is a good call then

opal spade
#

there's a couple issues to be fixed rn and unfortunately im kinda busy, although i'll try to get it sorted as soon as i can

tidal edge
#

i added this to the game and now its killing itself

opal spade
opal spade
limpid wing
tidal edge
tidal edge
opal spade
tidal edge
#

cryptid has its own strange joker format that i think i've completely succumed to

opal spade
#

cryptid is an odd todd

crisp coral
#

cryptid's setup is really weird

tidal edge
#

i didnt add anything weird

#

nv i found out

#

nvm

#

i fucked up the localization

#

no wait

#

its still giving me the eof error

#

what'd i do

limpid wing
#

there is a list with all configs for jokers effect

wintry solar
#

Is cryptids set up a remnant of efficient 0.9.8 joker stuff?

tidal edge
#

no

limpid wing
#

Or i have another question, there is template of all jokers redone for steamodded?

#

the vanilla jokers

crisp coral
#

not all, but the most important ones

tepid sky
crisp coral
#

that is not a start for fusing enhancements

tepid sky
#

still something

#

also its not really fusing just stacking too

cerulean tide
#

im struggling to figure out why cryptid keeps crashing after barely doing anything in a run anyone have any ideas or more info about cryptid?

loud citrus
#

how do i make another tab for configs like crypted?

hardy viper
# loud citrus how do i make another tab for configs like crypted?

hook into the function that creates the ui box for whatever ui you want your config to be in, then insert a button into the ui with a callback to some function that will load up your custom config. alternatively, you can set <your smods mod table>.config_tab (might be something different, check smods example mods for something that makes a config) to a function that will return a ui for your config

#

(it'll be accessible from the Mods tab)

frosty dock
#

no need for that

#

you can just define an extra_tabs function on your mod object and return any number of tabs

hardy viper
#

?

#

i doubt that's what they're asking for

frosty dock
#

I assumed so because cryptid has more than one config tab

tepid crow
#

I think they meant the SMODS.current_mod.config_tab yeah

teal estuary
#

is it possible to have a joker check a cards enhancements by just doing something like context.is_enhancement:(“enhancement”) to check for.. a specific enhancement?

#

currently on mobile and im super tired, so it might be a it off 😭

nocturne garnet
#

i have no idea tho tbh

teal estuary
#

sick

nocturne garnet
#
if (card).config.center == G.P_CENTERS.m_stone then

end```
#

i think that would work

teal estuary
#

cool, ty

loud citrus
#

so my mod disables all other fusion jokers, why is that?

crisp elbow
#

yours probably overrides the table

#

because uh

#

the way it's supposed to be registered is actually uhmm

#

FusionJokers.fusions:add_fusion()

#

The way you're doing it essentially redefines the whole table @loud citrus

loud citrus
#

i see, now i know why it wasn't working and someone else told me how to fix it :)

glossy stone
#

fuck I just thought of a stupid joker idea
Signal Search (Rare)
Creates a random negative non-Common Joker for every 10 Polychrome cards played

Will probably need way more balancing but lol

maiden phoenix
#

Ngl thats very niche

loud citrus
glossy stone
maiden phoenix
#

Well at leats it wont be a shop bloat

shell timber
#

so it doesn't work with h. chad etc?

limpid wing
#

im trying to made a joker works like half joker, but how i can check the size of the hand played for activate the condition?

limpid wing
#

thanks

glossy stone
limpid wing
#

Sleep?

glossy stone
#

ZENLESS ZONE ZERO DAMN

limpid wing
glossy stone
limpid wing
#

here zzz is sleep

glossy stone
#

I see that too XD

#

Maybe after OS releases i'll make a ZZZ mod, idk.

limpid wing
#

I love pancakes

glossy stone
#

ahhh

#

ok ok

#

It's 10:16 pm here tho so imma sleep

#

GN!

limpid wing
#

Good night

glossy stone
tepid sky
#

urg- time to close this window yet again

tepid crow
#

7zip superiority

tepid sky
#

honestly its not like its delete it self 🤦‍♂️

frosty dock
#

yeah tbh theres no reason not to just use 7zip

tepid eagle
#

well it doesn't have any joker synergies

brisk rose
# tepid sky

Huh I guess it's 2008. Shoulda checked my calander better

brisk rose
frosty dock
#

ugh fair

#

i won't try to argue with that

brisk rose
#

Lmao

tepid crow
#

doesn't 7zip also have a CLI?

#

oh looks like unrar is available by default on linux I see

brisk rose
#

I just use my distro's default gui archive manager usually in actuality

#

which has support for zip, rar, 7z, tar, etc etc

tepid crow
#

real programmers compress their bits manually

brisk rose
#

hehehe

maiden phoenix
nocturne garnet
frosty dock
#

in fact steamodded was made with butterflies™️

nocturne garnet
#

Butterflies™️ : The new coding language

#

2^1e100x faster than Lua

tepid eagle
#

pseudorandom becomes truerandom

nocturne garnet
limpid wing
frosty dock
tepid eagle
#

instead of specifying a string seed you specify which butterfly you're calling

frosty dock
#

oh mb

nocturne garnet
#

aka we're doing butterflylabor

#

might be illegal in 200 years....

muted timber
#

guys how do i define a new consumable or voucher thing

#

like a new type

hybrid iris
#

if i remember correctly, you can create a new consumable with the SMODS.Consumable api thingy

#

you can look at other mods to see how they do it

muted timber
#

ok

#

im gonna skid off cryptid

mellow sable
#

I approve of that

hybrid iris
#

mhm-

muted timber
hardy viper
#

SMODS.Center

muted timber
#

how does lovely.toml work

rough furnace
hardy viper
gilded narwhal
#

Guys did I cook

#

(tattered red deck)

hybrid iris
#

im trying to make a card that turns all face cards wild, but it seems to just be breaking the logic for suit calculation in general

#

im not sure what's going wrong

nimble sequoia
#

Your original reference function still needs all the parameters you've got up there

#

All you need to do is pass those in

#

i.e. card_is_suit(self, suit, bypass_debuff, flush_calc)

hybrid iris
#

ohhhh

#

okay that makes sense

#

thanks!!!

opal spade
frigid flame
# gilded narwhal Guys did I cook

hey so i've been observing the tattered decks for a while, i was wondering what each of them did if you're able to say anything about that

#

like what each tattered deck's respective gimmick is

hybrid iris
#

jshdjshd

timid parrot
#

I just started modding and am kind of lost (never programmed in Lua before), and I'm trying to create a deck with a reduced number of cards. What's the best way to remove specific cards? I'm designing a deck that starts thin and grows over time, so I want a deck that starts with only face cards. My current mod file for reference. I feel like I'm doing stuff in all the wrong places.

brisk rose
timid parrot
brisk rose
#

Lol both I guess (the documentation is woefully incomplete but always improving) I meant the first though

#

To supplement the documentation I recommend looking how a mod like ortalab does it

timid parrot
#

thanks, I think I found what I needed

brisk rose
#

Ayy nice :3

timid parrot
#

yeah one of the decks in there literally just starts with only face cards it looks like which is basically what I wanted

#

only I wanted to turn them all into rocks

timid parrot
#

yep it worked

tepid sky
#

i am trying to make my own flame shader right, but problem is i don't know how to load it, like how do "make it work" when the normal flame is happening

brisk rose
#

I presume a lovely patch of some description

tepid sky
#

i have no idea how to make a lovely patch 😭

#

do you know if someone made some documentasion on how to use lovely patches?

hybrid iris
#

how does balatro handle hand types and stuff?

#

like which file specifically

#

im,, guessing it's in misc functions

#

sjdhsjdh wait actually just realised i can check myself

brisk rose
hybrid iris
#

fair

#

but that wasnt exactly what i meant- jsdhsjdh

brisk rose
#

oh fair

#

what are you looking to do exactly?

hybrid iris
#

kasi im trying to make a joker (that will not at all work with other mods)
that makes kings, queens, and jacks be treated the same (a king can substitute a queen in a straight, shoot the moon is activated with jacks, etc.)

#

ive done the second part through patching

#

but the first part where kings queens and jacks all fill each other's slots is a bit more difficult

brisk rose
#

I mean that /can/ be compat with other mods ngl. I've seen similar jokers

hybrid iris
#

o really?

frigid flame
#

i think there's a joker in cryptid that does something like this

hybrid iris
#

can you send an example of one for me to look at

frigid flame
#

but it also makes all number cards considered 10s

hybrid iris
#

that one acts a bit differently, those cards just become 10s and Kings iirc

#

so like, queens dont active shoot the moon anymore and stuff

frigid flame
#

you could probably look at the code for smeared joker to see how that works

#

i think it might be a similar thing

hybrid iris
#

not really unfortunately

#

sdfjkhsdfkhj

hybrid iris
#

oooh

brisk rose
#

but ngl I'm not sure it works atm

hybrid iris
#

ah,

#

thats, fair

#

sfkdjhsdfkjh

#

i can still try to look at the code at least

brisk rose
#

still good to look at for example of roughly how to do it

brisk rose
#

here's the newest release of cheesyjokers

#

on my github because it was previously only on itch

hybrid iris
#

,,,nevermind

#

sdfkjhsdfkjh

#

it does exactly what i intend for it to do with the joker part of things!

#

but, nothing about hand completion

brisk rose
#

what is it actually supposed to do? maybe that's why I feel like it did nothing for me, lol

hybrid iris
#

also the way it's implemented makes it only work for vanilla jokers

brisk rose
#

ah explains why it felt like it did nothing, yes

hybrid iris
#

yeahhh

cursive ocean
#

Before I bark up all the wrong trees, is there any way to dynamically change the sprite/atlas coordinates for a Jimbo during gameplay?

brisk rose
#

I expected all face cards to be 5oak

hybrid iris
#

unfortunately jsdhsdjh

hybrid iris
#

good question

#

i remember seeing people doing animations a while back

brisk rose
#

I think you just set the atlas pos again and it kinda just works

#

if not debugplus has a function to refresh atlases

hybrid iris
#

and you can look at blueprint+ for examples of other dynamic changes?

cursive ocean
#

Hmm ok I'll have to try again

hybrid iris
#

radical

cursive ocean
#

sweet

#

sick and nasty

hybrid iris
#

indubitably

cursive ocean
#

Would you happen to have a link to it?

hybrid iris
#

oh! uhh

#

here's the discord place

cursive ocean
#

thank u

hybrid iris
#

no problemo

hybrid iris
#

soo

#

thank you!!

cursive ocean
brisk rose
#

yeah I think some of the sprites in Aura do something similar, idk how much code is actually implemented though

#

also how do you get discord out of full screen? damn cat walked on my keyboard

#

nvm I just closed it and reopened it and it's fixed

#

lmfao

cursive ocean
#

self.children.center.sprite_pos = {x = 0, y = 0}

#

Now I just gotta figure out dynamic descriptions ;_;

#

I mean with line breaks and highlighting

languid mirage
#

isnt there Card:set_ability that accepts center

#

or is it the same center

#

but with different description

cursive ocean
#

Same center with different description yes, unless I'm confused which I often am

brisk rose
#

tangential question, is 'center' a thunkism, or does it actually come from somewhere?

frosty dock
cursive ocean
#
-- localization/default.lua
["dogmod_salary_man_t1"] = "Salary Man Tier 1",
["dogmod_salary_man_t2"] = "Salary Man Tier 2",
-- maybe im abusing "extra" here
config = { 
    extra = { 
     ...
      txtTier1 = "dogmod_salary_man_t1",
      txtTier2 = "dogmod_salary_man_t2",
      atlasPosXtier2 = 1,
      atlasPosYtier2 = 1,
     ...
    }},
... 
loc_vars = function(self, info_queue, card)
    return { vars = { localize(card.ability.extra["txtTier" .. card.ability.extra.tier]) } }
end,
#

But if I use e.g. {C:attention}Hello{} in that, it isn't parsed

frosty dock
#

given a different localization entry, you can pass that entry's key in the return table of loc_vars

#

where that entry is a full description in G.localization.descriptions.Joker

cursive ocean
#

So something like this?

return {
    ["descriptions"] = {
        ["Joker"] = {
            ["j_dogmod_salary_man_t1"] = {
                ["name"] = "Salary Man",
                ["text"] = {
                    "{C:attention}Hello{}"
                }
            }
        },
    }
}
loc_vars = function(self, info_queue, card)
    return { vars = { "j_dogmod_salary_man_t1" } }
  end
#

yeees

#

yeeees

#

i could kiss ya

frosty dock
#

or whatever else you have conditionally

cursive ocean
#

Heck yes

#

It works 😄

#

Thanks again

hybrid iris
#

i am, foaming at the teeth

#

skdfjhgdksfhjkdhjsf

#

WHY DOES THE CODE WORK IF ITS IN ITS OWN FILE BUT NOT WHEN PATCHED INTO THE GAME?????

#

HELLO?? ksdfhjskdfhj

#

,,,okay

#

does next(find_joker()) not work in patches?

#

or like, work, differently

#

sdfjkhsdfkjh

wintry solar
#

It’s probably being patched in wrong, have you checked the dump to make sure it’s as expected?

hybrid iris
#

yeah!

#

it's a one to one copy actually sdjhsdjh

wintry solar
#

Can you send the code in question?

hybrid iris
#

sdjhsjdh sorry late reply, but here!

#

its a little weird looking, but the content should be the same

#

its fine anyways tho, just made it work in the joker itself

frosty dock
#

steamodded actually fully overrides the function

#

that means you'd be overriding steamodded's version of the function, completely breaking custom ranks

brisk rose
#

custom ranks are so unterutilized, it's sad

#

I don't think I have a single mod that has them

hardy viper
#

i mean there's not much you can really use them for

brisk rose
#

fair enough, they kinda just make rank-based poker hands harder

#

the most interesting use I can think of is making a tarot deck

#

with the 4 face cards

#

though idk if you can easily insert a rank within the normal order

crisp coral
brisk rose
#

oh that'd be interesting

tepid sky
frigid flame
#

I MADE SCHMEVEN BIEVEN AS A JOKE BUT HE CAN THEORETICALLY EXIST AND FUNCTION

teal estuary
#

what does schmeven bieven even do

#

also

brisk rose
#

eldrich jokerpack when?

teal estuary
#

😭

brisk rose
#

oh wait that's just moar jokers <3

frigid flame
teal estuary
#

yuh

#

wtf is a schmeven 😭

frigid flame
teal estuary
#

😭

tepid sky
#

lmao

glossy stone
#

I'll be blaming you on every step of the way HEART_

crisp coral
#

<3

#

may your pity hard and your coinflip fail

glossy stone
#

You may have cursed me...

#

WOW WHAT THE FUCK WOOOOOW WOWWWWW

#

WOW SO MEAN

crisp coral
#

LMAO

glossy stone
#

WOW

#

Thank god i'm still earlygame so i can STILL get her

#

mikusip especially if i actually check out a... guide...

crisp coral
#

actually take this somewhere else since this is the modding chat

wooden nexus
#

And Schmodd is the same but if the decimal is odd

#

if the decimal is 0 then it's neither Scmeven or Scmodd

frosty dock
#

why neither

#

0 is even

brisk rose
orchid thunder
#

How can I get a boss Blind to destroy all jokers

timid parrot
orchid thunder
timid parrot
#

I mean yeah but when's the boss blind gonna destroy all jokers?

orchid thunder
#

It has a 30 second timer if you don't beat it in 30 seconds it destroys all jokers

timid parrot
#

oh god

orchid thunder
#

The timer is the easy part

orchid thunder
timid parrot
#

what ante is it gonna start showing up at?

orchid thunder
#

3

#

When you have a joker setup

orchid thunder
topaz sun
#

Guys, does anyone know if there's a way to get the key of a sleeve applied to a deck the same way you can get the deck's key when calculating a sleeve with get_current_deck_key() ?

wintry solar
#

There should be a way, especially considering sleeves track stickers too

topaz sun
#

found it, it's G.GAME.selected_sleeve. I think it returns the sleeve's key in the format sleeve_pfx_sleevekey where pfx is the mod prefix and sleevekey is the sleeve's "key" string

tepid crow
orchid thunder
wintry solar
#

iterate through G.jokers and use card:start_dissolve()?

orchid thunder
#

ok

inland helm
#

@wintry solar just realized I've been in the wrong chat the whole time

orchid thunder
#

also is there a way to delete the blind mid blind?

#

like the circle

wintry solar
inland helm
#

I did, givin it a try now

#

still the same

#

front is a nil value

#

should it be like

wintry solar
#

lemme grab a snippet, hold on

inland helm
#

set_ability_ref.children.front

#

rather than self

wintry solar
#

try this one

local set_ability_ref = Card.set_ability
function Card:set_ability(center, initial, delay_sprites)
  set_ability_ref(self, center, initial, delay_sprites)
  if center == G.P_CENTERS['m_wild'] then
    if not self.children.front then
        self:set_sprites(nil, self.config.card)
    end
    self.children.front.atlas.name = 'new_atlas_key'
    self.children.front:reset()
  end
end
#

wait

#

now

inland helm
#

atlas is a nil value?

#

thats probably on my end right

#

I think the code you sent is working just I don't have a working atlas

#

I forgot to rename new_atlas_key

#

1 min

#

yeah no crash but wild cards seem unchanged?

#

SMODS.Atlas {
key = "wild_cards",
path = "WildArt.png",
px = 71,
py = 95,
raw_key = true,
}

#

thats the atlas code I'm using

#

I'll keep testing

wintry solar
#

did you make a new card wild?

inland helm
#

yep its taking a min to test it each time

#

seems to still be unchanged

#

I'm missing a 1x WildArt.png that might be it

wintry solar
#

I'll give it a try on my end

inland helm
#

WAIT

#

works in the blind

wintry solar
#

yeah works on my end

inland helm
#

just not the deck menu

wintry solar
#

huh

#

oh

#

yeah

#

the cards in the deck menu are different

inland helm
#

oh

#

hahaha

#

least its working now ty a million

wintry solar
#

it also doesn't work on the face cards if you're using the new customise feature

#

but it's a start

inland helm
#

ah

#

so is that if I'm using the alt art?

#

or just not working on face cards at all

wintry solar
#

you can also change the self.children.front.pos before called the reset function

#

just the alt art cards

inland helm
#

thats fine

#

oh?

#

what would changing the pos do

wintry solar
#

so the position relates to where on your atlas the sprite is, when you use the alt art it changes the atlas of the face cards to be one that is just those 3 alternate pieces of art, so it becomes {x = 0-2, y = 0} instead of {x=0-12, y=0-3}

inland helm
#

ohh I understand

wintry solar
#

so you'd just have to reverse engineer it

inland helm
#

I should be able to manage that haha

#

thanks again

wintry solar
tranquil gull
#

okay

#

how do i add a keybind

#

as in like, i press a key on the keyboard and it runs a function

#

or something like htat

#

how do that

hardy viper
#

SMODS.Keybind

tranquil gull
#

thank you

hallow forge
#

that's a thing?

hardy viper
#

yeah

tranquil gull
#

is there a list of methods defined on smods

brisk rose
tranquil gull
#

or not methods

#

uh

#

table entries

brisk rose
hallow forge
#

looking at the code and the core/game_object.lua specifically is your best shot

hardy viper
#
    key = "openTMJ",
    key_pressed = "t",
    action = function(controller)
        TMJ.FUNCS.OPENFROMKEYBIND()
    end
})```
#

theres a usage for you

#

to reference

tranquil gull
#

well that was easy

regal wolf
#

Why call error instead of print statement 😭🙏

tranquil gull
#

because then it's blatantly obvious

#

lmao

#

is it nuclear? yes
is it funny? even more so

regal wolf
#

😭

rough furnace
#

this is like my one mod except it doesn;'t use the keybind api

tranquil gull
#

oh btw how do you set up config?

loud citrus
#

if you want to learn about what certain values do you can ask, i know some of them

#

how do i put filters on sprites?
i want to put the same filter that is on gold seal onto a different seal i'm making

limpid wing
#

in a challange, how i can make start the challenge with a modded joker?

loud citrus
wintry solar
#

*prefix of the mod

loud citrus
#

oh

#

sorry

tepid crow
#

cryptid's prefix is cry I think but yes

loud citrus
#

each mod can set it's own prefix so your close

limpid wing
#

how i can see the prefix

loud citrus
#

if it dosen't set one it's the first 4 leters

loud citrus
limpid wing
loud citrus
#

do you know where it could have happened?

limpid wing
loud citrus
#

ah! so there is a button that loads or does the menu crash before you see any buttons

topaz sun
#

remove edition

wintry solar
limpid wing
#

ITS DONE LMAO

hallow forge
#

proof?