#💻・modding-dev

1 messages · Page 24 of 1

random sleet
#

truly we are ballintro

night meteor
#

...oh. uh.
now I can't quit, lol

random sleet
#

you're now ready to use my mods! whenever i release them

night meteor
#

at least with the quit button

random sleet
#

oh yeah theres a quit button

night meteor
#

The one here dead center doesn't work. it just injects the Steamodded again or something

crisp coral
#

device?

night meteor
#

PC

crisp coral
#

then iunno, the quit button worked when i did the peak mod

random sleet
#

i blame whatever balalib is

maiden phoenix
#

You have to play Balatro forever now, sorry I dont make the rules

night meteor
#

Ok, so, now I'm using this on the "correct" version and it's throwing the same error as before [with my author name corected]

frosty dock
#

uh

narrow pollen
#

OH

#

they have been renamed

#

to atlas

frosty dock
#

I did another breaking change

#

now's the time for them, so please expect them

night meteor
narrow pollen
#

@night meteor so just change the word "Sprite" to "Atlas" in that line and you'll be fine

night meteor
#

[oh and sorry I did the wrong thing Myst]

frosty dock
#

Also remove atlas = 'ASSET_ALTAS', it's renamed to atlas_table and asset atlas is the default now

random sleet
#

oh banger

#

aure when you get a chance can you hmu with that spectrum example

#

if possible

frosty dock
random sleet
#

🙏

frosty dock
night meteor
#

The "YOUR STUCK HERE FOREVER" Update

#

lol

random sleet
#

you should be able to X out of the command prompt window right

frosty dock
night meteor
random sleet
#

alt-tab

frosty dock
#

I saw peak mod and thought I'd have to do some trolling myself

random sleet
#

canon

frosty dock
#

literal alternate tabulator

crisp coral
#

what the fuck

night meteor
#

I do not have a Lovely/reload.toml in the there

#

oh wait

frosty dock
#

Steamodded/lovely

night meteor
#

in the Steamod, yeah

frosty dock
#

the Steamod 💀

#

that's a new one

night meteor
#

gah, new error.
the images had to be renamed to j_FatLuckyCat, but after that error came this one

night meteor
night meteor
frosty dock
#

wtf

night meteor
#

FOUR

frosty dock
#

my keyboard did a funny

#

I meant just remove it

#

there's overlap with atlas on other objects

night meteor
#

Ah, same crash, both removed and... ah

frosty dock
#

so you could do atlas_table = 'ASSET_ATLAS', but it would achieve nothing because that's the default value

night meteor
#

it's in line 9, the .Atlas line is where the error is it seems.

frosty dock
#

can you send the mod code my way?

night meteor
#

??? oh sure

#

Most of this is Numbuh214's work

#

and the image assests are named j_FatLuckyCat.png as I got that error before this one.

frosty dock
#

you shouldn't be changing the key of a vanilla object, so remove that

#

and remove the register call on the atlas

#

actually it's probably my fault

night meteor
#

so, remove the key= from the take ownership line?

frosty dock
#

yeah

night meteor
#

then change the key = bit in the atlas line to lucky_cat?

#

[er, j_lucky_cat]

frosty dock
#

that one can be whatever

night meteor
frosty dock
#

if this is what I think it is, atlas = 'flcr_j_FatLuckyCat' will work, but that's not what's supposed to happen

#

let me fix that

narrow pollen
#

is it that now?

#

used to be "j_flcr_FatLuckyCat"

#

right?

frosty dock
#

atlases don't get prepended with 'j_'

night meteor
frosty dock
#

you're the one adding that

frosty dock
narrow pollen
#

oh yeah

frosty dock
#

and for lucky cat, it's wherever in a huge joker atlas

narrow pollen
#

pos = {x = 0, y = 0}

#

add that as a value in the joker line

night meteor
#

added, booting

#

Boys.

Thank you for all of the help.

We did it!
[spoiled due to something that is SFW but is a fetish to some]

#

