#💻・modding-dev

1 messages · Page 5 of 1

hoary sand
#

it's just not in the raw files

silent sinew
#

really??

#

i took this directly from the game

hoary sand
#

afaict

silent sinew
#

that sounds identical to the one i have

hoary sand
#

like the very last note on the .wav you have sounds longer

#

ig?

golden lake
#

guys is this balanced

odd dock
#

perfectly balanced

royal ether
#

ante 3
score at least 289

golden lake
#

you see if you can get 3 Cruxite Dowels

#

you can just

#

do this

#

every round

#

every time

odd dock
#

just get 3 cruxite dowels :clueless:

silent sinew
#

give the card a chance to explode every payout balatrojoker

odd dock
#

its much funnier this way imo

golden lake
#

true

#

also its not easy getting 3 cruxite dowels

#

cruxite dowels are not compatible with Blueprint

river fern
#

im scared of balatrostuck

odd dock
#

you should be scared

thorn bough
#

sorry if this is a stupid question , but is there a way to directly change the current chips and mult when a joker is triggered?

golden lake
#

my game crashed

frosty dock
#

my game crashed ||me||

golden lake
#

it gives mult equal to 1.5^current ante

hoary sand
#

that's

#

something

#

if you have two does it select 2 cards?

golden lake
#

yes

#

and if you have 5 it selects 5

hoary sand
#

six?

#

do you just lose

golden lake
#

no with six you just keep selecting 5

hoary sand
#

