#💻・modding-dev

1 messages · Page 129 of 1

sand oasis
#

gonna install the newest steamodded rq

wintry swallow
#

do not

sand oasis
#

Oof

wintry swallow
#

you want the old_calc tag

wintry solar
#

use new calc

wintry swallow
#

is it fixed yet

wintry solar
#

its been fixed for a few days

wintry swallow
#

huh

cedar stream
#

context.individual still exists right?

wintry solar
#

yeah

cedar stream
#

ok

sand oasis
#

should 1304a be okay

wintry swallow
#

probably

wintry solar
#

thats old calc, yeah

dull saddle
#

can someone help me figure out what this invalid metadata json file error means? i can post my mod code too

gilded narwhal
sand oasis
#

Not sure how an updated Steamodded would help my situtation unless someone has more specific guidance

sand oasis
wintry solar
#

I don't remember what weird capitalization the key has in old calc and new calc unifies them all

dull saddle
#
    "id": "sinful_jokers", 
    "name": "Sinful Jokers",
    "display_name": "Sinful Jokers",
    "author": ["Peachfroggg"], 
    "description": "Adds four new suit based jokers.", 
    "prefix": "sinf", 
    "main_file": "sinfuljokers.lua",
    "priority": -21, 
    "badge_colour": "fda0a5",
    "badge_text_colour": "a61a1f", 
    "version": "1.0.0", 
    "dependencies": [
        "Steamodded(=1.0.0~ALPHA-1309c)",
        "Lovely (>=0.6)",
        "Balatro (==1.0.0)"
    ],
    "dump_loc": false
}```
thick panther
#

what is this "new calc" i keep seeing? Is it a rework of some calculate method, like the one in SMODS.Joker?

wintry swallow
wintry solar
#

Galdur

gilded narwhal
#

and i'll rework the selection screen eventually

mystic river
wintry swallow
#

also the 23 hands 32 discards thing is very similar to a modifier i have in place on some of my challenges, it's cool to see people adapting the same ideas into different forms

mystic river
#

and it's still kinda in beta, so it has a few bugs of its own to work out
though iirc they've gotten the worst ones by now, all that's left is little stuff

gilded narwhal
#

What is the modifier out of curiosity

thick panther
gilded narwhal
#

Oh you just have to skip every blind and beat it in one hand?

#

How

wintry swallow
#

down in 12 (the first image) was literally the first challenge i made and what started this modpack in the first place

wintry swallow
wintry solar
wintry swallow
#

my girlfriend beat it

wintry solar
#

everything else should be fine

gilded narwhal
#

But yeah the second challenge is pretty much just my deck but you get way more resources and you can also get them back

#

Great minds think alike egg

wintry swallow
#

i want to completely rework the challenge select UI to add an entire second menu with a different colour scheme (i'm thinking purple) to pick B-sides

sand oasis
#

I did download the newest version, 1310b, and my code worked so i appreciate the heads up about the calc shenanigans

wintry swallow
gilded narwhal
#

I'm thinking of something very similar for B-side decks. After I finish T. Red I'll probably start work on the selection menu

wintry swallow
#

the most i've done with UI so far is uh

#

add a modifier that turns off the "endless mode" button in the "you win" screen

#

i do this with the vanilla lua 'unpack' function

wooden badge
#

@sonic cedar did you solve it in the end?

wintry swallow
#

(unpack takes a table and returns its values, e.g. local one, two, three = unpack{1, 2, 3} will have one = 1, two = 2, three = 3)

gilded narwhal
#

That's very clever actually

wintry swallow
#

i'm thinking of maybe replacing the "completed X/Y challenges" text with a [B-Sides] button

#

there's code in here for a daily challenge type mode??????

#

this is in the challenge select menu

late kindle
gilded narwhal
#

balatro content update 2025: daily challenges

wintry swallow
#

man thunk is bad at keeping things hidden lmfao

wintry solar
#

iirc it's left over code from beta

gilded narwhal
#

wait what does it look like

wintry swallow
#

it does this

minor magnet
#

would this be more balanced as an uncommon or rare?

wintry swallow
#

define 'successfully triggers'\

#

is it the mult or the $20

minor magnet
#

both

wintry swallow
#

ah

minor magnet
#

if a lucky card gives mult or money you gain an extra 5$

wintry swallow
#

uncommon but gives $3?

minor magnet
#

mmm seems good

wintry swallow
#

$5 feels a liiiittle too much for an uncommon but a bit too little for a rare with that condition

frosty dock
minor magnet
#

3 seems about right

#

you can still earn a lot of money with the right buildù

#

i would use this in a lucky card run

late kindle
wintry swallow
frosty dock
#

G.F_MOBILE_UI?

wintry swallow
#

yup lol

frosty dock
#

yeah i remember noticing that as well

wintry swallow
#

that was added in march of 2024, whereas mobile wasn't revealed until like september

frosty dock
#

that's 6 months but alright

wintry swallow
#

i'm bad at remembering dates

late kindle
#

sorry unrelated, but does anyone know if there’s a way to detect when a booster pack is closed (either skipped OR a card is chosen)

#

i wanna make a joker which increases your hand size but only while you’re inside a booster pack basically

zealous glen
zealous glen
cerulean rose
#

bump

zealous glen
cerulean rose
#

how do that

zealous glen
#

area

cedar stream
wintry solar
#

they calculate like jokers now

cedar stream
#

oh, so if i format it like it was a joker it would work

thick panther
#

how can I get the key for the played poker hand?

pine thunder
#

does "colour" just not do anything or am i being dumb? the "swap!" still shows up in blue regardless of what i set colour to

    if context.joker_main and context.cardarea == G.jokers then
      return 
      {
        colour = G.C.GREEN,
        message = 'Swap!',
        mult_mod = hand_chips - mult,
        chip_mod = mult - hand_chips
      }
    end
  end```
wintry swallow
#

oh god the challenge select menu is a pain to modify, but it's ok if this mod takes like a month to come out

wintry solar
#

just use swap = true

mellow stirrup
#

is there a context for when cards are drawn

wintry solar
#

actually

#

that's not a swap

#

nvm

mellow stirrup
zealous glen
wintry swallow
#

yes

#

i mean i'm adding my own "layer" to the challenge select menu

#

for "b-sides", things too hard or outlandish to put in the main set

glass scaffold
#

but imagine daily runs that refresh

wintry swallow
#

i did also have an idea for this

zealous glen
#