[Furry and Fat stuff, as if the name didn't imply it]

frosty dock
#

anyway you're not supposed to need the prefix, I'm in the middle of fixing that

night meteor
#

prefix?

#

oh ok, I'm going to step away for a bit now, your welcome to DM me or whatever or Ping me while I'm out

frosty dock
#

the flcr_ bit

night meteor
#

ah, gotcha

regal shoal
maiden phoenix
#

Oh SMODS.Sprite got changed?

#

Also isn't :register() not required?

olive shoal
#

yeah :register() isnt required anymore

frosty dock
#

register is done internally now

maiden phoenix
#

Yea I'm just seeing it in the code above

frosty dock
#

it should be foolproofed now to where calling it anyways does nothing

olive shoal
frosty dock
#

(jk it's just a test requisite)

#

delete Steamodded/lovely/reload.toml to remove

regal shoal
#

Ok ok, If I change something and reload, does it take in count the changes ?

frosty dock
#

it reloads all mods, so it doesn't account for steamodded itself or other lovely stuff, but any changes in mods will take effect

regal shoal
#

Oh that"s nice !

remote coral
frosty dock
#

i wanna use this to disable mods on the fly, though as you can see it won't really work with anything that uses lovely, so these cases will still need a full restart

#

alright I think the take ownership atlas issue is resolved, it's just a bit more tricky than I thought with taking ownership multiple times

regal shoal
#

GG 🙌

frosty dock
#

i have to check if an atlas existed previously and if it changed

#

if it exists now and either didn't previously or was changed, I add the prefix

frosty dock
worldly sapphire
#

hey guys i'm still trying to figure out how to make this calculate function transform the first played card into a wild card

SMODS.Jokers.j_astraleraser.calculate = function(self, context)
    if self.ability.name == 'The Eraser' and not context.repetition then
        if context.scoring_hand then
            if context.other_card then
            for k,v in pairs(context.scoring_hand) do
                sendDebugMessage(k..": "..tostring(v))
            end
        if context.scoring_hand and context.other_card == context.scoring_hand[1] and context.cardarea == G.played then
            local cardarea = {}
            for k, v in ipairs(context.scoring_hand, context.other_card) do
            v:set_ability(G.P_CENTERS.m_wild, nil, true)
            G.E_MANAGER:add_event(Event({
                func = function()
                    v:juice_up()
                    return true
                end
            }))
            return {
                message = localize('k_upgrade_ex'),
                colour = G.C.BLUE,
                card = self,
            }
        end
        end
        end
        end
    end
    end```
night meteor
mellow crag
#

Soon... (helping autumn with something)

remote coral
mellow crag
remote coral
#

Steven stamp on Steven

odd dock
#

steven stamp on todd

random sleet
#

i like how ur teasing this like its a new mod but ppl already know what joker stamps are lol

#

game companies when they have to market a remake:

frosty dock
#

the bleeding edge is ever changing

random sleet
#

oh is that where all the blood came from last night

frosty dock
#

uhhh

#

I'm innocent-?

zealous glen
#

oops ping sorry

random sleet
#

no

#

its like seals for jokers

wintry solar
worldly sapphire
mellow crag
odd dock
wintry solar
wintry solar
#

can set custom weights for consumable chances too, so this is a 50:50 chance

odd dock
#

like that guy

#

saturated blue instead of darker colors and purple-ish in place of lighter colors pretty much

wintry solar
#

oh yeah that should be straight forward

odd dock
#

with noise or something similar

zealous glen
golden lake
#

why not X1.5 XChips :(

zealous glen
#

XXChips

golden lake
#

there should be a Chipmult mod that adds a third value called Chipmult that's suspended in a state of quantum uncertainty until scoring is done at which point it does a 1 in 2 roll to determine if the added value will be chips or mult

zealous glen
#

There should be a chimpmunk mod that adds a chimpmunk

golden lake
#

those can be the same mod

zealous glen
#

all the chimpmunk does is store bananas in its cheeks for the winter

golden lake
#

chipmult should be purple

zealous glen
#

Maybe Plasma color?

golden lake
#

yes

#

chipmult jokers

#

XChipmult

#

+Chipmult

zealous glen
#

It's a bit tricky because the plasma color is defined by a function and not as a color itself IIRC

golden lake
#

can be just coded in

#

leaving the fate of your run up to an unmodifiable coin toss

shell timber
#

oops all 6s makes it add to neither

zealous glen
#

Actually this might be it {0.8, 0.45, 0.85, 1}

golden lake
#

will the 150 Chipmult you just made be added to Chips or Mult? only time will tell

zealous glen
#

No the probability isn't listed

#

so it doesn't affect it

golden lake
#

as such the chipmult jokers can be allowed to be a bit silly

#

a bit stronger than mult jokers

#

you're gambling hard

#

either making big mult or average chips

#

@mellow crag @random sleet we should collab on chipmult mod

#

me when i lose the run to the needle (the +50 Chipmult was allocated to the Chips, not the Mult)

shell timber
#

i'd be down to make chipmult jokers

zealous glen
#

what about chimpmunk jokers

shell timber
#

monus card

odd dock
#

cult card

random sleet
#

sorry im not smart enough to be a collab dev

remote coral
zealous glen
worldly sapphire
#

a joker that is anti poker hands (if you play a full house the joker just dies)

remote coral
#

Do the Jokers have actual benefits?

remote coral
worldly sapphire
#

yeah, if you play any other hand that was not chosen by him you get 100 chips and 40 mult

#

its one joker, i said jokers mb

remote coral
shell timber
#

that but 5oak

mellow crag
#

it wouldn't be hard to make a xchip mod

#

i can whip something up right now

remote coral
worldly sapphire
#

if hand contains flush the joker dies

#

if hand contains high card the joker dies

remote coral
#

Dies of embarrassment

worldly sapphire
#

also, i'm still trying to figure out why my joker doesn't work

#

:(

#
SMODS.Jokers.j_astraleraser.calculate = function(self, context)
    if self.ability.name == 'The Eraser' and not context.repetition then
        if context.scoring_hand then
            if context.other_card then
            for k,v in pairs(context.scoring_hand) do
                sendDebugMessage(k..": "..tostring(v))
            end
        if context.scoring_hand and context.other_card == context.scoring_hand[1] and context.cardarea == G.played then
            local cardarea = {}
            for k, v in ipairs(context.scoring_hand) do
            v:set_ability(G.P_CENTERS.m_wild, nil, true)
            G.E_MANAGER:add_event(Event({
                func = function()
                    v:juice_up()
                    return true
                end
            }))
            return {
                message = localize('k_upgrade_ex'),
                colour = G.C.BLUE,
                card = self,
            }
        end
        end
        end
        end
    end
    end```
#

its not working

#

ahhhhhhh

mellow crag
#

i am making cursed stuff

zealous glen
zealous glen
worldly sapphire
frosty dock
#

OJKER

#

no

#

please no

mellow crag
#

ojker

frosty dock
#

it's joever

odd dock
#

but why xchips

mellow crag
#

cause it's funny

frosty dock
#

making plasma deck more broken

odd dock
#

tbh best reason to make anything ever

golden lake
#

after chipmult is complete we must make the opposite of chipmult

#

mipchult

wintry solar
#

how are mod badges assigned? I can't get them showing up on editions atm

frosty dock
#

card_h_popup

odd dock
golden lake
#

dont be such a mipchult about it

frosty dock
#

mult stake

#

mult and chips get swapped when each card is scored

#

yes, each card

#

even jokers

shell timber
#

monus card

#

just arrows

odd dock
#

what if just other design and make the lines thicker

golden lake
#

chipmult mod

#

real

mellow crag
shell timber
#

thicker lines look way better

#

+20 chipmult

tawny perch
#

spicy chips

worldly sapphire
#

i think i made an idea that i can't execute

remote coral
#

I feel like it’s just gonna get covered most of the time

worldly sapphire
random sleet
#

ecks chips

remote coral
golden lake
#

a submod for ortalab that turns every jokers name to literal reverse of it

#

Like Ksud for Dusk

#

Hsidnevac

#

Oekrep

#

Surprisingly Hsidnevac sounds like an actual word

royal ridge
# worldly sapphire ```Lua SMODS.Jokers.j_astraleraser.calculate = function(self, context) if se...

try context.scoring_hand[1]:set_ability(G.P_CENTERS.m_wild, nil, true), rather than using the "for k, v" loop and the subsequent set_ability (it doesn't seem necessary and might be breaking it, as you only need to change the first card)

you could also try

if context.cardarea == G.jokers then if context.before and not context.blueprint then
instead of
if self.ability.name == 'The Eraser' and not context.repetition then
after that, you could then get rid of the if statement before the set_ability as the context spam is confusing and it may not meet all those contexts at the same time... ever (and also get rid of local cardarea = {} perhaps? it doesn't seem to be doing anything)

worldly sapphire
# royal ridge try `context.scoring_hand[1]:set_ability(G.P_CENTERS.m_wild, nil, true)`, rather...

like this?

SMODS.Jokers.j_astraleraser.calculate = function(self, context)
        if context.before and not context.blueprint then
        if context.scoring_hand then
            if context.other_card then
            for k,v in pairs(context.scoring_hand) do
                sendDebugMessage(k..": "..tostring(v))
            end
        if context.scoring_hand and context.other_card == context.scoring_hand[1] and context.cardarea == G.played then
            context.scoring_hand[1]:set_ability(G.P_CENTERS.m_wild, nil, true)
            G.E_MANAGER:add_event(Event({
                func = function()
                    juice_up()
                    return true
                end
            }))
            return {
                message = localize('k_upgrade_ex'),
                colour = G.C.BLUE,
                card = self,
            }
        end
        end
        end
    end
    end```
royal ridge
#

there's no real reason to have that long if statement, you're not iterating through anything

#

oh

worldly sapphire
#

i fixed

royal ridge
#

you should move two ends to close this if context.scoring_hand here, before the main batch of code

worldly sapphire
#

just needed to remove the if context.other_card then

wooden nexus
#

Hey so quick question: What mods are on 1.0.0 atm

worldly sapphire
#

its working now

royal ridge
#

gg

worldly sapphire
#

tysm

royal ridge
#

👍

worldly sapphire
#

i'm still learning with this

#

i could start using this in future jokers

#

like a joker who transforms played cards into glass and etc

royal ridge
wooden nexus
#

I just need like one or two to look at how it works is all

royal ridge
worldly sapphire
#

same

#

btw

#

here is the new sprite for the joker

#

The Eraser: The first played card gets turned into a Wild Card

worldly sapphire
#

is there a way i can make a joker work like the spare trousers?

#

it gets upgraded by one hand type

#

but it can work with any hand played

maiden phoenix
#

Updating the Steamodded 1.0.0 repo gives me this error now, did a new lovely update came too or I'm missing something?

zealous glen
maiden phoenix
#

Yea I updated lovely and it fixed it

frosty dock
maiden phoenix
#

That's why the crash mentions it

native osprey
#

any idea why this joker from the BBBalatro mod says +ERROR? running latest steamodded

maiden phoenix
#

Probably messed up the loc_def of this joker

remote coral
native osprey
maiden phoenix
#

Weird I don't see any loc_def, lemme look at the mod's file myself

native osprey
maiden phoenix
#

It doesn't have a loc_def, just add this

#
        loc_def = function(self) --defines variables to use in the UI. you can use #1# for example to show the mult variable, and #2# for x_mult
            return { self.ability.extra.mult}
        end
native osprey
#

thanks, works fine now

#

should x1 art for a custom joker be redrawn for x2 folder? or just use some kind of tool

hoary sand
#

what are you using to make the art?

native osprey
hoary sand
#

if you're on windows you should be able to rescale the images

native osprey
#

okay ill rely that to the artist, because im not the one drawing it

hoary sand
#

you can right-click and open the image and the photos app lets you resize it

worldly sapphire
#

tbh, if you have asesprite you can export the image in 200% size

#

and it will contain the pixels and it will work in the game fine

frosty dock
#

that's fine as long as it isn't required again

gaunt thistle
#

it's not, but we'll just make it a "it doesn't need to be there but we wont complain if it is"

#

I can't make that field functional because it can and will break backwards compatibility, so any future overwise-like features will be under a different field

frosty dock
#

sounds good, but will it do something?

#

oh alright

gaunt thistle
#

yeah, I'm fairly confident that there are developers that have that field set to true and dont want stuff to be overwritten

#

so any functionality like that will be added to a new field

#

this wouldn've been nicer if previous versions made that field optional, which I thought it was, but that wasn't the case

#

sooo we're stuck here due to my fuckup

frosty dock
#

I mean that's whatever

wooden nexus
#

Okay what's wrong here

wooden nexus
# wooden nexus

But yeah, what did I mess up on. I'm doing Steamodded 1.0.0

gaunt thistle
maiden phoenix
#

Also make sure you have the most recent Steamodded and lovely version

crisp coral
#

it's SMODS.Sprite not Atlas

frosty dock
#

oh sorry i pinged

crisp coral
#

what the Fuck

#

aure please start writing a changelog somewhere

#

i beg

frosty dock
#

I'm not doing a full compare 0.9.8-1.0.0, but I'll be writing docs

mellow crag
#

i made your wish come true

wild gyro
#

cursed

#

kill it with fire

mellow crag
maiden phoenix
#

I love it

wild gyro
#

no i do lmao

#

i just said that because it breaks vanilla rules

mellow crag
#

should i make a "Feder's Cursed Balatro" mod?

wild gyro
#

sorry if it sounded rude

mellow crag
mellow crag
hoary sand
#

i might actually need ore of a kind for a mod

zealous glen
maiden phoenix
#

Btw Itay did you port Fusion Jokers to 1.0.0 yet?

frosty dock
mellow crag
#

but it's not out yet

frosty dock
#

I'm thinking the latter to avoid tags having a dead middle param

maiden phoenix
frosty dock
maiden phoenix
#

Rename SMODS.Joker to SMODS.Cardarea_Joker_Card_Back 😎

frosty dock
#

you jest

#

i mean I feel like loc_def really isn't descriptive

golden lake
#

you should call it Baylaytro

edgy reef
golden lake
#

Bay-lay-tro is the only correct pronunciation of Balatro

frosty dock
#

fight me

hoary sand
#

/bəlɑtro/

#

ish

#

/bəlɑt͡ʃɹo/?

odd dock
#

i just say buh la tro

worldly sapphire
#

bahhlatruh

hoary sand
#

bahh?

worldly sapphire
#

sheep

#

need to bahh

#

will la

#

and surely be truh

wooden nexus
#

Recreating all the jokers for 1.0.0

#

at least without effects

maiden phoenix
#

Awesome

#

Btw Aure is the way Back sprites are handled changed in Steamodded 1.0? I remember the texture having to be put in an Enhancers.png iirc

royal ridge
#

any way to change the pos.x of a joker sprite locally rather than globally? so it doesn't apply to copies and such

odd dock
maiden phoenix
#

Oh

frosty dock
# maiden phoenix Oh

it used to draw from config.atlas and was special in that regard, now that isn't the case

maiden phoenix
#

Does it uses a specific key in SMODS.Atlas? (like modicon)

frosty dock
maiden phoenix
#

Alright

worldly sapphire
#

is there a way to change the midas mask k_gold message to like k_wild?

mellow crag
#

Feder work update:
Since I’m very happy with the current states of Codex Arcanum and Fusion Jokers for 1.0 (which will release as soon as 1.0 comes out), I will putting them on a back burner for a bit, while focusing on some newer projects. They are not abandoned.

The new projects are:
A remake of the progress I did on Fool’s Fables,
Jimbo’s Garden,
Helping other people with migrating to 1.0 or adding new features (like autumn’s stamps),
Making random cursed additions (xchips, half ranks, ore of a kind)

zealous glen
mellow crag
frosty dock
#

or just change that line with Lovely, idc

zealous glen
mellow crag
#

Makes sense

zealous glen
mellow crag
#

I wanted to upgrade asap to help me get rid of work later

zealous glen
mellow crag
worldly sapphire
frosty dock
maiden phoenix
frosty dock
frosty dock
zealous glen
maiden phoenix
zealous glen
#

I imagine the update doesn't break any hooks but maybe I could update them to make use of new functionality

frosty dock
#

it's no longer a list of values, but a table

zealous glen
#

And I have one consumable that depends on OddityAPI but I think there's a consumeable API I could use

#

Can I make a typeless consumeable?

frosty dock
#

return { vars = { 'vars' }, key = optional, main_start = optional, main_end = optional

zealous glen
# worldly sapphire k

@frosty dock I think they want a new Joker with that effect instead of changing Midas Mask, no?

frosty dock
zealous glen
worldly sapphire
#

how exactly i take ownership of 'k_gold'?

maiden phoenix
zealous glen
worldly sapphire
zealous glen
worldly sapphire
#

i want to make my joker display Wild instead of Gold

zealous glen
#

Probably change the type to "Other"

frosty dock
zealous glen
#

That's the easy way unless you want to add localization support

maiden phoenix
#

huh

worldly sapphire
zealous glen
worldly sapphire
#

oh

frosty dock
#

you always give these a key to a localization entry

zealous glen
#

But I think the game can just take the message, at least when you call the card_eval_status_text directly

#

From the Faceless Joker code

maiden phoenix
worldly sapphire
#

i tested, and the card shows nothing

#

is there a way i can make it show custom text?

#

like when it activates it shows Wild

frosty dock
#

this is due to card being a dead param sometimes

maiden phoenix
#

Oh so I just need to replace every card with self

frosty dock
#

uhm no

#

self is the center, so the SMODS.Joker or whatever object

maiden phoenix
#

I mean "self.ability.x" instead of "card.ability.x"?

frosty dock
#

if you need the card, it's the third parameter

maiden phoenix
#

Oh I need to move the parameters

frosty dock
#

self.ability doesn't exist because self is a center

#

card is right, but it's the third parameter

#

jokers are no longer special here

maiden phoenix
#

I see

#

Got it working now, thanks 👍

frosty dock
#

np, I hope things go a good bit smoother once there's proper docs

#

I think this was one of the last breaking changes I need, I'm quite happy with the level of consistency of most other things

maiden phoenix
#

I feel bad for people who have more stuff in their mod or are less skilled when they'll have to update their code to fit SMODS 1.0.0, I hope you're ready for the pings lol

frosty dock
#

you bet my docs will have a "Migration guide" section that highlights key differences

#

I'm not explaining everything 50 million times

maiden phoenix
#

That's fully understandable, one of me must be already enough for you

worldly sapphire
#

i'm asking this again (because i don't know if its possible)

Can i make the game load custom text? like if i put k_wild for it to read, can it read from my mod?

#

a custom dictionary entry

maiden phoenix
#

If you're in 0.9.8 you can make one easily, check how other mods do it I'm sure there's plenty of examples

worldly sapphire
#

i was checking codex arcanum

#

do i need to put in a specific file to work?

maiden phoenix
#

No

worldly sapphire
#

mine is like this

#

i tried both and still doesn't work

maiden phoenix
#

IIrc it should be initialized outside of the mod's INIT

worldly sapphire
#

its outside

maiden phoenix
#

Do you do "message = subtext" or "message = localize('k_wild')"

worldly sapphire
maiden phoenix
#

Just put 'k_wild' inside the localize, also it should be between parenthesis

frosty dock
#

do what sdm said if you want to draw from dict

maiden phoenix
#

Yes

worldly sapphire
#

it works

#

tysm

maiden veldt
#

is there a way to change the colours (or any bits of code) in the shaders folder? and if so, how? i.e. gold_seal.fs or negative_shine.fs

wintry solar
#

you could insert a new shader over one that's already in the game fairly easily

#
G.SHADERS['foil'] = love.graphics.newShader(path_to_new_shader)``` 
this should replace the foil shader for example
maiden veldt
#

thanks, i'll try this out later

#

do i need to define newShader beforehand? my code is just G.SHADERS['foil'] = love.graphics.newShader("GS-foil")

worldly sapphire
#

btw, how do i make a joker get a upgrade before playing all cards?

wintry solar
#

you need to put the whole path to your shader

#

try mod.path .. "/assets/shaders/GS-foil.fs"

maiden veldt
#

thanks again, it worked

wintry solar
#

I got the badges working \o/

wooden nexus
maiden phoenix
#

The squad

wooden nexus
#

These are in 1.0.0. I won't be adding their effects in and letting someone who knows what they're doing do it.

#

I'm just making sure every joker is in with art

#

Any with that Shinku Virtue art is temporary art

worldly sapphire
maiden phoenix
#

Every time you're wondering if you can do something the first thing you should do is check if a joker already does something similar and see how it works

#

Like for example what you're describing reminds me of Spare Trousers

frosty dock
#

RTB, Green Joker or DNA could also come to mind

#

it's fairly common behavior

#

best comparable might be midas mask

maiden phoenix
#

By "joker get a upgrade" I think they meant the scaling type

#

It's vague lol

frosty dock
#

oh i was still thinking of the previous question for a sec there lmao

worldly sapphire
#

i say when like, i tried using the spare trousers for a joker i was doing

#

but it worked when i played the hand

#

but the effect of the chips i was expecting did not trigger

frosty dock
#

scaling jokers typically need two different contexts

#

pants, rtb, green joker and similar trigger their upgrade in context.before, then give their mult in context.joker_main

#

aka the else bottom of the tower of thunk

edgy reef
#

Tower of thunk

worldly sapphire
#

thunk Tower

maiden phoenix
#

Btw Aure ever thought of doing a SMODS function of "eval_this" similarly to SMODS.end_calculate_context?

edgy reef
#

There is iirc

maiden phoenix
#

Wow you work so fast

#

lmao

frosty dock
#

i added that like a week ago haha

worldly sapphire
#

i did make the message appear before the hand is played

#

and its working

maiden phoenix
#

Gotta love making git push summary

frosty dock
#

lmao

worldly sapphire
#

barbecue bacon burguer

random sleet
#

eval_this

#

oh wait fr

maiden phoenix
#

Yep

random sleet
#

eval_this in the balatronomicon....

#

look mom im on tv

maiden phoenix
#

The two more satisfied customers are us

random sleet
#

i probably shouldnt assume what it does lol

#

but i am curious

frosty dock
#

spoiler alert: i didn't change it

maiden phoenix
#

Don't trust him, he did and it evaluates if your played hand is cool, if it's not it writes insults all over the screen!!!

frosty dock
#

oh shit someone's onto me

#

quick, i need to revert that

#

/j

maiden phoenix
#

Hahaha

#

Could be another peak mod

frosty dock
#

i mean what i did to the quit button is basically another peak mod

maiden phoenix
#

Aure adding features from its community so cool 🫡

random sleet
#

oh man im so behind on steamodded...

frosty dock
#

no, steamodded is ahead on you

#

that's the reality of bleeding edge

random sleet
#

yeah im back in stake API hotfix

#

living in the far distant past of 5 days ago

frosty dock
#

uh

edgy reef
#

yay another breaking change to fix

frosty dock
#

yeah, expect commits of the last 5 days to annihilate certain aspects of your code

frosty dock
edgy reef
#

loc_def

#

Also wtf does it want from me

frosty dock
#

huh?

mellow sable
#

what changed about loc_def?

frosty dock
#

it's no longer inconsistent af

mellow sable
#

oh

random sleet
#

oh is this the self, info_queue, card thing

mellow sable
#

Well time to see where it crashes my game

#

(once I fix atlas stuff)

frosty dock
#

(loc_def is also renamed to loc_vars)

mellow sable
#

Find and replace across multiple files in VS Code is what’s keeping me from going insane here

#

(not that the changes are bad though lol)

#

(just it makes it 20x easier to fix)

frosty dock
#

in short, there's this function here that replaces whatever localize call would otherwise happen in generate_card_ui (yes, joker vars are also in there now)

#

for centers, at least

edgy reef
frosty dock
#

for tags, it's the same but card arg is dead

#

you can override this function, but using loc_vars should have you covered most the time

#

args order is always self, info_queue, card (where self is the center), return value is a table supporting everything that could be returned as a list before

worldly sapphire
#

one of my jokers worked with this but this one refuses to work.

SMODS.Jokers.j_lea.calculate = function(self, context)
    if  context.before then
        if self.ability.name == 'Spheromancer Pride' and next(context.poker_hands['Two Pair']) then
      if context.scoring_name == ("Two Pair") then
    card_eval_status_text(self, 'extra', nil, nil, nil, {message = localize('k_upgrade_ex'),colour = G.C.BLUE})
    self.ability.extra.chip_mod = self.ability.extra.chip_mod + self.ability.extra.chips
    end
end
end
end
#

it gets the upgrade

#

but it doesn't trigger

wild gyro
random sleet
#

i should figure out an observatory effect for this thing

wooden nexus
#

@gaunt thistle Having weird problem with Lovely

#

The debug window isn't closing

#

even with trying to close with task manager

maiden phoenix
wooden nexus
#

may have to restart pc

worldly sapphire
#

and still no result

mellow sable
wooden nexus
#

Well isn’t this fun

#

Balatro’s not even loading now

maiden phoenix
mellow sable
gaunt thistle
#

that's a new one

mellow sable
#

*window title

gaunt thistle
#

restart

wooden nexus
#

I did restart

gaunt thistle
#

hmm

mellow sable
#

oh yeah check if the window title of the command like says Select

gaunt thistle
#

it's not starting at all?

mellow sable
#

that’s something that happens

wooden nexus
#

I load balatro and it closes after initializing

mellow sable
#

ok nevermind

worldly sapphire
gaunt thistle
#

what happens if you run it without lovely?

wooden nexus
#

okay that's weird

#

I accidentally opened the other window for balatro i had

#

and now it's loading

gaunt thistle
#

are you on Linux?

worldly sapphire
# worldly sapphire below the first end

This is how the code is

SMODS.Jokers.j_lea.calculate = function(self, context)
    if context.before then
        if self.ability.name == 'Spheromancer Pride' and next(context.poker_hands['Two Pair']) then
        if context.scoring_name == ("Two Pair") then
    card_eval_status_text(self, 'extra', nil, nil, nil, {message = localize('k_upgrade_ex'),colour = G.C.BLUE})
    self.ability.extra.chip_mod = self.ability.extra.chip_mod + self.ability.extra.chips
    end
    if SMODS.end_calculate_context(context) then
        return {
            message = localize{type='variable',key='a_chips',vars={self.ability.extra.chip_mod}},
            chip_mod = self.ability.extra.chip_mod,
            card = self,
        }
    end
    end
end
end```
maiden phoenix
gaunt thistle
#

I know oom can cause shit to explode

wooden nexus
maiden phoenix
#

Oh its different

edgy reef
gaunt thistle
#

gotcha

edgy reef
#

30 minutes later (I forgot to open some joker .lua files so they weren't replaced immediately xdd) and it's done.

gaunt thistle
#

maybe an io deadlock? no clue

maiden phoenix
edgy reef
#

Please ignore that the "card" variable is named "center" as I am not manually renaming variables

gaunt thistle
#

new idea: lovely will insult the user at random if they are using steamodded

#

sorta like the overwrite warning

#

jk jk.. unless?

maiden phoenix
worldly sapphire
#

mb ;/

#

where do i place it....

#

where? fool

maiden phoenix
#

Haven't you made other jokers before? I feel like you need hand-holding for every step, you'll never learn that way, sorry if it's harsh

#

the end_calculate should be on the same level as context.before

worldly sapphire
#

silly me

random sleet
mellow sable
#

yep

night meteor
#

Fun fact, seems game devs also have trouble spelling, good to know.

#

@frosty dock [sorry to ping you for this, but]

Is there documentation for Alpha Custom Joker making? Seeing as older joker mods are incompatibale.

random sleet
#

is something different about how you set blind atlases now

#

oh nvm i had atlas_array instead of atlas_table
and then i also hadnt capitalized the table name

#

uhhhhh

#

i feel like it shouldn't be required to have a loc_vars

edgy reef
#

Why in the world is Tag generate_ui different from how it's written in SMODS.Center what

random sleet
#

this is supposed to be Jera

hallow forge
#

elaboration?

mellow sable
#
--- STEAMODDED HEADER
--- MOD_NAME: Talisman
--- MOD_ID: Talisman
--- PREFIX: talisman
--- MOD_AUTHOR: [MathIsFun_]
--- MOD_DESCRIPTION: A mod that increases Balatro's score limit.
--- ICON_ATLAS: icon

----------------------------------------------
------------MOD CODE -------------------------

-- This code doesn't do anything besides making Talisman appear in Steamodded and show a profile icon in v1.0.0+

if SMODS.Atlas then
  SMODS.Atlas({
    key = "icon",
    path = "icon.png",
    px = 32,
    py = 32
  })
end

----------------------------------------------
------------MOD CODE END----------------------

why doesn't this change my mod icon?

hallow forge
random sleet
#

ICON_ATLAS isnt real

random sleet
hallow forge
#

what does that mean?

random sleet
#

it means minor arcana!

#

duh :3

hoary sand
#

like from a tarot deck

#

why is it only queens though?

mellow sable
#

oh I see

#

refactoring 🫠

#

thank you

random sleet
mellow sable
hallow forge
#

i thought icons were a new feature

mellow sable
#

yeah they are

#

I want it to appear in 1.0.0 and 0.9.8 though (it isn't loading the code through steamodded, it'll just appear in thet list)

#

figured it out

#

it was because my header wasn't in the same order as 0.9.8 mods

wild gyro
random sleet
#

it is tho

wild gyro
#

yeah

night meteor
#

anybody here know of anything I look at to make my own jokers for the Alpha Build?

random sleet
#

attempting to set cards to a modded suit

mellow sable
#

oh yeah is loc_vars a function

#

or is it just what loc_def would return?

random sleet
#

loc_vars is a function and it has to return a table

#

the vars field of the table loc_vars returns is what loc_def would return before

mellow sable
#

oh

#

I was refactoring the wrong thing

random sleet
#

minor arcana update:

hallow forge
#

does this mod effect arcana packs? at all

random sleet
#

it adds Page of Cups, Page of Swords, Page of Wands, Page of Coins to turn cards into these

#

the special "center" sprite only applies to unenhanced minor arcana cards

#

i may look into overriding specifically bonus, mult, and wild, but for the meantime

hallow forge
#

now im just confused

broken vine
#

i remember mentions of these before, super interesting to see them for the first time

#

are they straightforward new suits?

random sleet
#

flushes of these suits have special effects

#

unfortunately they're kinda caught up with the rest of thac in 1.0 update limbo

#

these are functionally complete

broken vine
#

ooh, suits designed for flushes only. that's interesting.

random sleet
#

they wont be in your starting deck except for a deck where they replace the standard 52

#

cups gives +1 Hand this round
swords gives X2 Mult
wands give permanent chips to each scoring card (i forget rhe number)
coins gives $5

broken vine
#

very curious how it'll play. your mods are always super fun just to think about!

random sleet
#

my mods are 🗑️ but thanks ig

random sleet
#

i really oughta poke at making or acquiring nicer ones :3¢ hm

wild gyro
random sleet
#

the only take i take is taking out the trash

wild gyro
#

what

random sleet
#

sorry you had to be there

mellow crag
#

Good morning!!

hoary sand
random sleet
#

feder!!!!!!!

#

minor arcana update

mellow crag
#

Saw that

#

What happened to their center?

random sleet
#

they have a special one

mellow crag
random sleet
#

if self.ability.set == "Default"

#

i may also override bonus, mult, and wild

mellow crag
#

Hmm I see

mellow crag
random sleet
#

idk screw em

#

its hacky af rn

#

not really a good way to support stuff atm

mellow crag
#

XD

random sleet
#

i dont even have it set up as a function of the suit its hardcoded

mellow sable
#

how do I setup mod dependencies

#

just doing this isn't working

--- DEPENDENICES: [Talisman]
#

oh wait

#

I can't spell

#

wait apparently trying to load the missing dependency error sprite crashes the game]

random sleet
mellow sable
#

both work

#

I'm just used to this syntax

night meteor
#

...Is it possible to rename base jokers in the Aplha Build?

#

I've tried adding ast part of the things in the SMODS.Joker:take_ownership as [ name = 'the name' ] and it doesn't seem to work

#

@frosty dock
So, I'm trying to reskin the Dagger [and also rename it]

  1. Renaming isn't working [but I haven't tried another thing.]
    But
  2. It seems doing this code here breaks the dagger.
#

It breaks the description and also the interaction with other cards [scribbled due to being a bit out of some peoples taste]

#

.............ok wait

#

Now it's working fine?

#

...I guess it was me, going back in and continuing a run. starting a fresh run with it made it work again fine.

frosty dock
night meteor
#

Ah, thank you. sorry for bugging.

frosty dock
#

(I just have to write it first, and the more questions y'all ask, the long that's gonna take) no worries

frosty dock
#

the displayed name has to be changed through localization

night meteor
#

aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaahhhhhhhhhhhhhhhhhh

random sleet
royal ridge
#

any way i can add local variables into the name and sprite pos of a joker?

unreal nacelle
#

(Initially posted this in the wrong channel, woops)

On a different note, I seem to be cursed with the ability to get so many different ideas for Jokers, yet don't know how to code nor properly balance/word them out- the most recent idea I had was a mod based on the Stick Fighting community, like GildedGuy, Hyun's Dojo, RHG (if anybody still remembers them), etc

night meteor
random sleet
frosty dock
random sleet
#

this was a headache to get right

frosty dock
#

for 1.0, you can specify a loc_txt table when you take ownership

night meteor
#

ah, cool

random sleet
#

this is so unbelievably fragile and precarious it is actually sickening

narrow pollen
#

tbh

#

i would have put them in a for loop

random sleet
#

... where would you have done that

#

like what benefits from a for loop here

narrow pollen
#

instead of the if-elseif stuff like

random sleet
#

oh yeah

#

that part is just because i don't care enough

narrow pollen
#

define a table with {"m_bonus", "m_mult", "m_wild"}

#

ya know what, fair

random sleet
#

getting this fundamentally working was a nightmare

narrow pollen
#

i would have just done it that way because i

#

really like futureproofing my shit

random sleet
#

the center = _center or self.config.center is required

#

the weirdness around the local suit line is required

frosty dock
#

that looks jank as hell

random sleet
#

it is

#

but it's because set_sprites is called at inconsistent af timings based on what's happening to the card

frosty dock
#

but so is thunk code so

narrow pollen
#

yeah this really be a thunk moment

random sleet
#

if the center or suit detection stuff is any different, the card will not change when it should (or will change when it shouldnt)

#

oh yeah

#

aure have you tried making a tarot that sets things to modded suits

#

cuz i got a crash earlier from that

frosty dock
#

not on 1.0 actually

random sleet
#

lemme uhhh grab a stacktrace

frosty dock
#

but it should be same-ish since it directly used vanilla code before iirc

random sleet
#

(with the relevant block of card.lua just in case my line numbers are different from yours)

#

it might have to do with the fact that it seems like suits get registered with a :lower()'d key?

frosty dock
#

uhhh prefix shenanigans?

#

I don't think suit keys get :lower()ered

random sleet
#

well somewhere "Cups" is turning into "cups"

frosty dock
#

is it?

random sleet
#

yeah, and it's not in my code

frosty dock
#

what does it say in the logs the key is?

random sleet
#

thats the thing

#

it's trying to set it to "Wands"

#

but it's registered as "wands"

#

so it indexes SMODS.Suits for "Wands" which doesn't exist

random sleet
#

thank you inspect function your services are incredible

frosty dock
#

sorry what

#

I don't call lower anywhere in related code

random sleet
#

OH

#

NEVER MIND

#

my bad

#

im sorry

frosty dock
#

....

random sleet
#

🙏 sorry

frosty dock
#

what was the issue?

random sleet
#

it's setting the key based on the key in the array i'm calling from

#

so the key is lowercase from there

frosty dock
#

oh lmao

random sleet
#

there is no :lower() i am just using the wrong information

#

that's how i handle the keys for everything else i just neglected to realize suits would need to be different

#

ok suit conv tarot work now

#

it's literally just that i need to hire a better rubber duck

#

now all i need to do is ✨ tooltips ✨

frosty dock
#

🦆

#

quack

maiden phoenix
#

Aure are you interested in updated example mods or its too soon?

frosty dock
#

I will

maiden phoenix
#

Alright

frosty dock
#

ofc any contributions to example mods are welcome though

maiden phoenix
#

Should it be heavily descriptive or I just make something simple?

austere schooner
#

ok so steamodded, how do you get the game to like, recognise your mod even exists

#

i've copied an existing mod [with permission] but it does not seem to want to register

random sleet
#

and it plays nice with others

zealous glen
#

Do you know if Steamodded installed correctly?

frosty dock
#

whatever you see fit, really

austere schooner
#

looking at it, i think i forgot the square brackets around the MOD_AUTHOR field

maiden phoenix
#

I see, noted

austere schooner
#

all i need to do now is figure out how to make a joker use a specific part of a texture atlas instead of an individual file and i can start the... long process of adding 300 individual jonklers
i have bad ideas

narrow pollen
#

🔴

random sleet
#

nooooo that's what makes them cool

#

that they trigger all on their own after the cards score~~~

mellow crag
narrow pollen
austere schooner
#

also is there a list of all the IDs of the vanilla jokers lying around since I will need those I think

maiden phoenix
#

You can extract the .exe in steamapps/common/Balatro

austere schooner
#

ah here we are

random sleet
#

if you ignore all the ways that it isn't custom playing cards

royal ridge
#

i'm a little confused, self.config.center.pos.x affects the sprite globally but self.ability.extra affects the card locally?

random sleet
#

config.center is the same table as the one in G.P_CENTERS

#

like, literally is the same table

#

both are references to the same table

royal ridge
#

oh

#

well then

random sleet
#

instead you can do something akin to this to manipulate the pos of a sprite. here im doing it in set_sprites but depending on what you need to do it'll have to be in different places i think

royal ridge
#

😭👍

broken vine
#

note: make spam email joker

random sleet
#

dang that's a repeat isnt it

#

<@&1133519078540185692>

crisp coral
#

code so bad that mods had to step in

olive shoal
shell timber
#

mod that leaves the play and quit buttons in the same place

frosty dock
#

mod that makes quit button functional

maiden phoenix
#

mod that makes every button the quit button

shell timber
#

no that's a good mod

maiden phoenix
#

You're a good mod

robust tundra
#

thanks

royal ridge
#

@frosty dock most recent steamodded commit crashes when trying to peek abandoned deck during plant

#

probably a more complex cause, but that's a way to recreate it

odd dock
crisp coral
#

ok you know what

#

peak mod 2

gilded blaze
#

how to wipe language selection to make it fall back to English
I broke my modded Balatro completely, and removing the mod doesn't solve the issue

#

man
I hate not being able to wait for Language API instructions

crisp coral
#

go ahead, pick one

zealous glen
#

Maybe verifying file integrity or just reinstalling would help?

crisp coral
#

like just put it somewhere else

gilded blaze
#

I got it

#

remove then readd steamodded

#

and it worked thank goodness

frosty dock
crisp coral
#

aure 😭

#

i pinged you about it 😭

royal ridge
#

dna during the plant also produces the same crash

#

idk

frosty dock
#

I've been squashing too many other bugs 💀

#

I have like over 1k pings in here total

crisp coral
#

tbf most of them are reply pings

#

because people sure love reply pinging

frosty dock
#

sure

#

Anyway point is it's easy to forget a thing when there's this many

random sleet
#

this is baffling to me

frosty dock
#

oh don't worry, it's just because 1.0 is unreleased

#

I will soon catch up once it's released

random sleet
#

assuming i dont get a crateful dumped on my toes when i release thac 1.0

maiden phoenix
frosty dock
crisp coral
#

no i'm pretty sure it's the copy_card func

frosty dock
#

no it's this exact comparison that's crashing

crisp coral
#

because is_face looks fine to me

frosty dock
#

wait

crisp coral
#

id and rank are both nil

frosty dock
#

that means id is nil?

#

hm

#

i don't see how that makes sense

frosty dock
#

it

#

uh

#

it works fine without my Card:is_face() override

#

i guess the original function doesn't compare any values, it just checks equality

#

yeah no i just have to check for falsy IDs

#

oh great, taking ownership breaks blind atlases

maiden phoenix
#

The Plant is a lie

frosty dock
#

alright we good, the plant is real again

oblique gust
#

guys how can i get the name(string) and desc(table) of a joker? i tired
G.localization.descriptions.Joker['j_joker'].name/.text (j_joker as an example)but it says attempt to index a nil value so idk if its related to priority or sum

crisp coral
#

are you on 1.0.0?

oblique gust
#

no not yet

#

on 0.9.8

crisp coral
#

hm

#

it should... work?

#

where are you placing this line

frosty dock
#

that should always work, maybe there's a typo?

oblique gust
#

so im actually trying to modify fusion jokers' FusionJokers.fusions:add_fusion function a little, table.insert a line making use of joker1 and joker2 parameters to both jokers' desc, to help me easily find the matches, before the author chooses to add similar feature officially. so i guess it will be a bit more tricky than i thought

frosty dock
#

oh, in that case you need to load after that mod

oblique gust
#

fusion jokers got its priority set to -10000 so im afraid it'll break things. maybe i gotta type em manually big_blind

frosty dock
#

-10000 means it'll load very early, so neutral priority should just work

oblique gust
#

whaa

#

alright imma try that

royal ridge
frosty dock
random sleet
remote coral
#

Are those enhancements or do the modded suits just have whacky backgrounds

random sleet
#

wacky backgrounds

royal ridge
random sleet
#

i feel like this is easier to look at

frosty dock
random sleet
#

enhancements on these

#

incredible hand_liker very preview

royal ridge
#

i ❤️ love ❤️ custom ❤️ suits

random sleet
#

i love when i make new api hooks that are jank af and then use them to excessive degrees

frosty dock
#

can I get some feedback on this?

remote coral
crisp coral
#

should mention requiring git for command line

frosty dock
#

hm sure

crisp coral
#

oh fucks sake what happened

frosty dock
#

loc_def is now loc_vars and the return value needs to be wrapped in { vars = ... } for consistency reasons

crisp coral
#

thanks aure

frosty dock
#

np

crisp coral
#

like this?

frosty dock
#

yeah

random sleet
#

looks good to me

crisp coral
#

okay the one in collections is still saying error

#

and the atlas in round end is still wrong

mellow crag
#

What have you guys worked on today?

crisp coral
#

@frosty dock in Blind:debuff_hand, should have a check for obj.debuff_hand's return

#

returning true in the object's function does not actually do anything

frosty dock
#

right.. it's a good thing we have a blindomancer around here

crisp coral
#

i am the one who blinds

lament nexus
#

where can i find logs for game crashes from a mod?

edgy reef
#

If you have the most recent lovely update you can find it in Mods/lovely/log

#

Otherwise I don’t think there are any crash logs

maiden veldt
#

where does background.fs draw its colours from? changing RED and BLUE affects it, but i've noticed that there's a slight blue tint to the swirl

#

same picture but greyscaled to show the colour difference

frosty dock
#

what else should this include?

maiden phoenix
#

Maybe specify the {vars = {... in loc_vars since it's not in loc_def

frosty dock
#

I'll leave that as a 'refer to docs'

#

i did also add Tarot/Planet/Spectral -> Consumable

maiden phoenix
#

Does it make modding custom consumable easier that way?

frosty dock
#

boilerplate removal, the code for the three of these were always basically identical

#

and it supports custom consumable types that way

maiden phoenix
#

nice

edgy reef
#

Huh, I guess I'll have to do a few more things for this to display properly.

#

(I'm adding this into Ortalab just in case Chameleon Joker decides to break again)

edgy reef
#

Ok so now the custom error message pops up with the stack trace but it's also recursive somehow?

zealous glen
gilded narwhal
#

Hey guys I'm trying to get 1.0 to work but when I use lovely injector I get this (also here's all the folders)

#

Also I'll get the same error but with deck.lua instead of lua_reload.lua

frosty dock
frosty dock
gilded narwhal
#

Which file is it

#

Because I've downloaded the one that's on the github

frosty dock
#

download the source from the main branch on github (press the green code button, then download zip)

gilded narwhal
#

Did that

frosty dock
#

delete the steamodded folder and re-extract that download into mods

#

latest 1.0 doesn't have a lovely.toml file, but a lovely directory with multiple files

#

and you seem to be missing some other files too

undone ingot
#

heyo, is there a google doc or something for guides on writing balatro mods?

#

i.e. like a breakdown of the script?

frosty dock
#

currently updating this for steamodded 1.0, but it has a good bit of information on 0.9.8

gilded narwhal
undone ingot
#

word awesome, ty! Also, the one thing im worried about is mod software corrupting my steam game file, is there any protections against this? obvi just stressed bc of the malware notifications

#

and/or is steammodded approved by thunk?

frosty dock
frosty dock
#

there's a much better solution fortunately

#

Lovely uses runtime injection to mod the game without touching the game files directly

#

either is safe to use - steamodded is open source, you could build the injector yourself if you wanted

undone ingot
#

oh thats awesome, thank you!

frosty dock
#

All good, please do ask if anything else is unclear

gilded narwhal
frosty dock
#

just go on github and download the code again

undone ingot
#

ye I really wanna make a casino-themed mod but my coding is only like python data processing and bash for my job so im tryna see how complicated it is lol

frosty dock
#

lua really isn't too bad to get the hang of, it just has a few quirks here and there

#

like 1-indexed arrays, or that basically everything is a table if it's not primitive

gilded narwhal
edgy reef
#

Lua is fun until you have weird table shenanigans or nodes[1]nodes[1]nodes[1]nodes[1]nodes[1]nodes[1]nodes[1]nodes[1]nodes[1]nodes[1]nodes[1]...

frosty dock
gilded narwhal
#

Correct

undone ingot
#

word ill just read thru the source code to get a hang of it

#

last time i looked at it looked really clea

#

*clean

#

thunk is such an orgnaized coder it makes me so happy lol

frosty dock
gilded narwhal
#

This is mods

mellow sable
#

mods should have the Steamodded code in a folder called Steamodded

#

(although at least you have the Cryptid code in its own folder 👍 )

frosty dock
mellow sable
#

(but make sure you download the latest source code of Steamodded to use that)