:(

golden lake
#

i have 5 currently

#

i just play whatever the jokers decide

wintry swallow
#

uh oh what do i do

#

im trying to use EnhanceAPI rn

hoary sand
#

do you know what line is causing it

#

in your code

wintry swallow
#

im not sure

hoary sand
#

how much code do you have written?

#

if it's not a lot could you send it?

wintry swallow
#

yeah sure

golden lake
hoary sand
#

line 215 is the last debug message

wintry swallow
#

hmm so i guess its a api problem not the code

hoary sand
#

well

#

maybe?

#

i think you might be missing something in the code

wintry swallow
#

maybe

#

well i appreciate the help

hoary sand
#

when did it crash btw?

wintry swallow
#

when i pressed the enhanced cards button

#

in the collection menu

hoary sand
#

i think it's attempting to display a blank card, but then crashes because it's trying to find the name of a card that doesn't have a name

#

for now just comment out the senddebugmessage line (line 215 of the api lua)

#

that might (?) fix it?

wintry swallow
#

ok ill try that thank you

silent sinew
#

this is a waste of time im giving up

frosty dock
#

that only holds true for vanilla cards

hoary sand
#

i mean you should be able to just swap self.base.name for (self.base.name or "") right?

#

oh the pos stuff idk about

frosty dock
#

a rank will set a pos.y value for itself, but a suit mod might choose to order things differently

#

but the API should handle sprite pos already, so I don't see the point of that

wintry swallow
#

OMG IT WORKS NOW

hoary sand
#

yay!

wintry swallow
#

so i think there were 2 problems

#

1 was the line 215 and the 2nd was there wasnt an atlas thing in the format guide

#

ok there we go

west magnet
#

Finally got something showing up in collections.

wintry swallow
#

hooray

silent sinew
candid cloak
silent sinew
#

bleached

zealous glen
#

"why are you white"

frosty dock
#

(don't mind the codename 6000 suits for my testing mod)

edgy reef
#

Mine's just called "Test Mod" so

frosty dock
#

I mean i just set a stupid display name to get that working

broken vine
#

is there gonna be legendary jimbo and then a common jimbo and both jimbos are insanely intricate jokers

unkempt thicket
frosty dock
#

nah

#

thoughts on this?

#

the inject function is meant to take care of pools on card types for the most part, but can be misused to do stuff during injection of individual centers

golden lake
#

oooo

#

is this for making your own centers?

frosty dock
#

yeah

golden lake
#

nice!

frosty dock
#

I'm gonna have it support consumable types as subclasses of a generic consumable class, but it's easily extensible to other nonconsumable types of centers as well

golden lake
#

oh perfect

west magnet
#

any ideas on how to go about debuffing specific cards in your deck while a joker is active?

frosty dock
#

sample joker subclass

golden lake
#

you can't get card debuffs working without getting into blind logic

#

i'm pretty sure

frosty dock
#

don't mind the c i forgot to change to self

golden lake
#

maybe you can

#

will there be a better way to do batch initialization btw

#

currently i have a giant init_joker() tower of doom

frosty dock
#

you can just do SMODS.Joker(data):register()

#

where data is just a table this time

golden lake
#

oh good

#

so it can be like

#

multiple jokers at once?

#

like a table of all the jokers

frosty dock
#

uh

#

is it too much work to just have a list of all the joker objects and loop over each one running SMODS.Joker() on each one?

west magnet
golden lake
#

fair fair

frosty dock
#

i can contract that to an API function if that's the case, but I think it's not needed

edgy reef
#

I just do this to initialize all needed objects

frosty dock
#

you don't need to reparse it into single params, so should be straightforward enough

edgy reef
#

(plus they're all in separate files)

frosty dock
#

hm yeah that's also an option

edgy reef
#

Can this SMODS.Center be used for custom rarities or is that still a separate thing you'll have to set up?

golden lake
#

technically speaking it'd have to like

#

be contextual

#

because then you'll run into issues lke

#

4 different mods claiming number 8 for themselves

royal ether
#

fun fact

#

you can use strings are rarities

edgy reef
#

Rarities can be strings, so that problem isn't that much of an issue unless two people use the same one

golden lake
#

mod prefixes please

#

add mod prefixes foams at the mouth

frosty dock
#

you can just have your own ones

golden lake
#

i cry every time mod prefixes arent used

edgy reef
#

Mod prefixes?

frosty dock
golden lake
#

good

slow ocean
#

dont me me rewrite jankjonklers again blease

#

(i didnt think to prefix them and i dont want to mess with people's joker files who had it installed)

#

[jestobiology is prefixed though]

golden lake
slow ocean
#

i.e. two jokers that have a joker named "Carlton"

edgy reef
#

ohhhh ok

slow ocean
#

if unprefixed they'd both use like

golden lake
#

say you have a mod with a joker called Lucky Carrot and a mod with a joker called Carrot Patch, but internally they both refer to it as j_carrot

slow ocean
#

j_carlton

#

where properly you would do like
j_mod1_carlton and j_mod2_carlton

golden lake
#

^

frosty dock
golden lake
#

lets goooo

slow ocean
#

not looking forward to it but it must be done

edgy reef
#

I can't wait to rewrite my Sticker API (clueless)

slow ocean
#

tbh i doubt it'll break anything in jankjonklers

#

aside from like, making me rename my stuff

frosty dock
royal ether
#

too bad calculate_joker works with names instead of ids/slugs

frosty dock
golden lake
#

SMODS has its own system

#

that uses slugs

frosty dock
#

couple more questions

royal ether
#

o

frosty dock
#

thoughts on SMODS.Joker{} instead of SMODS.Joker:new{} for initializing?

golden lake
#

i vibe with it

frosty dock
#

it's what vanilla uses for Node and such, so I think it makes sense

#

also

edgy reef
#

I think :new{} is better imo

golden lake
#

:new{} breaks convention + object constructors are kind of the norm

frosty dock
#

the game needs center.key, so unless I want the constructor to always change slug to key, it should make more sense for the ID field to just be called key, right?

golden lake
#

the day steamodded 1.0 drops is the day the entire balatro modding community collectively shits itself and goes down for 3 days as everyone scrambles to fix their mods

golden lake
#

i got confused by key/slug when working on a joker

frosty dock
golden lake
#

thought i had to call slug, had to call key

#

better to unify things to key

river fern
#

chat what should i make today

golden lake
#

blue lobster joker

#

like blue joker but with a lobster

#

i mean the lobster with that scary music in the bg

frosty dock
#

don't make me rewrite your rewrite

edgy reef
#

oki doki

golden lake
#

is itay's hand api coming to 1.0

frosty dock
golden lake
#

perfect

frosty dock
#

no one shall be left behind

slow ocean
#

including my lost sense of whimsy?

river fern
#

where'd it go?

frosty dock
#

yes

slow ocean
#

stuck on my 2015 tumblr blog

golden lake
#

hee hee hoo hoo

slow ocean
#

i hope codex isnt going to cry too much at the changes

slow ocean
#

ah hell

golden lake
slow ocean
#

when balatrostuck comes out i finally have a use for cosplayer joker

slow ocean
#

when are we going to mod in set bonuses to balatro

golden lake
#

btw Lyman

#

have you heard of the Hashmap modus Joker idiea

#

you can print Death cards

#

with Hashmap

slow ocean
#

im

#

CRYING

golden lake
#

how come

slow ocean
#

that legendary codex joker idea

#

feder explained how we could do it

#

and it was literally this

#

down to the modulo

#

because... yknow... alchemists.... recipes.... it works....

golden lake
#

again, Codex's definition of Legendary is Balatrostuck's definition of Rare

slow ocean
#

it doesnt even have a legendary 😭

#

(like i said im still trying to brainstorm a proper Legendary for it)

#

who the legendary joker will be can be figured out later

golden lake
#

btw Lyman did you see what I did before

slow ocean
#

wot

golden lake
slow ocean
#

i think you need to clean out your alchemiter

golden lake
#

i made Cruxite Dowels blueprint incompatible

#

so if you want to do this

slow ocean
#

the 289 score requirement is so cursed

golden lake
#

you need 3 copies of Cruxite Dowel

#

can't cheat it with Blueprint

golden lake
#

this is possible

#

and awful

#

all you need is 3 Cruxite Dowels

#

you can also try to get it with a combo of Vagabond, Antimony and a single Cruxite Dowel

#

eventually you will find yourself in an Arsenic - Antimony loop of death

#

Which duplicates all existing jokers ad infinitum

#

while also doing weird side effects like drawing out your entire deck, giving you 200 tags, fun stuff

unkempt thicket
#

how to make thing eternal(in deck code), and check to not eternal(in joker code)

frosty dock
#

one more

loud pumice
#

does steam modded have any kind of crash logs? I've probably messed up the code but I have no clue exactly what's wrong because it's not telling me

frosty dock
#

SMODS.Tarot{} or SMODS.Consumable{set='Tarot',...}

golden lake
#

latter

#

sets are native to Balatro's code lingo

#

it's going to be easier to work on mods when the language matches between vanilla and modding

frosty dock
#

yep

#

i was just thinking of the implications of being able to extend SMODS.Consumable to create a new consumable type, but ig there's a better way to implement that anyway

golden lake
#

oh yeah that too

#

i tend to think of dev experience

unkempt thicket
#

what is eternal a stamp right?

frosty dock
#

do we have any nonconsumable center types as of yet that would benefit from the OOP approach I'm now taking?

frosty dock
unkempt thicket
#

would this work

frosty dock
frosty dock
#

so are jokers, obviously

loud pumice
golden lake
#

i think hm

frosty dock
#

boosters are also centers

golden lake
#

part of reverie is non-consumable

frosty dock
#

i mean even decks are centers, so at least for vanilla types of objects, this will reduce overhead by a lot

#

i could imagine another type of modification on playing cards as a custom implementation perhaps

severe vortex
#

which provides more flexibilities

random sleet
royal ether
#

chat room thats my api !!

#

also it doesnt do that unless i accidentally did that

whole sun
#

Do you need code to tell the game to put your jokers into the shop?

royal ether
#

also its old and is missing some useful features that i put in the joker/consumable api thats gonna be in the next balamod release

royal ether
whole sun
#

Does Steamodded do that for you?

royal ether
#

im pretty sure it does

random sleet
#

(it does)

#

(its actually harder to make that not happen)

loud pumice
#

it's been about 5 hours and I've figured out how to add jokers to the game, time to take another 5 days to get them to do something

severe vortex
royal ether
#

did feder answer my question i asked them earlier

#

lemme check

#

darn

#

i tried using mobile discord search and it crashed

loud pumice
#

Does anyone know what file the jokers abilities are stored in in the decompiled game? I can't seem to find them

zealous glen
zealous glen
#

Look for specific Jokers

severe vortex
#

as the abilities could be triggered any phases

zealous glen
loud pumice
#

oh god

silent sinew
#

where is card:init called

severe vortex
zealous glen
silent sinew
#

really???

zealous glen
random sleet
#

its abit jank lol

zealous glen
#

You create an object and it initializes it

silent sinew
#

i've been so lost for a while because i'm trying to add my edition to the collection but i keep getting this

severe vortex
zealous glen
random sleet
#

you can just do custom planet cards?

#

like you dont need help with that lol

loud pumice
#

I felt like I had to add a warning to my code just incase

golden lake
#

this is a commonly shared sentiment

zealous glen
#

ya

silent sinew
#

why is it even using something when it only runs if that's nil

loud pumice
zealous glen
#

which makes sense

#

Because you start from not having a name

#

Are Editions "Other" or are they their own thing?

silent sinew
#

they're 'Edition'

zealous glen
#

The elseifs don't check for edition

#

so unless it has specific_vars, it goes in without a name and comes out without one

#

or the issue isnt with an edition

#

try printing the card_type

silent sinew
#

i think i might have found the issue

#

specific_vars calls loc_vars

#

so i need to set those

royal ether
#

i thought editions set names were Enhanced

silent sinew
#

i think it must be meant to have a full ui table name??

#

because i GENUINELY don't see how that localize function could NOT crash

#

it's calling something that is nil

royal ether
#

where do you define the G.localization thing

#

(the api may do it, idk if youre using one)

bitter sand
#

i want to make a suit mod but i don't know how to make a custom suit

loud pumice
#

so in the steamodded wiki it says to use function SMODS.Jokers.example.calculate however in most other mods I'm seeing SMODS.Jokers.example.calculate = function is one better than the other?

bitter sand
royal ether
royal ether
loud pumice
#

that's what I understood, but I wanted to be sure

silent sinew
#

i'm so confused

#

everything on the first pass has full_ui_table.name = nil

#

and it always goes to that function that uses the nil value

#

how does that not always crash

#

i can't even tell what i'm doing differently

royal ether
#

on first pass, full_ui_table starts as nil, then gets initialized to lua full_UI_table = { main = {}, info = {}, type = {}, name = nil, badges = badges or {} }

#

we love recursion

silent sinew
#

the issue must lie in G.P_CENTERS['e_'..editions[i]]

#

set is defined in the P_CENTER

hot jetty
#

i finally got it to work on the mac! hmu if u need help with the setup

silent sinew
#

ok so

#

what exactly is the P_CENTER "key"

royal ether
#

its the id/slug

silent sinew
#

well i mean

#

is it not just inherently defined by setting the center

royal ether
#

its so its easier to get key/id/slug from the card

silent sinew
#

ok

#

with the way i initialized it here

#

if a function calls card.config.center.key on a bleached card

#

should it not return a key

royal ether
#

no because you need to add it to the table

#

just need to add key = "e_bleached" to the table

silent sinew
#

ok wow that was really just it

#

fuck

#

i was on a wild goose chase for so long

#

what the hell

loud pumice
#

I'm ngl for a second I thought you somehow drew the jokers from your deck and your deck was in the joker slot

#

which honestly would've been impressive

silent sinew
#

i think i see the issue

#

it's because i hooked into create_UIBox_your_collection_editions

#

i might need to do more lovely injection for this

#

because i don't see how i'm gonna add bleached to it without calling the function twice and creating 5 extra cards

#

unless i can just replace it altogether

#

because i could genuinely make it more flexible than it is in the basegame

#

cause it only checks for the editions based on a list of names

#

alternatively i guess it'd be better for me to just inject the bleached card into the return value

#

cool cool cool cool

#

Fun Modding

royal ether
#

step 1 of consumable sets in balamod done

slow ocean
#

sweet

silent sinew
#

how the hell

royal ether
#

wtf 0 edition

silent sinew
#

no idea what i can even do here

#

without lovely injection

#

i might just have to check how steamodded adds other stuff to the collection

#

LOL it just overwrites the fucking function

#

i'm just gonna do that i don't care

#

nobody else calling that shit anyways

royal ether
#

:peepoShake:

slow ocean
silent sinew
#

i'll just make it actually expandable

royal ether
#

@loud citrus i think you can use #G.hand.highlighted in context.pre_discard

#

if you want it to proc after discard, you gotta do some weird stuff, since it passes discarded cards one by one

severe vortex
#

SMODS.injectPlanets() where can i find this function being implemented?

edgy reef
#

loader.lua iirc

loud citrus
royal ether
#

the best resources are existing mods. look through mods (that arent jellymod) that have cards that interact with discards, and see how they did their joker functions.

#

(i would suggest using balamod console to help with debugging but... yknow...)

severe vortex
zealous glen
#

@loud citrus also look at the code of how for example Burning Joker works

edgy reef
#

planet.lua should have the contents

severe vortex
edgy reef
loud citrus
#

Big sad thunk

royal ether
#

i have an idea

#

maybe you can set an empty table to somewhere in card.ability in context.pre_discard, then in context.discard you add discarded cards to that table

#

then... uh...

#

idk

edgy reef
#

You should be able to check context.full_hand

royal ether
#

i think theyre trying have the effect happen after discard

edgy reef
#

I don't think there is an after discard effect in the game

#

wait

silent sinew
#

no idea why the holo shader isnt happening

#

actually wait i know

loud citrus
silent sinew
#

nvm i figured it out lol

silent sinew
#

ended up just splicing the original sounds together and editing them slightly

#

the sound replacement works but for some reason it only activates for the first bleached joker

unkempt thicket
#

how do i add eternal sticker to a joker

royal ether
#

card:set_eternal(true)

crisp coral
#

card.ability.eternal = true

#

if you want to skip any checks

slow ocean
#

<@&1133519078540185692>

#

ty mods

unkempt thicket
thorn bough
#

is there an obvious reason this:lua function SMODS.Jokers.j_spoiled_spaghetti.calculate(card, context) if context.end_of_round and not context.blueprint then card.ability.mult = card.ability.mult - 5 return { message = localize{type='variable',key='a_mult_minus',vars={5}}, } end
crashes the game when it triggers? stacktrace says "functions/state_events.lua:200: 'for' limit must be a number"

edgy reef
#

Add and not context.repetition

thorn bough
#

That seems to fix it, thanks!

mystic swift
#

Explain some hands

#

I’m curious

random sleet
#

Blaze: 5 Face Cards
Skeet: a 2, 5, and 9, and any two unpaired cards inbetween
Little Dog: 7 High 2 Low, and three unpaired cards inbetween
Big Dog: Ace High 9 Low, and three unpaired cards inbetween
Little Cat: 8 High 3 Low, and three unpaired cards inbetween
Big Cat: King High 8 Low, and three unpaired cards inbetween

#

flush, house, and five variants of some of these hands exist

hoary sand
#

where did the dogs and cats come from

random sleet
#

wikipedia

wooden nexus
#

Or just something manually?

silent sinew
#

no i just modified newt's custom edition

#

hopefully an actual edition api is planned though because it was hard 😭

hoary sand
#

is ore of a kind just a five of stones

random sleet
#

yeah

glacial oasis
#

is there any easy way to dump the playing cards table to console?

hoary sand
#

i think there needs to be a shahrazad joker

shell timber
#

oh god

#

would fit better as an oddity tbh

hoary sand
#

when you sell this joker, begin a subgame starting from ante 1. if you reach ante 8, you win the blind. otherwise, you lose all gained chips

#

subrun?

shell timber
#

Magic™️ subgame is the oracle wording right

hoary sand
#

Players play a Magic subgame, using their libraries as their decks. Each player who doesn’t win the subgame loses half their life, rounded up.

#

honestly it's funnier with the original text

shell timber
#

fair enough

random sleet
#

that sounds like hell to implement

hoary sand
#

Leave the game in progress as it is and use the cards left in you deck with which to play a subrun of Balatro. When subrun is over, shuffle these cards, return them to deck and resume game in progress, losing all chips in the current blind if the subrun was lost, and double all chips if the subrun was won.

shell timber
#

it just opens a separate Balatro.exe lmao

hoary sand
#

implementation wise i wonder if there's someway to save the gametable thing

#

reset everything and then just reload it after the subgame

shell timber
#

just like

#

temp_G = G

broken vine
#

nah nah nah. play the shahrazad joker and you're forced to set up a a balatro game in real life and send a screenshot of your completed game in to continue your regular balatro game

hoary sand
#

i should make a mtg joker pack

#

all of the power 9

#

actually just all of the banned cards

#

oko and ragavan are legendaries

#

why is gitaxian probe banned

shell timber
#

2 life -> draw a card is kinda strong?

hoary sand
#

i mean it's deck thinning ig

#

demonic tutor that lets you pick a card at the beginning of every blind

random sleet
#

good luck with that

#

i think youd be better off making it so you can open the deck view once per round and select a card in it to add to your hand

hoary sand
#

?

#

that's what i meant

#

just at the start of the blind

random sleet
#

making it a prompt would be hard

#

just make it an optional thing

hoary sand
#

ancestral recall is just pot of greed +1

#

whatever this thing is

broken vine
#

just straight up a joker that gives you 50/50 to win or lose?

hoary sand
#

why did they print that

worthy depot
hoary sand
#

black lotus gives you three (3) chips

#

what's a good equivalent to mana in balatro

#

for the moxes and lotus

random sleet
#

hands/discards?

#

as appropriate

worthy depot
broken vine
#

but giving straight hands is just overpowered

hoary sand
#

red - discards
blue - hands
green - ?
black - joker slots?
white - ?

broken vine
#

but then again black lotus was so

hoary sand
#

discards are strictly worse than hands in most cases

worthy depot
#

Sell this joker and gain three hands sounds kinda mid honestly.

hoary sand
#

and both are worse than joker slots

hoary sand
#

i forgot about that 😭

#

what were the other ones

random sleet
#

hand size
hands
consumable slots
discards
money/round

hoary sand
#

maybe lotus just gives three of each

#

that sounds balanced

broken vine
#

oh, this is on sell? sure, go nuts

random sleet
#

money is flavorfully weird for green but

hoary sand
#

moxes are permant

#

lotus is on sell

random sleet
#

mechanically solid

blissful coyote
#

sell this card to

random sleet
#

that could be a good oddity ngl

hoary sand
#

one with nothing is a necessity

#

significantly better in balatro than magic though

random sleet
#

booster tutor.....

hoary sand
#

! make it trigger on the joker being destroyed for madness synergy

random sleet
#

heros downfall
destroy 1 selected card
if no cards are selected, destroy leftmost joker

shell timber
#

these would be pretty fun as oddities tbh

worthy depot
random sleet
#

yeah oddities :))) please make oddities :)))) plase