Thunk had an idea for this

wintry swallow
#

thunk had an idea for dailies yes

pine thunder
#

i mean im mostly just worried about the color

wintry swallow
#

who knows whether he'll add it in the 2025 content update or if it's a left-over from times gone by

pine thunder
#

it works fine on other jokers but this one is being a pita for some reason

cedar stream
#

how would you check if a specific suit is being scored

gilded narwhal
#

this is not working the way it's supposed to :(

night pagoda
#

Maybe a stupid question, but how do I check if the card still exists, as in it's still within the reach and is visible?

cedar stream
#

probably

gilded narwhal
viscid bough
#

Im making a joker that levels up the first played hand of the round. Problem is, i dont know how to level hands up or how to detect if its the first hand of the round.

night pagoda
#

Imagine a card from the deck preview - I closed the preview, but the card still technically might exist in your hand, but the exact card that was shown in the collection was removed

zealous glen
#

Not the same card

late kindle
nocturne estuary
#

can someone explain how exactly delay() works?

zealous glen
wintry swallow
#

probably gonna steal the event queue concept for my next game in all honesty this is one of the coolest parts of the codebase

zealous glen
#

event management is probably core to many/most digital games

wintry swallow
#

definitely, but i like the way balatro's works

zealous glen
#

although I'd have expected an implementation with listeners instead of a single track queue

viscid bough
#

can someone explain why the event stuff is so good? i really dont understand its usage

wintry swallow
#

it allows you to very easily queue things to happen in the future or after one another

long sun
#

rate this new version of Identity? :3

wintry swallow
#

is this meant to be styled after a spectral card

#

how does the effect read

zealous glen
long sun
#

Create 2 Negative Spectral cards at the end of the shop, self destructs

#

uncommon, $8

wintry swallow
#

yeah it's pretty

long sun
#

thanks!! :D

wintry swallow
#

the art is good

zealous glen
nocturne estuary
long sun
#

so you can hang onto eg. Deja Vu or Aura

wintry swallow
#

i mean it is a joker and not a tarot

#

so i think them being negative is fair enough

wintry swallow
zealous glen
wintry swallow
#

it doesn't affect the execution of the current event

zealous glen
#

so the card is dissoveldeddfdre by the time the delaying event is ran

long sun
#

you're paying for a random, but negative, Mega Spectral Pack, with the condition of needing a vacant Joker slot

tawny perch
long sun
#

thanks!! :D

gilded narwhal
#

Thoughts on reworked merry andy? (the +1 hand from the boss blind is for beating it in one hand)

long sun
#

how would i practice that?

wintry swallow
#

that's super cool

gilded narwhal
gilded narwhal
#

Blinds and vouchers as well

tawny perch
gilded narwhal
wintry swallow
#

this is one way to gain discards

tawny perch
#

then doing it faster and faster

zealous glen
#

I see

long sun
#

ah ya, the background was inspired by the Spectrals ^^

zealous glen
gilded narwhal
#

REPLICATING CRYPTID SPECTRAL CARD SPEEDRUN (WORLD RECORD)

tawny perch
tawny perch
long sun
#

ooh btw here's what it used to look like (this version was inspired by Soul, but i prefer the look of the normal Spectrals)

gilded narwhal
#

You should keep that flash I like it

night pagoda
zealous glen
nocturne estuary
wintry swallow
#

that i don't know

tawny perch
long sun
#

like so? :3

wintry swallow
#

maybe i would split it into two events

gilded narwhal
tawny perch
long sun
cerulean rose
long sun
cerulean rose
#

:diet_cola:

night pagoda
#

Now a different question:

How do I get a center position of a card? I tried using:
{(card.VT.x + card.VT.w/2) * G.TILESCALE * G.TILESIZE, (card.VT.y + card.VT.h/2) * G.TILESCALE * G.TILESIZE}
but it doesn't seem right; tried drawing a circle there using love.graphics.circle and it's offset to the left

tawny perch
#

identity i presume is a spectral only

zealous glen
long sun
gilded narwhal
#

oh yeah gappie since you're here can i have feedback on these spectrals since we're on that topic :3

long sun
#

WOAH THESE ARE COOL

#

i like how busy the first one is :D

tawny perch
zealous glen
wintry swallow
zealous glen
#

also I wonder if in-between the yellow fingers should be white

zealous glen
#

destroy that pixel

random sleet
#

one here on fate

gilded narwhal
#

I'm REALLY precise with pixel placement can't you guys tell

long sun
#

use masks :D

mellow stirrup
#

I saw a couple people mention looking at the balatro source code

#

how do I do that

random sleet
#

7zip

wintry swallow
#

extract the exe with 7zip

zealous glen
mellow stirrup
#

oh lmao is it really that easy?

wintry swallow
#

yes

gilded narwhal
#

Yeah 😭

mellow stirrup
#

cool

wintry swallow
#

extracting all LOVE2D games is that easy

tawny perch
# gilded narwhal oh yeah gappie since you're here can i have feedback on these spectrals since we...

i think you would do good with studying lighting, fate, while has good hands, the lighting doesnt make too much sense
I think aswell, that fate should have the effects follow the flow of the drawing, theyre sort of going against that, you can look at most spectrals for reference, but the effect is already pretty cool
Ineptitude on the other hand, i think is due for some background changes
currently its uninteresting, but the good part is that it follows the 'flow' of the spectral
you just need a lot mpre variety in the background, aswell as trying to highlight the main focus of the drawing

gilded narwhal
#

mpre

#

sorry

long sun
#

is this any better? i'm a little convinced but the spectral colour scheme doesn't have a shaded white

#

and it feels busy

gilded narwhal
#

thank you gappie !

tawny perch
# gilded narwhal sorry

and yknow ineptitude could definitely use some work with the text, i think taking from ectoplasm is a good idea

tawny perch
#

glad to be of help

near iris
#

Does anyone know if there's a way to set a joker effect at start of run (like after deck is selected)? I've got a joker that changes effects based on the selected deck, and I tried to use G.GAME.selected_deck.name, but it seems like the ability is just set on startup. Is it possible to change the identity of a joker at runtime?

zealous glen
near iris
#

ohhhhhhh true

zealous glen
#

and set_ability maybe

near iris
#

yeah good idea

zealous glen
#

see the Castle example in Example Mods

long sun
#

okay i'm convinced by the new version :D

#

shadows it is!

near iris
long sun
#

thanks to whoever suggested that :D

zealous glen
#

@tawny perch any suggestions for faster art maybe 🤔

practice, practice, practice jimbOrb

tawny perch
gilded narwhal
#

hey do you mind if I dm you because I also have all the decks i've done art for that I haven't rlly gotten feedback on but I don't really wanna flood this channel 😭

zealous glen
#

That's what the channel is for

#

and I'd like to see them too

gilded narwhal
#

Fair enough

tawny perch
gilded narwhal
#

I'll just do that instead mb 😭

tawny perch
#

im gonna breakfast first

crisp coral
#

the breakfasterrrrr

zealous glen
crisp coral
#

so like, vector art

zealous glen
#

no

gilded narwhal
#

I think I'm gonna finish this deck art I'm working on then I'll post to fart

long sun
#

SVG art is my main art outlet :D

#

it's smaller in file size, easy to edit, infinitely scaleable and lets me think mathematically about my art :D

#

also, the jonklers!!

thick panther
#

how do i add a playing card to the deck in apply?

vital pine
long sun
#

my mind is too fast for eyes 🎶

night pagoda
#

Hey!!!!!!!!!!!!

zealous glen
#

That's gotta be a standalone mod ;P

#

-# so I can read the code

night pagoda
#

I hate canvases, I had so many trial-and-error with those

#

what I do is:
create a global table of blackholes in card:init
in the game:draw, switch a canvas to apply a local shader for each blackhole that exists in the table
then switch it back so it doesn't break the CRT shader

#

canvas switching looks like literal juggling, I do not understand why the order I made them in works

zealous glen
#

and how do you switch them

night pagoda
#

a separate rendering space

minor magnet
#

is there a way to add a random edition with card:set_edition()?

wintry swallow
night pagoda
#

and switch with love.graphics.setCanvas() and love.graphics.draw()

#

I'll release this when I'll figure out how to properly detect black holes

#

because I don't think init is called on load?

zealous glen
#

check the wiki

minor magnet
#

omg

wintry swallow
#

this is the docs

zealous glen
minor magnet
#

oh ye i shoulda checked if there was a smods function for it

zealous glen
#

technically it's vanilla IIRC

minor magnet
#

IM WAITING FOR IT TO RELEASE

#

my autism flares up

#

i love homestuck

zealous glen
#

@long sun how to play kyudosudoku jimbPog

zealous glen
long sun
#

Awesome!!

zealous glen
#

but really I only got three 4s so far 😭

sonic cedar
#

asking again now that there's less happening
how would i set up a custom ability for a joker?

zealous glen
#

usually it's all inside calculate

sonic cedar
#

i was hoping you wouldnt say that Pain

night pagoda
zealous glen
viscid bough
#

got this code heavily copied from burnt joker thats supposed to do basically the same except on the first played hand. But it doesnt work. No errors no crashing, the effect just isnt working. any idea why? Heres the calculate code:

calculate = function(self, card, context)
        if context.area == G.jokers and context.before and G.GAME.current_round.hands_played == 0 then
            local text,disp_text = G.FUNCS.get_poker_hand_info(context.scoring_hand)
            card_eval_status_text(context.blueprint_card or self, 'extra', nil, nil, nil, {message = localize('k_upgrade_ex')})
            update_hand_text({sound = 'button', volume = 0.7, pitch = 0.8, delay = 0.3}, {handname=localize(text, 'poker_hands'),chips = G.GAME.hands[text].chips, mult = G.GAME.hands[text].mult, level=G.GAME.hands[text].level})
            level_up_hand(context.blueprint_card or self, text, nil, 1)
            update_hand_text({sound = 'button', volume = 0.7, pitch = 1.1, delay = 0}, {mult = 0, chips = 0, handname = '', level = ''})
        end
    end
zealous glen
night pagoda
#

When I load the run, it seems that only the base playing cards are being ran through set_ability

#

no signs of black holes

zealous glen
night pagoda
#

when I open the collection it runs the set_ability weirdly, yes

viscid bough
night pagoda
#

set_sprites works

zealous glen
thick panther
#

is there a way to insert a playing card into the deck without spawning an actual card object?

night pagoda
#

also I forgot to mention, but I actually had to unscramble the black hole sprite

#

looks a bit cursed by itself

zealous glen
viscid bough
zealous glen
#

keep doing that

stiff locust
#

can localize{} with the vars argument be used outside card_eval_status_text or message =
i need to localize something and put it in a variable, but I also need it to have a variable inside the localized text, like how return message = localize{type = 'variable', key = 'a_xmult', vars = {card.ability.extra.x_mult}} would work
copying that localize function doesn't work, it just gives ERROR or nil instead

viscid bough
#

okay i changed the if statement to be seperated instead of using ands so that i could check what stage it didnt work. Apparently its not counting the area as being G.jokers. Im gonna remove that to see if it works

late kindle
wintry solar
stiff locust
#

well it's not working

viscid bough
stiff locust
#

card.ability.extra.last = localize{type = "dictionary", key = "k_soup_hand", vars = {card.ability.extra.interval} } just gives ERROR and idk what's not working here

minor magnet
#

would adding a random seal to each played card be a balanced ability for a legendary?

viscid bough
# wintry solar it's `context.cardarea`

is the checking needed for what im doing though? im only upgrading the played hand. Im not sure it needs to check it and it seems to work fine without a check

wintry solar
#

I don't think dictionary is a valid type of localize

stiff locust
#

well the entry is in misc.dictionary

#

so what do I put

wintry solar
viscid bough
frosty dock
#

vars aren't supported in dictionary

viscid bough
#

im gonna be honest i think my brain malfunctioned when i added the area check

stiff locust
#

oh

frosty dock
#

you get strings out of dictionary with localize('k_something')

wintry solar
#