random sleet
hoary sand
#

😭

unkempt thicket
#

how do you change the badge name?

hoary sand
#

any of these

unkempt thicket
random sleet
short surge
#

has anybody made any joker that could make you lose the game immediately?

#

not like screw you over, but literally triggers game lost?

mellow sable
#

There’s one that starts a 300 second timer iirc

#

And you instantly lose when it ends

short surge
#

holy moly that sounds fun but stress as f

#

do you remember which mod is it from by any chance?

random sleet
#

myst bobm

wild gyro
#

bobm goes hard

short surge
#

bobm

wild gyro
#

bobm

mellow sable
short surge
#

thx!

echo belfry
#

hey gang, was reading some of the code for how the vanilla jokers work to get an idea of how they're written, and while reading the code for "Flower Pot", Im greatly confused on what exactly Im looking at. I understand that the game is iterating through each scoring card and counting which suits have been played, but am confused why there are 2 nearly identical loops. It looks like the game is checking whether each scoring card is a wild card, but the way in which the suits are counted appears to be identical regardless of whether the card is wild or not. In other words, if a wild card was intended to count for multiple suits, why is the processing set up in such a way where it can only choose the base suit of the wild card

shell timber
#

oh yeah how do you do multiple returns

shell timber
#

therefore, it does the wild cards last, so it can assign them to the missing ones