just do ```lua
if context.before and G.GAME.current_round.hands_played == 0 then
return {
level_up = true
}
end

assuming you're using bettercalc
viscid bough
wintry solar
#

it's just newest smods

viscid bough
#

oh i think i should have it, i updated like a few days ago

thick panther
#

are there any mods that add cards to the deck to make it more than 52 on a new run? I cant seem to find anything for that.

minor magnet
#

would adding a random seal to each played card be a balanced ability for a legendary?
or would it be too strong / weak?
i can see it being incredibly strong and like you have basically no reason to not pick that up
but since it's a legendary it's meant to be strong so idk

#

i was thinking about nerfing it by adding a chance to not add anything, but i think it would make the joker underwhelming

elder vapor
#

(i am the only person using stickers)

wintry solar
#

it should work for stickers

elder vapor
#

unless level_up = 1 doesn't count

#

then i'm stupid

wintry solar
#

numbers should work too

#

smods version?

elder vapor
#

1308a iirc

#

oh its 1309b

wintry solar
#

huh

#

let me try on my end

thick panther
#

is there a way to set args.initial_deck based on what deck is being played on?

frosty dock
hardy viper
#

@mellow sable we need to talk

stiff locust
frosty dock
#

you can use G.GAME.selected_back to get info on the selected deck

thick panther
wintry solar
#

update your lovely

elder vapor
#

lovely is on 0.6.0

#

oh that wasn't directed towards me lol

wintry solar
#

whats context.from_playing_card

wintry swallow
elder vapor
#

its added from the function i use to support stickers on playing cards

wintry solar
#

you don't need to add anything to support stickers on playing cards with better calc

elder vapor
#

oh fr?

#

awesome

#

i've had that since i started on my mod

wintry solar
#

and that function doesn't return anywthing

elder vapor
#

better calc is just better huh

wintry solar
#

that's why it doesnt work for you

elder vapor
#

oh 💀

wintry solar
#

like the calculate part

elder vapor
#

no wonder

wintry swallow
wintry solar
#

they were never very well supported

ancient ore
#

Can anyone help me figure out why this is happening

#

Attempting to use pseudorandom in an effect for a joker

viscid bough
#

which looks better, outline or no outline?

buoyant umbra
ancient ore
buoyant umbra
#

I'm having trouble with adding a deck to my mod; I've done the SMODS.Back{} call, but does that even add it to the options or do I have to initialize it somehow?

ancient ore
#

Ah is that the difference

#

is center an object identifier

nova finch
#

I'm trying to add a custom rarity but whenever I try to set a joker to the rarity it crashes with this message

elder vapor
#

what is your mod prefix and what is your custom rarity?

ancient ore
#

Many lost souls in the chat rn

nova finch
elder vapor
#

yeah

nova finch
#

"jmrcrd" and "album"

elder vapor
#

okay so to apply a custom rarity you have to add your mod prefix

#

so for you it'd be jmrcrd_album

nova finch
#

ok

ancient ore
#

Anyone know what i did wrong in that image

ionic verge
#

where would i start to add a joker to the game

wintry solar
#

pseudoseed takes a string, not self, and you don't have a center to look at, replace it with card

ancient ore
ancient ore
ionic verge
#

mhm, thanks

#

two things before i check that out, is card.lua gonna be useful at all (i presume yes), and second:

#

its beautiful

ancient ore
#

I haven't used it yet for any of my purposes

elder vapor
#

thunk is a really good programmer

ionic verge
#

tbh i presume its fine, just like
i kinda chuckled seeing it

ancient ore
#

I have zero experience in programming but thunk left a pretty intuitive trail for my small brain to understand

wintry swallow
#

It Could Be Better

#

but it works

ionic verge
wintry swallow
#

a piece of text

#

doesn't matter how long or short it is, a 'string' is just, well, a string of characters

ancient ore
#

Ah alr

wintry swallow
#

all of the message content in this channel is all strings for example

ionic verge
#

or images

ancient ore
#

so am I just replacing "self" with the joker key?

wintry swallow
#

pseudorandom(pseudoseed('whatever your jokers name is'))

ancient ore
#

Oh ok thanks a ton

wintry swallow
#

for instance vanilla uses pseudorandom(pseudoseed('wheel')) for wheel of fortune

#

you can also directly use pseudorandom('key')

ancient ore
#

What does psuedoseed do?

#

Awesome it no longer crashes when I pick a card thanks a ton

wintry swallow
ancient ore
#

intesting

autumn vortex
#

I have an idea but I need to know if its possible

#

Can you like, make hand types, but instead of like playing them to unlock their planet cards, you get a planet card to unlock the ability to play them?

wintry swallow
#

probably

rare bobcat
#

I made it to ante 15 with one of my modded jokers

#

2 of them from invisible technically

#

And 2 brainstorms

#

And a blueprint

#

I just realized

rare bobcat
#

Is there a way to have custom textures for vanilla files

#

Easily

#

And bundled with a mod

#

And by easily I mean something that I can do within the span of the weekend

#

Other than the sprites themselves

ionic verge
#

hey real quick just being 100% sure
the lovely injector thing is safe to download right?

rare bobcat
#

Yes

ionic verge
#

just making sure i didnt download the wrong thing

#

ol

#

ok

rare bobcat
#

It uses the same technology as a Trojan virus but it isn’t

ionic verge
#

yeah i read that part i just wanted to be sure

rare bobcat
#

You can build the same thing yourself if you’re worried

ionic verge
#

yeah no im good now

#

i just wanted community confirmation

livid tapir
wintry swallow
#

it's not a trojan, it's not malicious

#

by this logic, ReShade is a trojan

rare bobcat
#

It would’ve been funny to tell you you’re cooked but you seem nice and I don’t want to do that to some random dude

#

Or dudette

wintry swallow
#

Lovely is safe to download though yes

rare bobcat
#

Or non-binary duderino

ionic verge
#

.jkr?
bruh lol

livid tapir
rare bobcat
#

I just checked and it’s all of the above

wintry swallow
# ionic verge .jkr? bruh lol

jkr is the save file extension (save files are actually just compressed Lua source code piped through love.data.compress)

sick sparrow
#

how to enable demo mode in balatro full game?

wintry swallow
#

you don't

#

the demo mode code was removed from the game

ionic verge
#

yeah
i just found it funny he named it that

rare bobcat
#

Time to draw a trout

livid tapir
#

"JUST KIDDING real" files fr

sick sparrow
sick sparrow
#

yes but it might have been removed

wintry swallow
#

the balatro demo was removed from steam around the time of the full release

sick sparrow
#

does anyone have demo version? i seem to can't find from archive

wintry swallow
#

i wish i had the demo

livid tapir
#

guys like
is there any info at all on how better calc works
like how to use the thing
so that i can port my mod
or should i just wait until they actually put smth in the wiki about it or its more adopted

rare bobcat
#

How do you have multiple joker atlases in the same file

#

I forgot

#

Is it multiple SMODS.Altas

viscid bough
#

Is it possible to make custom rarities?

rare bobcat
#

Or all the things inside the same thing

rare bobcat
wintry swallow
thick panther
viscid bough
livid tapir
rare bobcat
#

So 0,0 for joker 1, 71,0 for a joker that’s adjacent to it, etc.

ancient ore
#

Alright gang how do you test a joker that triggers on a probability

#

Wait nvm

sick sparrow
#

does SMODS.Rarity take key as number?

livid tapir
thick panther
rare bobcat
#

That’s easier

wintry solar
#

this is the start of calculation docs for better calc

nova finch
#

got a new joker done
now have 10 jokers total

livid tapir
livid tapir
rare bobcat
wintry swallow
nova finch
nova finch
wintry solar
wintry swallow
#

all jokers should say 'joker' on them somewhere (aside legendaries) so i'd consider making the text on the weezer blue album joker say 'joker' in lowercase on the top right to match the real cover

#

every vanilla joker aside the 5 legendaries says 'joker' on it somewhere

sick sparrow
#

as they are transitioning to full game, did they remove the demo code?

wintry swallow
#

probably

#

setting _DEMO to true does nothing

rare bobcat
#

Toxicity (or Steal this Album, your choice but toxicity is more iconic) - System of a Down
Wonder what’s next - Chevelle
Slipknot - Slipknot
The sickness - Disturbed
Endless hallway - He is Legend

sick sparrow
#

does SMODS.Rarity take key as number?

wintry swallow
#

likely yes

sick sparrow
#

as i know, rarity is a number

wintry swallow
#

hmm

#

that might not be true

#

because of

#

mod prefixes

#

let me check something

rare bobcat
wintry swallow
#

no, custom rarities are strings

nova finch
rare bobcat
#

LD-50 by mudvayne is also an amazing album but you should not make that a joker

ancient ore
#

I have 2 variables in Xmult and Xmult2 that call for x10 and x0.01 mult respectively.
How do I make which variable it uses for mult random

wintry solar
#

are you on latest smods?

ancient ore
#

I stink so

#

Downloaded very recently

wintry solar
#

do lua return { xmult = pseudorandom('joseluckreturn') > 0.5 and card.ability.extra.Xmult or card.ability.extra.Xmult2 }

ancient ore
#

Thanks brotha

#

Just replacing the current body for return?

rare bobcat
wintry solar
#

not anymore

rare bobcat
#

Ah

#

So does that mean my steammodded is outdated?

ancient ore
#

Now its mult vs xmult right?

wintry solar
#

you can still use Xmult_mod

rare bobcat
#

When did this happen?

wintry solar
#

but why bother remembering all the slight differences depending on which part of scoring it is when you can just use xmult now

#

#bettercalc

sick sparrow
#
SMODS.Rarity{
    key = "gerio_unobtainium",
    loc_txt = {
        name = 'Unobtainium', -- used on rarity badge
    },
    pools = {}, -- you are not supposed to get this cards anyway
}
```no getting this card
mellow sable
rare bobcat
#

Wait

#

That’s the cryptid mod guy

#

Is it?

mellow sable
rare bobcat
livid tapir
#

♒ this is the closest thing i can do not being in cryptid and not having nitro lmao

#

or Ⓜ️

sacred fern
#

Anyone got a fix for the Deck Creator mod? needs updating for the newer steamodded

ionic verge
#

lua isnt going to yell at me if i have the first bracket not be on the same line as the thing its tied to, right?

#

i just know lua is a little weird with things, and wanted to make sure

hardy viper
# mellow sable ?

the main issue is that you're checking if the file exists by reading the whole thing and discarding that, when a similar thing can be done by just checking if the file exists
the second issue is that if the config is empty you get a very nondescriptive "attempt to call a nil value" in main.lua (which you need to request a lovely dump for)
the third issue is that the load family of functions never fail, only returns nil, so you can do

local cfgfunc = loadfile("/config/Trance.lua")
Trance_config = cfgfunc and cfgfunc()

which never fails even if the config is malformed
so basically im just finding an excuse to yell at you for fun because you did something wrong which is okay and acceptable because we all make mistakes sometimes but the REAL reason im upset is because the person who had this issue sent me an incorrect lovely log which happened to have the line mentioned in the crash be an oldfunc() call (which lines up with the original error, attempt to call a nil value) which led to me spending like 15 minutes trying to figure out why tf love.update somehow became nil (that random line that it happened to fall under was my code by the way so i felt responsible for this somehow even though it was the trance thing all along)

#

rant done

mellow sable
#

lmao

gilded narwhal
#

Hey what's the context for detecting if you are on a specific blind?

mellow sable
#

Balatro mod developer tries and fails to code file loading (real)

gilded narwhal
#

Or rather specific boss blind

hardy viper
#

is trance a lovely mod or are you just not using the smods loadfile

#

i assume the first one

mellow sable
#

First one

#

I don’t like making my mods Steamodded-dependent unless they have a reason to be

#

Even Talisman has partial functionality without it

gilded narwhal
#

Idk

pure quail
#

why do decks show up like this when i add 1

#

💔

ionic verge
#

in other news: im doing it!

nova finch
#

is there any documentation on SMODS.Consumable? I can't find it on the smods wiki

cerulean rose
#
calculate = function(self, card, context)
    if context.cardarea == G.play and context.individual and not context.blueprint then
        if context.other_card:is_suit("Clubs") then
            card.ability.mult = card.ability.mult + card.ability.gain
            return {
                message = localize({ type = "variable", key = "a_mult", vars = { card.ability.gain } }),
                card = card
            }
        end
        if context.other_card:is_suit("Hearts") and card.ability.mult ~= 0 then
            card.ability.mult = math.max(card.ability.mult - card.ability.loss, 0)
            return {
                message = localize({ type = "variable", key = "a_mult_minus", vars = { card.ability.loss } }),
                colour = G.C.RED,
                card = card
            }
        end
    elseif context.joker_main then
        return { mult = card.ability.mult }
    end
end

i can't get the message here to show up on my joker instead of the playing card

gilded narwhal
#

Why does this not work?

#

Or how can I make this work

cerulean rose
#

what kind of object is that on?

gilded narwhal
#

this is a deck

cerulean rose
#

try removing the check for hands played

#

since the effect happens after hands are removed the variable would be set on hand 2 and would only apply from hand 3 onward

warped mason
#

I just realized

#

I have NO idea how to use Lua

livid tapir
full kayak
#

Is there a template anywhere for creating custom jokers? Goal is to simply add one that is a x2 mult just to learn how to mod

cerulean rose
#

check the example mods in steammodded

full kayak
#