echo belfry
#

ah I see, that would mean that the way flower pot behaves then depends on the order in which you play the cards, correct?

shell timber
#

the wild cards always trigger last

echo belfry
#

like if a wild is played first it will just take the first available suit (hearts)

#

oh I see what you mean

#

thats interesting

#

I get it now, thanks

unreal nacelle
#

And that's why I'll never be a coder- Code is about as confusing as FNAF lore

shell timber
#

code actually has rules to it

#

oh yeah @random sleet how do you do multiple returns

random sleet
#

by breaking the rules

shell timber
#

oh wait

#

i see

edgy reef
#

We love code! all devs say in unison moments before they have to rewrite everything

random sleet
#

i made a function that acts like how the game handles joker returns

#

through a stroke of dumb luck it worked rather cleanly

royal ether
#

dont you just do return var1, var2

random sleet
#

tried that

#

doesnt work for joker returns

#

at least not how smods does it

royal ether
#

oh for joker

shell timber
#

it'd be something like this right

random sleet
#

yes but you have to also actually add the chips

#

oh wait you do

#

sorry

shell timber
#

awesome

random sleet
#

reading your code gives me an aneurysm so i try to do as little of it as possible

shell timber
#

yay

random sleet
#

(it's the comic sans monospace)

#

(or whatever that font is)

shell timber
#

comic mono

mellow crag
#

Good morning!!

unkempt thicket
#

BOO!

mellow crag
#

Aaaaa

royal ether
#

good morning feder

mellow crag
#

What have you guys been working on?

unkempt thicket
royal ether
#

adding modded consumable sets to balamod

granite wharf
#

im just leaving this here cuz i found it really funny

unkempt thicket
random sleet
#

good morning feder
trying to brainstorm more oddities but i just keep coming up with mtg cards

edgy reef
#

mornin feder
I dropped the pre-release for Relic Jokers and also sketched some of the art for Shattered Singularity

slow ocean
#

good morning feder

mellow crag
#

I will probably do some work on the secret project today

slow ocean
mellow crag
#

XD perhaps

slow ocean
#

finally

#

enchantress in balatro

#

nekusar would go crazy

random sleet
#

rip the ideas doc then

edgy reef
#

HSR in Balatro when

unkempt thicket
#

i think i may have to fix some things with ink and color...

slow ocean
#

dw

granite wharf
slow ocean
#

wait nvm i need to get it again anyway

granite wharf
#

that gives me an idea of adding a deck with 10 different types

random sleet
#

what programming

#

lyman im too insane for your insane ramblings speak up

slow ocean
#

the isaac atlas

random sleet
#

oh for the isaac stuff

#

i havent even put the last one you sent me ingame

slow ocean
#

listen sorry my heads not all here today

#

i had to close aseprite for the first time this month

random sleet
#

mine aint either, 's the weekend time to party

unkempt thicket
#

is anyones today?

mellow crag
#

I just woke up

unkempt thicket
#

modding chat just a bit out of it huh

mellow crag
#

And my shoulder is dying

slow ocean
#

i havent done any art today

#

just music and set up fallout 4

unkempt thicket
#

i haven't done much today

slow ocean
mellow crag
slow ocean
#

that gives me an idea for a new codex joker

random sleet
#

i havent done anything today :(
wanna try to get more stuff coded in thac so i can pester artists with more tangible things

granite wharf
#

someone say isaac

random sleet
#

yea im working on an isaac mod in the background but some of the framework stuff is giving me a headache for it so progress is slow

granite wharf
#

i might make the gif of isaac dancing go above the mult/chips instead of fire

#

that sounds lke a good idea

random sleet
#

good luck

granite wharf
#

none of my ideas are good

#

but it sounds good to me

slow ocean
#

animatedsprites are esoterica

granite wharf
random sleet
#

also the fire isnt a sprite

granite wharf
#

huh

#

oh i should prob like

#

look at the sprite sheet

#

before saying ima make mods

#

would be a good idea

#

where can i find the sprite sheet

slow ocean
#

you can open up your balatro.exe with a program like 7zip

#

all the game's files and code are stored there

crisp coral
#

the lengths i must go to make a single blind work

#

i think i can also fix the defeat func with this

mellow crag
#

is this balamod?

unkempt thicket
#

me with 60 blinds :]

crisp coral
mellow crag
#

i don't like lovely-locked mods TBH

crisp coral
#

too bad, steamodded is borked rn

mellow crag
#

wdym?

unkempt thicket
#

borked?

crisp coral
#

the modify_hand function it calls doesn't have self as an argument

#

i am not going to bother aure to fix this

random sleet
crisp coral
#

also yeah

mellow crag
#

wait really?

crisp coral
#

steamodded 1.0.0 will be lovely locked

mellow crag
#

so i need to learn Lovely XD

mellow sable
#

not really

unkempt thicket
#

oh no...

mellow sable
#

you just need to have it installed

crisp coral
#

no you don't you just have to install with lovely

royal ether
#

technically you dont need to do anything

edgy reef
#

Yea I don't really interact with lovely

#

Unless I'm making Steamodded API

#

I've considered it

mellow sable
#

you can also pretty much just code the Steamodded way with Lovely if you want to sacrifice using an API

mellow crag
#

so it's just:
replace teh DLL right?

mellow sable
#

well you add a DLL

#

not replace it

random sleet
#

not even replace, its just extra

unkempt thicket
#

:/

mellow crag
#

DLL injection my favorite

unkempt thicket
#

i replaced...

mellow sable
#

verify file integrity then

#

unless it works already lol

crisp coral
#

born to steamodded, forced to lovely

royal ether
#

born to balamod...

mellow sable
#

I interacted with Lovely very early on because I wanted Ankh to be separate from a modloader for run validation purposes

unkempt thicket
mellow sable
#

I also used Steamodded (and saw the starts of Balamod) pre-1.0 because I was in a private modding server

crisp coral
#

i got the link to that server but decided not to join

edgy reef
#

I only learned of it after Balatro 1.0

mellow sable
#

it doesn't make sense to join it now imo

crisp coral
#

it doesn't

mellow sable
#

and it's never going to go public because there's some modded demo exes which localthunk would not want distributed

crisp coral
#

well if i ever wanted to fetch them i can join the server :p

random sleet
#

illegal activity....

mellow sable
#

it's mostly just an archive and random discussion about things like glitch hunting and modding from the group of ppl who were active on there

wild gyro
crisp coral
#

just to be sure, it's the one with Hack as the server profile right

mellow sable
#

ye

crisp coral
#

sweet

#

illegal activities here i go

mellow sable
#

what's cool is that mod was made before Steamodded

#

so it was probably the first mod ever made for Balatro

crisp coral
royal ether
#

chat why doesnt the join button work

mellow sable
#

wait what was this chat about? modding dev

#

uh

edgy reef
mellow sable
#

I'm scared to implement this joker

edgy reef
#

Directly adding functions in for API related things you wouldn't typically be able to do.

crisp coral
#

wish you luck, soldier

random sleet
#

retriggering jokers is hell

mellow sable
#

no but this would retrigger everything

crisp coral
#

on another note, why the hell does The Flint not have a proper animation for reducing Chips and Mult

mellow sable
#

🪲

#
[manifest]
version = "1.0.0"
dump_lua = true
priority = 0

[[patches]]
[patches.pattern]
target = "game.lua"
pattern = "self.SPEEDFACTOR = 1"
position = "after"
payload = "initSpeedrunTimer()"
match_indent = true
overwrite = false

[[patches]]
[patches.copy]
target = "main.lua"
position = "append"
sources = [
    "Ankh.lua"
]

Also this is how I use Lovely to set up my mod
It's literally programmed like a Steamodded mod, but without the Steamodded part

crisp coral
#

lmao that's just the steamodded lovely.toml

random sleet
#

looks very similar to the ones they have over at krusty burger

crisp coral
#

but with ankh's lua file

mellow sable
#

yep

#

I can definitely be smart and replace a lot of the function overrides with patches

#

will probably get to that at some point when I overhaul Ankh

random sleet
#

smart is for nerds

mellow sable
#

good thing I'm a nerd 🤓

random sleet
#

you wish

crisp coral
#

i need to do another patch to the game because uh

#

yeah i don't think Flush is a card

mellow crag
#

composite hands wants to have a chat

hallow forge
#

Flush of flushes

mellow sable
crisp coral
edgy reef
#

nooo not my Alchemical cards from my handbook

mellow crag
crisp coral
#

it's funny how this single blind counters at least three mods by now

#

and barely does anything against base game

random sleet
#

i should website

#

does website work with atlas sprites

mellow crag
#

me too actually

edgy reef
#

No

mellow crag
random sleet
#

then im not websiteing

shell timber
#

there's probably a way

loud pumice
#

Hey guys, is there any documentation about the contexts? I don't quite get them

shell timber
#

i will look into atlas website

crisp coral
loud pumice
#

That would be awesome

#

getting the jokers to actually do things is more difficult than I expected

royal ether
#

ok im almost there...

random sleet
#

balamod oddities....

royal ether
#

balamoddities

random sleet
#

balamoddities....

royal ether
#

chat where are badges handled

#

i may be blind or ctrl+fing the wrong words

random sleet
#

there's a create_badge function

royal ether
#

o ty ty

mellow crag
#

okay i know how to do sprite atlases @random sleet

#

ill try to make a mockup of it

crisp coral
#

does anyone know if you can set a multiline pattern

random sleet
#

in loathely?

crisp coral
#

in balatroheartly yes

mellow crag
#

how do I know if lovely works?

crisp coral
#

actually hm

#

i can probably do some other fuckery for this

#

no multiline

wild gyro
mellow crag
#

oh i see

#

cool

gaunt thistle
crisp coral
#

i meant no need for multiline

#

though

#

why the fuck does this code not run at all

gaunt thistle
#

fair fair

#

just saying it's possible and not too hard

crisp coral
#
[[patches]]
[patches.pattern]
target = "functions/UI_definitions.lua"
pattern = "local loc_target = localize{type = 'raw_descriptions', key = blind_choice.config.key, set = 'Blind', vars = {localize(G.GAME.current_round.most_played_poker_hand, 'poker_hands')}}"
position = "after"
payload = '''
print(blind_choice.config.key)
if blind_choice.config.key == "bl_myst_ancestor" then
    loc_target = localize{type = 'raw_descriptions', key = blind_choice.config.key, set = 'Blind', vars = {math.ceil(G.GAME.round * 1.5)}}
end
'''
match_indent = true
overwrite = false
#

the print does not run

#

but the code did get added according to the dump

loud pumice
#

honestly I wish steamodded/lovely injector had more documentation, trying to do anything without stealing code or dumpster diving though the source code feels near impossible

edgy reef
#

I've been debating making a video on how to make stuff in Steamodded

#

I think I will try

mellow crag
#

One atlas BTW

shell timber
#

oh nice

edgy reef
#

YOOOOOO

mellow crag
#

oh wait

shell timber
#

i could probably merge it into the template

mellow crag
#

i need to change the background image

loud pumice
mellow crag
#

the red and blue do not fit codex

crisp coral
loud pumice
# mellow crag

Love your mod btw, it's so well balanced that I sometimes forget its not vanilla

mellow crag
#

We are doing a lot of balance changes for the next update, so be on the lookout for that

loud pumice
#

Honestly my biggest problem is that in the presense of other mods I don't tend to use it because every other mod is so OP

edgy reef
#

I've been having that issue with mine

shell timber
#

what mods do you use? i can make some nerfs to morefluff

edgy reef
#

Since you basically just get a bunch of jokers for free

#

The game becomes inherently easier

crisp coral
#

mystjokers are like the weakest stuff you can find

edgy reef
#

Even through you have work around some nasty downsides

mellow crag
#

YESSSSSSSSSSSS

#

good colors

#

the Codex colors

loud pumice
odd dock
loud pumice
mellow crag
gaunt thistle
gaunt thistle
#

I'm on mobile and very tired atm so I won't be much help

royal ether
#

alright, now the badge colour...

mellow crag
royal ether
#

yessir

crisp coral
loud pumice
gaunt thistle
#

In the meantime you can always @ me or leave a message in the lovely thread for info.

gaunt thistle
#

that file is a monster and I've not wanted to really dig into it

#

if it's in the dump then it's definitely been injected as you see it

crisp coral
#

:programming:

royal ether
#

:programming:

slow ocean
#

oh

#

thanks

#

cool

crisp coral
#

amazing

loud pumice
wild gyro
random sleet
#

(based on what i do in OddityAPI)

crisp coral
#

well i don't have to patch this for the mod to work but damn i hate seeing High Card there

royal ether
loud pumice
#

I know someone mentioned making a video about context's but has anyone written any kind of documentation for them yet?

royal ether
#

yippeee!!!

gaunt thistle
random sleet
#

a lot of what i do in oddityapi is probably helpful to you if you want to make a custom consumable type, since it's not very reliant on steamodded features

crisp coral
#

i'll probably just disable The Ancestor over this tbh

#

killing myself

royal ether
#

i WAS going to add if contexts have other_card/full_hand/whatever, but i didnt

random sleet
#

arachneii youre like the balamod ambassador i s2g

royal ether
#

try balamod.... i want friends...

#

theres some other documentation in the sidebar, but again, outdated

#

(especially the center hook documentation)

mellow crag
loud pumice
#

outdated information is still better than no information

royal ether
#

more alchemicals !!!

random sleet
#

more alchemicals....

mellow crag
#

and that's not even with all of the jokers added XD

loud pumice
#

(sorry for ping)

mellow crag
#

and packs

mellow crag
#

(sorry for my ping XD)

loud pumice
#

I don't really like them, so I try to remember to disable them

random sleet
#

i will simply wait to do website until i have >100 cards and it becomes woefully impractical to do website

royal ether
#

im waiting to do SAP website once i get sprites, but im pretty sure im finishing it all before i ever start on the sprites

#

(i hate doing sprites)

loud pumice
#

what is the min joker count yall would recommend a site like that to be?

royal ether
#

imo 3 or 4 is a good number to start using the website

random sleet
#

oh so im good then i have 0 jokers

crisp coral
#

this is literally my website

#

or, "website"

mellow crag
#

you can try to use the template maybe

crisp coral
#

lazy

loud pumice
#

honestly even that looks good

mellow crag
#

true

crisp coral
#

also i just noticed pap's image doesn't even load lol

mellow crag
#

This is the original Codex wiki page

#

I will probably retire these pages

loud pumice
#

at the moment my mod just adds 2 jokers, hoping to add more but no ideas (and not enough coding knowledge to do even the first 2)

mellow crag
#

So, who's helping me make a HSR mod?

#

XD

crisp coral
#

i don't play hsr

mellow crag
#

its fun

#

you should

loud pumice
#

what's hsr?

mellow crag
#

Honkai: Star Rail

loud pumice
#

oh ew

crisp coral
#

it doesn't have the exitement of failing a 95% roll 5 times in a row

mellow crag
#

XD

edgy reef
#

I do wish that the jokers in the website template had wider descriptions, makes some joker effects harder to read

#

Granted almost all of the jokers have Dagger level descriptions

random sleet
#

pokemon player spotted

edgy reef
#

so

mellow crag
loud pumice
mellow crag
crisp coral
#

fair!

edgy reef
random sleet
#

man wait how do i even make a joker ive had this sitting amongst my register functions forever....

edgy reef
#

what is that

#

HUH

mellow crag
#

ah

random sleet
#

a table of functions

mellow crag
#

MoreConsumables code

random sleet
#

dont think about it too hard

mellow crag
#

my beloved

edgy reef
#

:programming:

mellow crag
#

it's so clean i love it

random sleet
#

thats a blind

#

bait used to be believable

mellow crag
#

one of the blinds of all time

crisp coral
random sleet
#

ayyy fusion support
thats sick

loud pumice
#

man I do not understand a single think I am looking at right now, that might be because it's 130 am but still

night pagoda
#

making something (ignore that it says hips??? instead of chips)

crisp coral
#

don't worry we do not understand our code 24 hours after writing them

edgy reef
#

TRUE

random sleet
# edgy reef what is that

so instead of typing out a billion SMODS.<thing>:new(...):register() and stuffing a billion extra things in after each one of those, i make an abstracted function that takes a table of each <thing> i want to register and registers them all

edgy reef
#

idk what magic I did to make a Buffoon tag spawn specific rarities nor how I deleted the skip button

loud pumice
random sleet
#

each of those functions is a separate thing thanks to the inconsistency between SMODS register functions though, i know a better way to do it when/if they're made more consistent

crisp coral
#

235627356 function arguments jumpscare

loud pumice
#

nm who already set up a keybind to instant type SMODS

mellow crag
#

i dont understand how Codex's code works

#

it just does

random sleet
#

in the future, everything's chrome
and also steamodded object constructors take a table

#

instead of a massive list of arguments, you put all the arguments in one table

#

which also will mean no more 8-25 extra lines of code per object to insert all the function hooks

#

you just... do it instead

loud pumice
#

in the future I just tell AI what I want a balatro joker to do and it makes the code perfectly to do it

random sleet
#

OddityAPI already works like this

#

(except smods code is better than mine)

loud pumice
#

so what exactly is a slug, I've understood it as kinda a shorthand but I'm not sure if that's entirely right

random sleet
#

(the bottom two would be unnecessary with the way new smods constructors work, my code is lame tho)

edgy reef
random sleet
#

yeah its technically not that different

edgy reef
#

Keeps all my joker code in these small little files!

random sleet
#

i could arbitrate every single object if i hated having an even remotely tidy npp interface

random sleet
loud pumice
#

So i've had it more or less right, that's good

random sleet
#

yep! smods will tend to refer to them as "keys" as well

loud pumice
#

Lua def isn't the worst language I've learned, but it's taken some time to get used to some of it. my big problem is remembering to end functions rn

random sleet
#

chat does anyone know where playing card descriptions are created

#

nvm found it (common_events.lua:2578)

loud pumice
#

That makes me wonder how hard it would be to make a card, like what if I wanted to play an 11 of spades

mellow crag
#

There's a rank API

random sleet
#

making new cards isnt the problem, trying to add new things that cards can do is

loud pumice
#

The thorn of spades???

river fern
#

dank ranks... releasing in 20 years...

random sleet
#

yea

#

i need to have actual good ideas first

loud pumice
#

Honestly making a deck with negative ranks would be cool

crisp coral
#

omg

#

thorn

mellow crag
river fern
#

compatibility with bunco's suits (please)

random sleet
#

zero was forever ago that image is from 4/12

loud pumice
#

Like -8 of spades would subtract 8 from your chips

#

Be a fun challenge at least

odd dock
river fern
#

lucky 7 and unlucky 13

odd dock
#

^

random sleet
#

ok binary joker is lit

river fern
#

0 5 10 15 20 25 joker

mellow crag
#

The page is way too long

random sleet
#

add more columns

odd dock
#

gonna make new ui for it feder? 👀

random sleet
#

working with html is somehow worse than working with balatro ui code

river fern
#

in reference to ranks or the html

#

oh

mellow crag
#

nah i did HTML before

random sleet
#

the statement stands

mellow crag
#

i agree with it XD

random sleet
#

chat give me strength im going to make more lovely patches programming

river fern
#

i think that the deck preview could use a few modifications for super sized mods and mod packs

random sleet
#

feder we need pages on deck preview

river fern
#

^

wild gyro
#

feder we need sanity

mellow crag
#

no

#

no

royal ether
#

feder we need pages in the shop

mellow crag
random sleet
#

CoolCry ok

edgy reef
#

:programming:

river fern
#

what does the quick deck preview look on dank ranks

shell timber
#

we need pages so you can swap to a second instance of balatro

random sleet
river fern
random sleet
river fern
#

:)

royal ether
#

yooo i have perma mult/xmult for playing cards without injecting

random sleet
#

yeah but i want it in the card description

#

not as a tooltip

royal ether
#

o

random sleet
#

i can make the mechanic work without injection but i want it to be visually consistent with hiker boost

royal ether
#

🫡 good luck

random sleet
#

(theres probably some janky convoluted way to do it without injection but meh)

mellow crag
#

The page is slowly coming together...

random sleet
royal ether
#

that is an error message of all time

random sleet
#

its like the entire patch dumped lol

mellow crag
#

are you on mobile?

random sleet
#

yes im using lovely on mobile

#

my mobile laptop

crisp coral
#

how the fuck do you draw a mist

random sleet
#

idk about a mist but theres a myst right there

#

looks like an X parasite

royal ether
#

that looks like garlic LOL

wild gyro
#

nose blind