Is that on the github page or is that a channel here?

#

Ah found it on the github! THanks

wooden nexus
#

Question: is there a way to disable the rarity and mod badges? (I don't mean the config option, I mean like... for a specific card)

cerulean rose
#

hm. might have something to do with the bettercalc update

gilded narwhal
#

I'm curious

#

are the args.contexts any different from the normal contexts

ionic verge
#

what context would i need for looking for money spent in the shop

#

like context.[thing]

wind turtle
#

how do I debug my joker? like, do I just reroll until I get it or is there a way to make it so a game starts out with it?

ionic verge
#

theres a debug mod that im using

wind turtle
#

nvm (i'm just learning the thing this is not real)

ionic verge
#

real

ionic verge
#

theres a lot of different keybinds

wind turtle
#

okay so how do i modify mult when my joker triggers

cerulean rose
#

what do you mean by that

ionic verge
#

you need a calculate function

cerulean rose
#

check out the example mods

ionic verge
#

im going through this myself right this second

wind turtle
hardy viper
#

meow

wind turtle
#

so. why is context null

#

i have this

#

it's probabky horrible because. again. i hate lua

gilded narwhal
#

content

wind turtle
#

oh

wind turtle
hardy viper
gilded narwhal
#

yeah I'm saying that you have it as content

wind turtle
#

oh my god 😭

#

i love coding

gilded narwhal
#

true

ionic verge
#

im trying to check if anything is done in the shop, will this do?

gilded narwhal
wind turtle
#

it's now crashing because extra is null

cerulean rose
#

your config has a semicolon instead of a comma after it

wind turtle
#

my c++ ass is not liking this so far

cerulean rose
#

also instead of defining a custom message just return { xmult = card.ability.extra.Xmult }

wind turtle
cerulean rose
#

when is it crashing

wind turtle
#

when i hover the card

#

let me try playing a hand without hovering it

#

the card works but hovering crashes

cerulean rose
#

try starting a new run

wind turtle
#

i just changed the variable to a constant and it works

faint yacht
gilded narwhal
#

Thoughts?

faint yacht
#

Cartomancer?

cerulean rose
hybrid island
wind turtle
warped mason
#

They're emoticons-

#

(I am cringing on the inside)

calm crag
#

Hey, how would one have a Joker select a random card in the player’s hand after new cards are drawn?

#

Not to force play it a la Cerulean Bell but to essentially have the joker be looking out for that card in the next scoring hand

gilded narwhal
#

(and vouchers)

hardy viper
#

that dusk is NOT helping

cerulean rose
#

why's merry andy lost -1 hand size?

ionic verge
#

question, what's the color you use for the (currently whatever status) thing at the bottom of scaling jokers description?

sand oasis
#

C:inactive

#

i believe

ionic verge
#

thanks

#

do i have to change size too?

cerulean rose
#

no

sand oasis
#

not necessarily but you can

ionic verge
#

no

#

i thought that text was smaller

#

its not by the looks of it

sand oasis
#

yeah that's its own modifier

#

s:

cerulean rose
#

any way to add custom characters to the font?

wind turtle
#

so i'm trying to make a shitpost. how do i change the probability when a joker is in the hand like all 6s does?

cerulean rose
#

check the code for oops

gilded narwhal
#

It still has the -1 hand size

gilded narwhal
# gilded narwhal JOKER REWORKS WOO

And also the boss blind is +4 discards and +2 hands because

1 hand from beating the boss in one hand
1 hand from grabber
2 discards from beating the boss without discarding
1 discard from drunkard
1 discard from merry andy, as the discard being removed from burglar technically counts as a discard being used, so merry andy was able to "refund" it

wind turtle
cerulean rose
#

extract the balatro exe as a zip

wind turtle
#

this is quite literally my first time making my own mod for anything excluding mcreator

gilded narwhal
#

balatro file -> cards -> ctrl f oops

wind turtle
cerulean rose
#

yep

sand oasis
#

yeah it's crazy

ionic verge
#

it is done

#

though, its just buying anything

#

which is slightly different

gilded narwhal
sand oasis
#

Can someone help figure out why the end_of_round statement is always activating despite it being gated behind chance? Bizarrely the money is always stolen but the message never appears

gilded narwhal
#

idk why it doesn't reset once a blind is finished

hardy viper
gilded narwhal
#

Only when selecting a new one

hardy viper
#

doesnt dusk retrigger stuff on the last hand of the round

gilded narwhal
#

Yeah it's been reworked

hardy viper
#

oh

gilded narwhal
#

To trigger after the third hand

#

Same with acrobat

sand oasis
#

the sort of syntax for adjusting probability is in card.lua

#

I do not fully understand how to interpret this though

wind turtle
#

it worked

sand oasis
#

nice!

wind turtle
#

finally, the wheel's REAL odds

ionic verge
#

my game crashes here when this is triggered at end of round, is this not the way to increase Xmult on a scaling joker?

#

using this to define Xmult

cerulean rose
#

ur statement ends with a comma

ionic verge
#

does it not need to?

cerulean rose
#

it absolutely shouldnt

sand oasis
ionic verge
cerulean rose
#

oh i see whats happening

ionic verge
#

74 being that line

cerulean rose
#

no you dont put the scaling code in the return value

#

you set the ability value then return

ionic verge
#

i seeeee

#

it felt like a thing that would happen in return, cus the actual application of that mult does

#

so this?

wind turtle
#

so i'm trying to make a card repeat like hanging chad, but it crashed. what do i do here?

#

it's crashing because scoring_hand is null

cerulean rose
#

you also need to check for retrigger context

wind turtle
#

added an error handler for when scoring_hand is null but then it throws this

elder vapor
#

card = self

#

also what they said

wind turtle
elder vapor
#

change it to card = context.scoring_hand[1]

ionic verge
#

why...?

cerulean rose
#

wdym why

elder vapor
#

context.end_of_round happens multiple times

ionic verge
#

it was supposed to be 1.5x end of this round

cerulean rose
#

oh yeah

#

it do

ionic verge
#

oh

#

so how do i make it do it just once?

wind turtle
#

ok figutred it out

#

it works now

ionic verge
#

i found it

cerulean rose
#

my custom rank isn't able to make straights

fallen tendon
#

how feasible would it be to make a cardarea under the deck?

#

and also the cards are sideways so they poke out

hollow locust
#

How would I go around increasing odds of a consumable appearing in shop?

ionic verge
#

i did it
its done
it doesnt break

#

it might not work with blueprint bc i dont know how exactly that works but it works

cerulean rose
#

blueprint calls the calculate function of the joker it's copying with its config
blueprint is distinguished by the fact that it sets context.blueprint to true

ionic verge
#

i seee

cerulean rose
#

also btw blueprint_compat is purely visual, you still need to handle blueprint in calculate

ionic verge
#

so do context blueprint and make it do the things i want it to do?

cerulean rose
#

actually you should do not context.blueprint on the end of round check

ionic verge
#

mhm

fallen tendon
#

i need to know if theres something weird with the deck

wind turtle
#

ok now trying to add a joker that adds chips when a certain card is played, it once again crashed at attempt to call juice_up (a nil value)

cerulean rose
#

just have card be the card played

#

check the code for gluttonous joker

#

but beware that Card:calculate_joker has different parameter names

#

self there will be card in your function

wind turtle
#

ok changed the return to have card = context.other_card instead of card = self and now it works

cerulean rose
#

+20 markiplier

wind turtle
sick sparrow
runic pecan
#

Is this sprite ok for a joker?

#

(Disclaimer: methods involved screenshot and resize)

#

(Maybe I should've do the same for my previous joker)

wind turtle
livid tapir
hollow locust
wind turtle
hollow locust
wind turtle
#

i did also put it in as +20 markiplier

hollow locust
#

dew it

merry raven
#

Hello everybody my name is multiplier

hollow locust
#

@wind turtle Idea

Market Pliers consumable
Allows to swap a joker you own with one from the shop at no cost

wind turtle
#

this is literally my first ever mod

hollow locust
#

Dang

#

well uhr

#

Maybe over time(?)

tacit gyro
#

Is there a way to see a joker without having to discover it first? I'm trying to test mine out.

hollow locust
#

discovered = true in the joker's code i think

tacit gyro
#

ah ok. Thank you

nova finch
#

I'm trying to make a consumable that gives a random joker of a custom rarity, but in game it just makes jokers infinitely.
can anyone help? I have no idea why this is happening

weak depot
#

oh this is a consumable i'm so dumb

#

have you returned anything in the use() function?

nova finch
#

no
idk what that means this is my first time getting this far with smods.consumable

wind turtle
#

i think i'm cooking here

runic pecan
#

Would it be deceptive if I give a joker some positive effects without including them in description?
(Specifically, making a rare joker that holds a hidden mechanic which if you also have a specific legendary joker, the rare one will act as a copy of the legendary one on top of its own effect.)

sick sparrow
runic pecan
#

it could make the description a little bit shorter

nova finch
cerulean rose
#

you are spawning a joker for every center in the game

#

what the heck is that for loop about

nova finch
#

idk

cerulean rose
#

also use SMODS.add_card to handle other addition stuff

ionic verge
#

wait wait wait
are those chances inclusive or exclusive currently

#

500 mult then immediately loses

runic pecan
wind turtle
#

how do i trigger a joker when the hand is played>

ionic verge
wind turtle
wind turtle
#

the mult does not increase

#

i might make it gain for funsies

ionic verge
#

ok i realized i got my wording wrong

#

are the chances independent or dependent on each other

nova finch
ionic verge
#

i.e. does getting one influence the other
i.e can you get both chances to trigger at the same time or not

#

ok

#

but consider

#

itd be really funny

wind turtle
#

it would

wind turtle
ionic verge
#

also the really low chance of neither triggering

runic pecan
ionic verge
#

ye

nova finch
# nova finch it just can be dragged freely

yeah idk why the fuck it's doing this 😭 this should be fine right?

            func = function()
                SMODS.create_card({
                    set = 'Joker',
                    area = G.jokers,
                    legendary = false,
                    rarity = 'jmrcrd_album'
                })
                return true
            end
        }))```
wind turtle
#

so now how do i do random

faint yacht
wind turtle
#

how do i make the loc_vars have a value from config without it crashing? do i do self.config?

nova finch
cerulean rose
#

replace SMODS.create_card with SMODS.add_card

nova finch
#

oh ok

faint yacht
wind turtle
#

ok it increases now

#

so how do i change how many hands the player has?

faint yacht
#

ease_hands_played(number)

glacial zinc
# wind turtle

so sorry to say this but i think i beat you to the punch </3

wind turtle
#

is there any way for a joker to just. end the game

hollow locust
#

So, I'm tryjng to have a Consumable Type's name show up. I have it made, with a card there, but all that is messed up is the name. It shows "ERROR".

If it helps, the code:

   key = "Testing" --change soon
   primary_colour = G.C.MONEY,
   secondary_colour = G.C.MONEY,
   collectiom_rows = {4, 4}
   shop_rate = 0,
   loc_txt = {"Testing"},
   can_stack = false,
   can_divide = false,
}```
warped mason
#

Okay I have a dumb idea for a joker and need to see if anyone thinks it will be balanced.

It consumes the joker to the left of it except for another copy of itself, add's the sell value to it's multiplier, and then copies itself

sick sparrow
#

how to get use from consumable?

wind turtle
#

when i try to do ease_hands_played(0) it tries but doesn't work

sick sparrow
#

like it only changes function when you enable the settings

nocturne garnet
#

ease_hands_played adds hands

#

and setting hands to 0 wont make you instantly lose iirc

nocturne garnet
#

and you need to emplace the card in G.jokers (unless smods handles that, i personally dont use SMODS.create_card)

cerulean rose
#

smods only handles it if you use SMODS.add_card instead

sick sparrow
runic pecan
#

Sacrificial Dagger but reproductable

hollow locust
sick sparrow
#

how to get use() from consumable?
like it only changes function when you enable the settings

runic pecan
#

Behold, my second joker:

stray warren
#

How do I put Red Seal's description in the info_queue of a loc_vars function? info_queue[#info_queue+1] = G.P_SEALS.Red isn't working

molten ice
#

seal descriptions are in the 'Other' set

stray warren
#

Thank you

molten ice
#

np

runic pecan
#

How do I make my joker "jump" like bloodstone or other "Played cards [...] when scored" jokers?

elder vapor
#

card:juice_up(0.5, 0.5)

runic pecan
elder vapor
#

yes

runic pecan
#

Thanks

sick sparrow
#

how to get use() from consumable?
like it only changes function when you enable the settings

runic pecan
#

Is the highlighted part correct?

wind turtle
tall wharf
#

Canadian English???

sick sparrow
#

replacing balatro's source code with my own tetris does work (has balatro icon)

#

it will hard to prove but my own tetris is also made in love2d

tall wharf
#

(it's love2d of course it will work)

#

yep sounds about right

hollow locust
#

Now make 6 jokers, each a letter that spell "Tetris" (Also always Negative)

And when you have all of them in hand, it boots up Tetris

sick sparrow
cerulean rose
#

use SMODS.has_enhancement

hollow locust
#

Dang

tall wharf
#

how the hell do i make a config pAGE

runic pecan
# cerulean rose no

I already changed it to
"not context.other_card.config.center == G.P_CENTERS.m_stone"

tall wharf
#

(i want to make a textbox that allows you to limit the limit of x of a kind hands

#

in case

runic pecan
cerulean rose
#

use ~=

runic pecan
cerulean rose
#

SMODS.has_enhancement(context.other_card, "m_stone")

wintry solar
#

Though checking for all stone like cards would be better

cerulean rose
#

depends on use case really

runic pecan
cerulean rose
#

actually don't use ~= here

#

i just meant use ~= instead of not ==

runic pecan
#

Oh

wintry solar
#

No like not context.other_card.config.center.always_scores

#

It might need the stone check too

#

So put this on the end on the has enhancement part

runic pecan
#

I changed it to look like this

wintry solar
#

Looks good

#

Are you on latest smods?

runic pecan
wintry solar
#

You should update and develop on new calc

runic pecan
wintry solar
#

Now you can do things like lua return { xmult = 7 } and not have to worry about the messages and stuff

night pagoda
#

How do I get the exact xy position of the center of the card on screen?

wintry solar
#

iirc card.T.x is the top left of the card, so you can add card.T.w / 2 and similarly for y

night pagoda
#

I was trying that but it didn't really work with different screen sizes for some reason

#

On the other hand G.CURSOR.T.x doesn't behave like that

#

drawing a circle at those coordinates results in this

#

and it gets different on different screen width/height

tall wharf
#

😭 wtf is partial flush

#

i have decided to put a hard limit on this

granite wharf
#

You need a flush 100

tall wharf
granite wharf
tall wharf
#

yes

#

that is to

#

not make it error the fuck out

granite wharf
#

But that’s not 100

tall wharf
#

close enough

granite wharf
#

99≠100

tall wharf
#

no

#

99 = 100

granite wharf
#

Flush 500 when

tall wharf
#

no

#

100 is already pushing lua

granite wharf
#

But lua isn’t real

sick sparrow
#

well cryptid doesn't support controllers (and it's impossible to control balatro cryptid mod cards that use joker selections with xbox controller/dualshock 4)

granite wharf
sick sparrow
#

balatro is easier to select specific cards with xbox controller than mouse

#

because there will be so many cards that is not feasible to select with mouse

#

like this (126 consumables)

#

also normally you can't sell the potion from cryptid but with controller you can

sick sparrow
#

here's cryptid code that removes sell button from cursed jokers

    --Really hacky patch to remove sell button for cursed jokers
    local G_UIDEF_use_and_sell_buttons_ref = G.UIDEF.use_and_sell_buttons
    function G.UIDEF.use_and_sell_buttons(card)
        local m = G_UIDEF_use_and_sell_buttons_ref(card)
        if card.area and card.area.config.type == 'joker' and card.config and card.config.center and card.config.center.rarity == "cry_cursed" and card.ability.name ~= "cry-Monopoly" then
            table.remove(m.nodes[1].nodes, 1)
        end
        if card.config and card.config.center and card.config.center.key == "c_cry_potion" then
            table.remove(m.nodes[1].nodes, 1)
        end
        return m
    end
```except this dosen't go well with controllers
#

1 mere controller breaks cryptid so hard

#

like you must buy everything then you can buy a legendary but with controller you can bypass restrictions and buy

#

like the controller is murdering cryptid

#

xbox controller is selecting phantom cards too (from preventing removal with my unbreakable sticker)

#

it still correctly handles can_sell()

sick sparrow
#

that it got survived from removal

#

how do i deal with phantom cards, like bypassing the absolute by lovely replacements?

tall wharf
frosty dock
#

👀

tall wharf
#

I'm sorry

sick sparrow
#

how to get card's area?

#

it's simple, card.area

tall wharf
#

thank you mr qwertyuiopfgfg

crisp coral
tall wharf
#

🔥

sick sparrow
tall wharf
#

time to add like 30 stickers

sick sparrow
#

if the carddeck is about to deleted, it marks the card area being deleted and removes absolute card accordingly but it doesn't work for some reason

#

does card.area return cardarea or cardarea.cards?

frosty dock
#

cardarea

sick sparrow
#

then explain why isn't working

frosty dock
#

I can't if you don't show code

#

💀

random sleet
#

what the hell is an absolute card

sick sparrow
# frosty dock I can't if you don't show code

in card:remove()
i used checks for bypassing absolute's ability by checking if cardarea is marked for removal

--in lovely modified cardarea:remove():
self.marked_for_removal = true
--in hooked card:remove:()
if self.ability.unbreakable and not self.area.marked_for_removal then
else
originalremove(self,...)
end
frosty dock
#

the actual remove animation and whatnot already happens in start_dissolve

#

so I think that's what you want to hook

bold sleet
sick sparrow
#

and it's wrong reference

#

it happens if you exit the run or closing (or changing page on) sticker page

sick sparrow
crisp coral
#

well yeah that's how functions work

sick sparrow
#

and, here's some info
truthy values: number, string, function, true booleans, anything else
falsy values: false booleans, nils

crisp coral
#

if you don't return anything then it returns nothing

bold sleet
#

Jelp, my brain is stupid and doesn't know how to make so I can load more than one file for my mod.

frosty dock
#

you're supposed to use it like

#
assert(SMODS.load_file("/contents/"..v))()
bold sleet
#

random bs go!

thorny adder
#

Me when I try to code something my way for 4h and look up the tutorial

random sleet
#

oh smods has a file loading thingy now? cool

tall wharf
#

i can't hook to start_up

#

i wanna add some custom "stickers" that isn't really stickers

#

ok

#

maybe i have to put it somewhere else

crisp coral
#

i just lovely patched start_up

tall wharf
#

fair

crisp coral
#
[[patches]]
[patches.pattern]
target = "game.lua"
pattern = "set_profile_progress()"
position = "before"
#

this should be right after smods is initialized

tall wharf
#

ty