#💻・modding-dev

1 messages · Page 6 of 1

random sleet
#

chat i fixed it (i missed one ' in a ''')

crisp coral
#

unlike noir silence the icon is literally the fucking reception name
(spoilered because lyman has not reached this part in library of ruina)

night pagoda
#

when I hear the word mist I imagine spiral for some reason

random sleet
#

i was expecting a touhou reference

crisp coral
#

and the character is like this (feder and lyman don't fucking look)

edgy reef
#

what da

crisp coral
night pagoda
random sleet
crisp coral
#

what the fuck is a ||soul edge||

random sleet
#

(bashes own head in, jumps in boiling water, etc sorry for ping)

random sleet
crisp coral
#

oh it's supposed to be ||the manifestation of Nothing There as a weapon||

night pagoda
#

when does Card:update() trigger?

crisp coral
#

lmao okay

crisp coral
night pagoda
#

huh

#

what am I doing wrong?

#

the bonus doesn't reset when there's no joker

crisp coral
#

G.jokers is the entire cardarea

#

you'd want #G.jokers.cards

night pagoda
#

what's the difference?

night pagoda
#

I'm going through the table of jokers, why would I want its length

random sleet
#

oh dear

edgy reef
#

Wait

#

couldn't you just do next(find_joker("Sledgehammer"))?

crisp coral
#

oh i thought you meant the bonus resets when there's no jokers on the field

#

yeah just that

night pagoda
#

huhhh

#

I used my method in any other place lmao

night pagoda
random sleet
#

lets joe

mellow crag
night pagoda
#

it works when I add joker

#

but not when I remove

random sleet
#

hm that should probably be higher...

#

oh no wait thats how hiker bonuses look

#

... i dont agree, but i guess it works

zealous glen
zealous glen
random sleet
#

i just would prefer if it was chips, mult, xmult in that order

#

but if the vanilla game splits "bonus" chips all the way at the bottom then i guess /shrug

zealous glen
zealous glen
crisp coral
zealous glen
random sleet
#

it should be

zealous glen
#

Do you have an APIAPI so I can know how to make an API?

royal ether
#

AAPPII

broken vine
mellow crag
crisp coral
#

just monika

mellow crag
#

does she delete all of the other jokers?

broken vine
#

no

crisp coral
#

does she turn the game into ddlc

royal ether
#

i like the idea of a legendary joker that just "does helpful things", sorta like how hearthstone has "random helpful effects"

broken vine
wild gyro
#

that reminds me of the fact that i have ddlc rotting in my epic games launcher from a few months ago

mellow crag
#

does she turn the game into endless

random sleet
#

the ace of spades she tells you not to worry about

slow ocean
#

purple spades

royal ether
#

giga-ace of spades

slow ocean
#

pan of spades

mellow crag
broken vine
random sleet
broken vine
#

no

crisp coral
#

does she jumpscare you if you have obs on

royal ether
slow ocean
#

i will never not shill legendary jimbo

mellow crag
#

legendary jimbo my beloved

broken vine
#

yeah i'm a big fan of bunco in general and jimbo's going to be hilarious

broken vine
shell timber
#

oh yeah myst do you mind if i also use toki pona characters for blinds

broken vine
#

the plan is 1% utility, 99% emotional support and vague cryptic comments

#

perfectly makes up for my lack of coding skills

crisp coral
#

go ahead

shell timber
#

fair enough lmao

royal ether
#

she just says she does things that you cant verify

#

yep increased your luck by 20%!

slow ocean
#

i own toki pona though

#

pay up

crisp coral
#

i'll just take kili and akesi first

narrow pollen
#

ohhhhhhhhhh my goddddddddddddd

zealous glen
random sleet
#

how do heck does xmult work

shell timber
#

currently planning to use sin

narrow pollen
#

you think that's confusing?

#

try figuring out how the fuck the deck preview works

crisp coral
random sleet
#

numbah do you even know what im doing

slow ocean
#

/hj

zealous glen
random sleet
#

no not really

royal ether
#

boowomp

loud citrus
odd dock
#

cheesy jokers pretty sure

zealous glen
#

When it's finished I could maybe release it as an API if there's a want for it, but Idk how to make it into an API

zealous glen
random sleet
#

no i need

#

i cant figure out how to apply it in the first place

#

i think?

loud citrus
zealous glen
royal ether
#

playing cards x_mult come from Card:get_chip_x_mult(context)

random sleet
zealous glen
#

Yeah

random sleet
#

muting all of you

royal ether
#

sorry 🫡

zealous glen
#

My bad

random sleet
#

ok got there

#

... it's not actually evaluating, but the description works at least

broken vine
#

seems a little underpowered

random sleet
#

yeah it's just for testing, i'll buff it later

zealous glen
# loud citrus I would actually like it if you don't mind :) I'm wondering which mod has the jo...

First, when a card is created, I give it a new variable

local set_ability_ref = Card.set_ability
function Card:set_ability(center, initial, delay_sprites)
    local set_ability_val = set_ability_ref(self, center, initial, delay_sprites)
    self.ability['perma_bonus_mult'] = self.ability and self.ability.perma_bonus_mult or 0
    return set_ability_val
end

Then you need to hook either eval_card or the get_chip, get_chip_mult, etc. functions to make it be computed

#

Since I wanted it to work for Jokers, I had to hook eval_card directly, but I think cards can just hook the specific ones

slow ocean
random sleet
#

so true jestie

#

dammit i forgot about this issue

zealous glen
random sleet
#

seems good

mellow crag
random sleet
#

should extra applications of xmult boosts be multiplicative or additive
also should extra xmult stack multiplicatively or additively with "base" xmult

zealous glen
#

I think it should work like that

crisp coral
random sleet
#

jokers that scale xmult scale additively

#

the only situation where one card gives xmult twice it's as two triggers, not two numbers getting added

narrow pollen
#

hearts, spades, diamonds? completely fine.

zealous glen
loud citrus
#

I saw both messages

narrow pollen
#

custom X cards are added on the fly as separate sprites

random sleet
#

make a custom X card sprite for clubs....

zealous glen
#

Maybe the code misses the first/last element and it happens to be Clubs for example

#

Maybe there's a typo in some dictionary that's supposed to refer to Clubs

narrow pollen
#

yeah, clubs is neither first nor last by default.

#

i'll see if adding a custom sprite fixes it

random sleet
#

maybe there should be a deck that has letter cards and hands are scored based on scrabble score if a valid word is played

narrow pollen
#

it might have something to do with dankranks

zealous glen
random sleet
broken vine
crisp coral
#

no plasma deck

#

not balanced

random sleet
#

balanced. as all things should be.

broken vine
#

wait, scrabble as a deckbuilder just sounds like a actual complete game in itself.

random sleet
#

wasnt there a game that was basically that

#

but like dressed up all fantasy RPG like

broken vine
#

wouldnt be surprised if it already existed

#

wouldnt be surprised if there was a fantasy rpg version of it

zealous glen
#

There was a scrabble batlle royale IIRC

broken vine
#

scrabble is already in a battle royale format!

shell timber
#

babble royale is pretty fun

#

matchmaking is kinda dead though

random sleet
#

joker scroker....

frosty dock
shell timber
#

is there a template for the blind chip shine

frosty dock
#

I have one, can send later

#

I'm away from my pc rn

zealous glen
random sleet
#

aure did you see giga queen

random sleet
frosty dock
#

oh darn it

#

I love that

edgy reef
#

thank you

random sleet
#

ive been learning how to inject with lovely

#

if you want i can send you the relevant code at some point

zealous glen
#

Did you use any reference to learn it?

frosty dock
#

good, because steamodded 1.0 will require lovely

random sleet
#

risk of jesters mainly

#

i was actually wondering if this would be good for inclusion in smods actually

frosty dock
#

what'd you do?

random sleet
#

it's hiker-style buffs

#

for mult, xmult, hmult, hxmult

zealous glen
#

I think so

frosty dock
#

ah still that

zealous glen
#

Especially if it works for other objects

#

besides playing cards

edgy reef
random sleet
#

it works on pcards idk abt other things
if hiker code works on other things then it should work, the code is practically the same?

edgy reef
#

I already have negative dollar support bundled into the Payout Arg API

zealous glen
#

Currently I'm hooking but one could inject

random sleet
# frosty dock ah still that

i just know you had mentioned previously wanting to avoid having "coremods" as much as possible, and this seems like something other people would be certainly interested in using. a unified method for it would cause a lot less headaches and repeated description lines.

hallow forge
#

anyone know how to make a joker effect trigger after a hand is played, i don't care whether it's before or after jokers?

frosty dock
zealous glen
#

Thank you Autumn and aure for their contributions

random sleet
#

alright just gotta peel it out of Thac real quick

zealous glen
#

Me @ autumn and aure

hallow forge
#

sorry, i meant after tghe hand is scored

shell timber
#

hm (from 5381's suggestions)

zealous glen
zealous glen
shell timber
#

probably a bit too strong for non-showdowns

random sleet
#

yeah only showdowns get to shutdown jokers

shell timber
#

hm

frosty dock
#

hm yep

shell timber
#

"-4 mult for modded / vanilla jokers"?

zealous glen
zealous glen
#

If you wanted to

shell timber
#

eh i won't include blinds this update

frosty dock
#

The New is significantly harder than The Old if you don't have several different large joker mods tbh

shell timber
#

mhm

zealous glen
#

And vice-versa

mellow crag
zealous glen
#

If most of your collection is modded then The Old is trivial

royal ether
#

good night chat room

mellow crag
#

goodnight

random sleet
#

gn balamodder o7

zealous glen
#

Goodnight arachneii

short surge
#

first queen attempt...

random sleet
#

wowie your art continues to be incredible

zealous glen
hallow forge
night pagoda
#

the loop wasn't called at all because of zero jokers

slow ocean
#

me showing up to new kenny art drop

#

makes my day every time

hallow forge
#

I don't know what context i'm supposed to be using (this is in a .calculate function btw) to get the card to be removed after the hand is already scored.

            local cards = {}
            for _, v in ipairs(context.full_hand) do
                table.insert(cards, v)
            end
            local rand = pseudorandom("dragon",1,#cards)
            cards[rand]:start_dissolve(nil, true, 0, true)
        end```
short surge
edgy reef
#

You need to use calculate.destroying_card

#

Then run the logic to figure out what card to destroy, then use return true

short surge
#

yeah cards are supposed to be destroyed at end of turn, although determined prior to the hand is played (technically)

hallow forge
#

do I need the context checks?

short surge
#

for example, say you want to destroy cards that are heart, you should check suit in context.destroying_card

#

and this condition will trigger for every scoring card (I think)

edgy reef
#

Basically yea

golden lake
#

morning chat

slow ocean
#

gm

edgy reef
#

hello

slow ocean
#

im about to head to sleep

zealous glen
#

Goodnight lyman

#

Morning akai

slow ocean
#

a mimir

#

akai did u ever do a sacrificial slab jonkler

golden lake
#

questbed

random sleet
#

mannnn i thought the buy and use button would be easy to adapt for select and use but it's so tied to the shop...

slow ocean
#

slab is differennnnnnnnnnt

#

(not really)

#

(it kind of is)

#

but i getcha

mellow crag
#

what are we talking about slabs?

random sleet
#

chat am i cookin

shell timber
#

those are very specific

random sleet
#

yea

crisp coral
#

very

#

are these mtg cards

random sleet
#

yea

zealous glen
#

Blood Moon when

#

"Name Sticker" Goblin when

#

Pardic Firecat when

random sleet
#

some of these are at least partially just the thought experiment of adapting the effect

crisp coral
#

does Blood Moon just disables enhancements

random sleet
#

the real mtg Blood Moon card says "Nonbasic lands are Mountains" which overrides all abilities it would have aside from those of a Mountain (theres some Rules Shenanigans that can avoid this but for general understanding its whatever)

sleek notch
#

All enchatned cards are nonenchanted hearts?

random sleet
#

i dont know if its really mechanically possible to just debuff the enhancement

shell timber
#

i want to do one with nothing as an oddity

random sleet
#

ok then i guess i wont CoolCry

shell timber
#

oh you can

sleek notch
#

but what about harness infinity

golden lake
#

how we doing chat

hallow forge
#

fine

dim ice
#

hey do you guys know how to check for specificly played hands (like sly joker) because i havent found anything on it, and ive searched alot of jokers but i might have missed one

maiden phoenix
hallow forge
#

finally got my joker to work

dim ice
#

oh yea i kind of forgot about those

#

thanks

hallow forge
dim ice
zealous glen
hallow forge
#

What was the other one?

zealous glen
#

One sec minor thing came up

hallow forge
zealous glen
#

Inspired by Super Auto Pets

narrow pollen
#

okay so

#

apparently

#

a-fucking-pparently

#

the reason this is a problem is because for whatever fucking reason

#

deck preview does not format your cards in the same way it formats literally everything else

random sleet
#

yeah that tracks

narrow pollen
#

so i am going to have to figure out every single spot a card object could potentially store its suit

random sleet
#

chat i am going insane

bold osprey
#

more

#

we want more

narrow pollen
#

oh my fucking god it worked

#

wait, gg

#

...oh my god did dankranks fuck over my straight detection code

maiden phoenix
random sleet
#

i hope not

narrow pollen
#

i'm sorry

what

frosty dock
narrow pollen
#

@frosty dock to make the game... recognize when you're playing a straight...?

frosty dock
#

the playing card API already does that for generic sets of ranks...

narrow pollen
#

...

#

oh

frosty dock
#

you shouldn't need your own implementation

narrow pollen
#

well, i would need my own implementation anyway

frosty dock
#

why?

narrow pollen
#

because i am referring to

frosty dock
#

uh

#

gotcha, I'll try and add some is_rank function to hijack

narrow pollen
#

i am trying to make it more easily compatible with custom suits and custom ranks

#

despite saying i probably wouldn't

#

suits are easy enough

random sleet
hoary sand
#

why'd you swap cups and swords?

random sleet
#

uhhhh

#

these are new suits, not reskins of vanilla

hoary sand
#

ohhhh

queen scroll
hoary sand
#

is it for six hundred or a seperate thing?

random sleet
#

separate thing. i'm built different.

frosty dock
#

that might be.. uh... quite a handful

#

I can try

random sleet
#

understandable

queen scroll
#

i think you can use lua’s debug library to check what it’s being compared to, and then choose whether or not to return it

#

i tried myself and it seems possible, but i’m personally not familiar enough with lua to do it

frosty dock
#

is this pushing things too far?

crisp coral
#

i do not understand a word

#

so probably not

golden lake
#

i think it works!

random sleet
#

looks like generic Center injection?

frosty dock
#

i already had center injection, I'm abstracting further

golden lake
#

so to summarize, we'll have:

  • center injections
  • standardized display for modded consumables and modded hands
  • mod icons
  • mod compatibility
  • mod prefixes
    am i missing anything
random sleet
#

oh can this be anything? i did just kinda skim it

golden lake
#

im sooo happy with standardized generic consumable systems

frosty dock
#

I was already gonna deal with non-center game objects, so why not abstract one more and have the parent class be generic game objects

#

damn, looks like I forgot G.P_CENTERS is unavailable during declaration here

#

guess I'll have to change the time when this loads

mellow crag
#

oh that looks interesting

frosty dock
#

works, just needed to make sure loading objects was skipped properly when init_item_prototypes is called pre-boot

zealous glen
#

Not 100% happy with it but not sure how to improve it right now

#

What do you think?

crisp coral
#

the front limbs should be bigger and starts a bit lower i think

zealous glen
random sleet
# random sleet

looking for some input on what makes sense to people: i want there to be special effects for the minor arcana suits when used in a flush;
should the timing for it be after all playing cards score, or should the timing be just before plasma deck timing?

hoary sand
#

i think it'd be nice before scoring

random sleet
#

Cups - (chance of?) freebie hand
Wands - Increase chip value of played cards (ala hiker)
Coins - MONEY
Swords - Reduce Blind requirement

crisp coral
#

looks better

zealous glen
hoary sand
#

does anyone have any suggestions on how to clean these up

#

red's kind of a struggle

random sleet
#

something like this maybe?

#

black could stand to use the whole canvas, tbh.
green mana try to make sure the "branches" of the tree are visible

random sleet
ionic isle
#

cool

maiden phoenix
bitter sand
#

i'm creating a blind for my crown suit but i can't find a name

#

(it will debuff crown cards)

#

nevermind i know

dim ice
#

hey do you guys know how to give discards mid round?

#

wait

#

no ill try to find it myself, i thought of something

crisp coral
#

ease_discard

dim ice
#

ok so its something else in the code thats wrong

#

oh figured it out

#

it works now

royal ether
#

good morning chat

night pagoda
#

👋

maiden phoenix
#

👋

frosty dock
#

hi chat

maiden phoenix
#

👋

frosty dock
#

〰️

royal ether
#

~

frosty dock
#

🌊

random sleet
# random sleet

now i gotta figure out how to make the cards have like a tooltip describing their effects...

calm nova
mellow crag
#

I am so so so happy to announce that Version 1.1 of Codex Arcanum is out!!!
This update bumps up the total of alchemical cards to a whopping 24, while also balancing a few of the early alchemicals.
It also adds a new joker, new tarot, new spectral, and does a lot of changes relating to performance and bugs.

And, there's a new wiki page! You can find it here: https://itayfeder.github.io/Codex-Arcanum/
You can download version 1.1 from here: https://github.com/itayfeder/Codex-Arcanum/releases/tag/Release_1.1

GitHub

Added 12 new alchemical cards: Soap, Manganese, Wax, Borax, Glass, Magnet, Gold, Silver, Oil, Acid, Brimstone, Uranium.
Added 1 new joker: Mutated Joker
Added 1 new tarot: The Seeker
Added 1 new sp...

shell timber
#

woah!

#

oh i should make colour merchant shouldn't i

shell timber
mellow crag
#

I should? I’ll do that soon

shell timber
#

idk i don't think most people would look here

bitter sand
#

@mellow crag can i reuse your musical suit code to make my own suit ?

bitter sand
mellow crag
#

Oh sure

bitter sand
#

thx

#

i'm gonna add your name to the autors of the mod

#

and i'm gonna download the new arcanum

wintry solar
#

anyone know if it's possible to lengthen the positive side of a cosine graph but not the negative side?

zealous glen
#

Probably yes, what do you want exactly

bitter sand
wintry solar
#

working on a fluorescent shader and was hoping I could shorten the desaturated time and elongate the saturated time

#

although having looked at this I'm not sure if I actually need to

random sleet
#

you could add some amount to center the cosine above the origin (though i suppose it depends how you can handle >1 values)

gaunt thistle
#

I think it might be time to start working through conflict management sadge

#

Or at least some way to notify the user when patches modify the same location

#

Otherwise this is going to get messy FAST

wintry solar
#

I think my issue is I feel this rotates throught too fast to be comfortable to play with, but if I slow it down it then stays desaturated for too long

shell timber
#

just remove both patches and the original code as a compromise

wintry solar
#

so looking for a graph more like this terrible sketch

random sleet
#

idk if its what you want, but try doing like +0.4 to the cosine result and capping it at 1?

shell timber
#

if statements are Really Bad in shaders right

wintry solar
#

will give it a try after I've eaten

zealous glen
#

If you can detect when cosine is positive or negative you can use an if/else to do it

crisp coral
#
#

boop

zealous glen
#

It will be smooth but not differentiable

#

Easings help too

crisp coral
#

it is an easing though

bitter sand
#

i made a guillotine blind because what the more effective against a crowned person ? a guillotine ! (smells like french revolution)

crisp coral
#

the french

bitter sand
#

btw i'm french so the idea came naturally to me

zealous glen
#

Since we're talking French

maiden phoenix
#

french gaming

bitter sand
#

i said the world french now everybody's showing a little french touch in their mods 😂

odd dock
#

#\modding-french channel

bitter sand
odd dock
#

why'd that capitalize

frosty dock
#

lol

#

steamodded 1.0 will drop with localization support btw

loud pumice
zealous glen
odd dock
#

discord syntax

royal ether
#

discord gaming

odd dock
#

i put # modding and it capitalized so i put a \ before it and it sent that

zealous glen
#

balatrocord gaming

maiden phoenix
zealous glen
#

Today I'm refactoring my code to separate it into different folders and files, in such a way that, say, if the user blacklists all Joker that require hooking a function, then it doesn't hook it. (Via calling require inside a file for each Joker.)

How does everyone structure their mods?

#

It seems "massive text file" is very common lol

bitter sand
#

it IS common

#

already made an x-card version of my crown suit

unkempt thicket
#

for ink and color

bitter sand
#

i did a x-card version of : crowns, fleurons, halberds, moons, notes and stars

unkempt thicket
bitter sand
#

because without them game go brrrr when you try to turn one of them into an x-card or get an x-card from a consumable

#

do you want the one i did ?

royal ether
#

chatroom, i think next balamod release might be playable with steamodded

#

depends on the mod probably

#

but other than graphical issues, codex arcanum works fine

#

and its working in tandem with super auto balatro (wip)

odd dock
#

huh

wild gyro
#

that would be nice

frosty dock
reef lagoon
#

I have been interested in starting to mod balatro but I have no experience with modding games, the only coding experience I have is with data analytics. I know how to mess with the source code to change some things but have been struggling to find information on how to go further. If there is anyone willing to help me learn it would be very appreciated

frosty dock
zealous glen
frosty dock
#

the wiki on github is a decent place to start but is somewhat incomplete

#

so additionally other mods are recommended to have a look at as a resource

zealous glen
#

It's either defining the calculate function after registering a Joker with Steamodded or hooking into an existing function to add functionality

reef lagoon
#

I tried messing around with the jokers but it would very often cause an error. The changes I made to decks seemed to work fine except I couldn't get the deck art to load it was just blank

warm lichen
#

is there a certain place I can go to get image files for texture mods? if so where :P I wanna have a go at making a texture mod

royal ether
#

since thats what the balamod update mostly was

night pagoda
#

how can I inject here to make other card that makes one suit count as another? I have no idea what happens in this function to be honest

#

Looking at Smeared Joker and just 😵‍💫

unkempt thicket
#

smeared joker works like and true or false

#

true is one suit, false is another.

frosty dock
#

that's in my scope to expose an API for tbh

#

suits should be able to set a smeared identifier which is then compared against the suit at hand

night pagoda
#

can someone give me an example how do I inject here?

unkempt thicket
#

adding a thing for another suit or self.base.suit == "suit name"

#

just one of the two i assume your using

night pagoda
#

???

#

where this should be

frosty dock
#

this code will always have the issue that it groups everything that isn't listed as the first group

night pagoda
#

I do not understand the structure, this is what I'm trying to say

unkempt thicket
#

you add another suit into here but just one of the two

#

if you only have one suit then you don't need to do anything

frosty dock
#

you're trying to use lovely, no?

night pagoda
#

I can't inject into the middle of the code tho??

unkempt thicket
#

you call the fuction as a ref

frosty dock
#

you would have to either do that or replace the whole function

unkempt thicket
night pagoda
#

something?

mellow crag
#

i feel empty now XD

#

I released codex 1.1, but now what

#

like i have some other projects to work on

#

but idk

unkempt thicket
night pagoda
#

it feels wrong

frosty dock
wild gyro
mellow crag
frosty dock
#

it still looks wrong otherwise, but I'll add it to the playing card API as a new feature for 1.0 to do this more easily

night pagoda
golden lake
#

chat what do we think

mellow crag
frosty dock
#

my match_indent isn't indenting right :x

zealous glen
zealous glen
# night pagoda ??

it needs to return and I imagine you don't want to set suits to be Clubs

night pagoda
#

I made something and testing, thanks

bitter sand
#

we*

night pagoda
#

works I think

unkempt thicket
# night pagoda works I think

i think you would have to call it on the other side too or clubs and spades would count as halberds but halberds wouldn't count as clubs or spades

night pagoda
#

nah that's intended

bitter sand
#

i don't know what i should do as a tarot card for crown suit

#

(the effect will be to turn cards into crown suit cards but i don't know what will be the illustration)

zealous glen
#

Maybe a sword (in a stone)? Or in a lake?

night pagoda
#

(me when I forgot to turn off crt filter again)

bitter sand
mellow crag
night pagoda
mellow crag
#

ohhhh

#

i see

#

that's cool

night pagoda
#

doing an entire exotic suit update basically

mellow crag
unkempt thicket
#

bunco

night pagoda
#

adding a lot of jokers that only appear when Halberds and Fleurons exist

unkempt thicket
#

i still haven't found one of those tarots

ionic isle
#

for some reason i have abyss discovered despite never buying it, how strange

night pagoda
#

you can't encounter them unless you play spectrum

unkempt thicket
#

doesn't that require playing 5 different suits?

night pagoda
#

yeah you can do that with wild cards

unkempt thicket
#

ahh

ionic isle
#

oh interesting

river fern
#

you should totally edit the wild card texture to include the colors of all modded suits

bitter sand
golden lake
#

how do i use multiple files for steamodded?

hoary sand
#

?

night pagoda
#

for some reason whenever I inject here my spectrum hands do not detect

#

even if injection is empty

golden lake
#

does balatro have a json module by any chance

mellow crag
zealous glen
#

I spent the day refactoring my code to use multiple files

golden lake
#

yeah i have no idea how to do splits into multiple files literally

#

lua is foreign to me

zealous glen
loud citrus
#

Is there a mod that uses take ownership? I'm looking for an example of how it works.

golden lake
#

i saw codex uses sth called NFS.load()

zealous glen
#

On the other, you need to return an object to be able to access it, I think

zealous glen
mellow crag
zealous glen
#

You can require files inside required files, which I'm using in case I have some Joker that uses a hook but the user blacklists the Joker

edgy reef
#

You can look at Relic Jokers, the code for splitting jokers into multiple files are very simplified.

night pagoda
#

okay turns out that is_suit hates injecting for some reason

#

literally everything suit-detection-related broke

#

even if i do empty injection that references original function

golden lake
edgy reef
#

You can create a table with the path to all your jokers, use NFS.load() to load each joker, then call :register

thorn bough
#

you could also do a dynamic thing like ```lua
--load all files in the jokers folder
local jokerFiles = love.filesystem.getDirectoryItems(mod.path.."jokers")
local jokerdefs = {}
for k, file in pairs(jokerFiles) do
if string.find(file, ".lua") then
local joker = love.filesystem.load(mod.path.."jokers/"..file)()
table.insert(jokerdefs, joker)

    end
end``` then you dont have to deal with adding it to a table
edgy reef
#

ooooh

zealous glen
edgy reef
#

registering by filename?

zealous glen
calm nova
#

Anyone know what this mean?

zealous glen
hoary sand
#

^

zealous glen
#

Or one of the variables aren’t a number (maybe a nil)

#

Found a bug (for my mod) where I can buy a pack while an animation plays and end up with negative money

edgy reef
#

You forgot to add and not context.repetition to something

calm nova
#

I’ll look out for that thank y’all

golden lake
#

the price i pay for slightly cleaner code

edgy reef
#

Also it is today I learned that you don't need to check the joker's name in loc_def

#

xdd

calm nova
#

Yea it missing the repetition

radiant shadow
#

Hi, I would like to delve into modding Balatro, where do I begin?

unkempt thicket
#

with jokers

radiant shadow
#

I mean, what program I have to use. I have some joker ideas, but I'll definitely focus on the simpler ones in the beggining

wintry solar
frosty dock
#

sorry what

night pagoda
zealous glen
zealous glen
#

I’m using SublimeText

frosty dock
#

what is even wrong here

radiant shadow
frosty dock
#

i am beyond confused

edgy reef
#

I'm gonna have one hell of a fun time making custom joker contexts huh

frosty dock
#

ok nvm I just messed myself up on brackets

#

it's [patches.pattern] 💀

edgy reef
#

I thought that could be the issue yea

thorn bough
#

for some reason, my spectral is missing the shader, and takes a good second to pop in when it shows up? am i missing somthing i have to do to the sprite?

frosty dock
#

chat i have a question

#

i came up with injecting a check for end_calculate_context into the block that it's trying to replicate being in... the only issue with another run through calculate_joker is that it might have side effects when trying to override effects of vanilla jokers

#

can we do better?

#

the main reason i want this is to have a foolproof way of adding contexts without breaking jokers using that block

modern herald
#

am i doing this correctly?

frosty dock
#

looks good to me

golden lake
#

btw Aure would it be too much work to add a way to make a cool credits page with SMODS funcs

#

and UIT

frosty dock
#

what defines a cool credits page?

#

colors?

gaunt thistle
#

donky cong

modern herald
#

ok, now is there a way I can mess with shops at all? looking to make certain items force appear in a shop at specfic antes

golden lake
#

something like the thunk credits page

#

yknow having sections on it

#

colors

#

that kinda jazz

frosty dock
#

definitely low prio for me atm

#

but sounds feasible

golden lake
#

also balatrostuck refactor is going swimmingly

hoary sand
#

d

#

do they all have to be different files

golden lake
#

we're doing it that way because it's easier to write logic for each jonkler like this

modern herald
#

oh it appears you cannot set a minimum ante currently for blinds

#

unfortunate

modern herald
frosty dock
#

that's just commented out because it needs to not be a default value

#

else you can't modify small and big blinds

#

the value will still get used if you pass it

modern herald
#

I can't see any way to modify the minimum blind in the api

#

the constructor has nothing

frosty dock
#

there's a boss param though?

#

if you look at vanilla blinds, these values live in boss.min and boss.max

modern herald
#

ah

frosty dock
#

for vanilla objects, you can access them like modded objects as SMODS.Blinds.bl_key

modern herald
#

so like: SMODS.Blind.pillar(boss={min=2, max=10}) after I've already taken ownership?

river fern
#

oh wait is the

#

custom playing card api coming soon as well

frosty dock
#

that's been out like since forever

frosty dock
#

and yes, after taking ownership

mellow crag
#

Just feder and his 6 hand card...
nothing to see here...

river fern
#

thought someone was working on it

bitter sand
mellow crag
bitter sand
#

what does it do ? and whats the mod ?

mellow crag
#

there is nothing special about that image\

river fern
#

needs to be updated more, but its out

mellow crag
#

there's nothing interesting there

hoary sand
#

one gift two gift red gift blue gift

mellow crag
bitter sand
#

black gift five gift

mellow crag
#

i love them

bitter sand
#

they look really good

hoary sand
#

yay!

#

i'm at 26 rn

bitter sand
#

OH THAT'S WHAT IT MEANS !

hoary sand
#

at the rate i'm going i should finish in ~90 days

#

😭

bitter sand
#

damn that's long

hoary sand
#

it probably should be shorter than that though

#

i took a break because of another project + i've "automated" some of it

#

i think i'll release it as a texture pack when i hit the halfway mark

bitter sand
hoary sand
#

sort of

#

i'm using aseprite so there's a feature where you can a) make palettes from sprites, and b) set sprites to use an indexed palette (so changing the palette changes the colors of the sprite)

#

so i have a file with the bow and all the bow parts set up so it's easy to recolor everything by swapping the palette

#

and a file for getting the palette from an existing sprite

bitter sand
#

oh i see

hoary sand
#

plus a shadow that i can just copy and paste

#

the part that takes the longest is removing the foreground

night pagoda
#

How do I add additional lines to regular cards' descriptions?

bitter sand
#

looks good for now

mellow crag
#

Ummm... I think my game is broken

river fern
#

maybe you need to pray

hoary sand
#

alchemy card that disables all hands

river fern
#

its definitely not alchemy

bitter sand
frosty dock
#

there's gotta be something better

bitter sand
#

i went panic mode because i though that i've been making my joker on the wrong canvas 💀

frosty dock
night pagoda
#

How can I add another description to card?

unkempt thicket
hoary sand
#

󱥁󱤧󱥙?

unkempt thicket
#

󱥁󱤧'󱥙 󱥁󱤧󱥙󱥁󱥁󱤧󱥙󱥁󱤧, 󱥁󱤧󱥙 󱥁󱤧󱥙󱥁.

hoary sand
#

there's no apostrophe in sitelen pona 😒

unkempt thicket
#

󱥁󱤧 󱥁󱤧󱥙 󱥁󱤧 󱥁󱤧󱥙 󱥁󱤧󱥙󱥁 :]

random sleet
#

god i hate arbitrarily obscure teasers

hoary sand
#

?

edgy reef
#

If so

hexed halo
#

anyone know how to make a specific joker using the create_card function?

edgy reef
#

We could add a list of contexts already used in a table and check through if context[context_table]

hexed halo
#

thats epic

edgy reef
#

And adding any more would just be adding another one into the list

#

I don't have the ability to verify if this works tho

edgy reef
#

too busy to code rn

hexed halo
#

i can never escape that damned language

hexed halo
frosty dock
#

by checking if the else block is reached, you would just have to inject additional contexts w/ lovely and it would work fine

edgy reef
#

Also true

frosty dock
#

the issue I'm having is just that if you take control of vanilla jokers, running this in a case where it isn't end calculate context, the original effect will trigger

#

at which point it's up to the modder to not do that in any contexts the original joker uses

random sleet
#

or did i bring this up previously ive been losing track of what ive said vs what i thought about saying

frosty dock
#

yeah maybe that's better

glacial oasis
#

Does anyone know what the _de means in this block fromgame.lua

  card_protos = _de.cards
end```
frosty dock
#

challenge.deck iirc

frosty dock
#

no more being haunted by generate_card_ui 😅

narrow pollen
#


😕

#

anyway

#

now that enhanceAPI and x card appear to be stable...

ionic isle
#

i should make a translation reskin that would be cool

narrow pollen
#

time to go back to my "miscellaneous personal bullshit" mod

#

aka

ionic isle
#

im gonna do that

edgy reef
golden lake
#

holy shit

edgy reef
#

Would remove that really cursed and ultra-scuffed shortcut it uses rn

hoary sand
#

what is the pattern on green joker supposed to be

night pagoda
#

I have no idea but I always assumed this is failed attempt at camouflage

slow ocean
#

i just thought the hat was supposed to be frumpier

maiden phoenix
#

Gave the OddityAPI a try

odd dock
#

omg more oddities

ionic isle
#

yeah oddities are fun

#

havent really been able to make any yet since ive been playing modded balatro too much but MoreOddities will come eventually

wild gyro
wild gyro
#

blame coro

silent sinew
river fern
#

you are cooking

silent sinew
#

i should probably reference ja.lua instead of the wiki actually since they mightve changed stuff

#

luckily nothing ive done so far though

night pagoda
#

is it possible to make hiker-styled mult instead of chips?

maiden phoenix
night pagoda
zealous glen
#

Autumn was also working on it earlier (for an API?)

night pagoda
zealous glen
#

If anything I think it's easier since the game already checks if playing cards contribute to Mult

narrow pollen
#

so uh

night pagoda
maiden phoenix
#

Id check how the variable Hiker changes get shown

zealous glen
night pagoda
#

yeah would be really good

zealous glen
#

Because AFAIK you need to hook to the UI creating function

night pagoda
#

I'm going insane from trying to adopt other similar snippets

narrow pollen
#

just had an idea for whoever is making the isaac mod. i think it's @random sleet...? anyway: it's a joker idea for the item "tarot cloth."

have it give all tarot cards an enhanced effect; which would usually amounts to "targets an additional card" or "doubles all listed numbers and probabilities," but could be tuned individually... like how it works in isaac.

night pagoda
#

wait that's actually one of the snippets that I was trying to adopt 😭

#

the problem is that I already inject into the same function and I don't know what the order should be

zealous glen
night pagoda
#

and also there's some things that I don't understand at all, like this

#

I had to remove that when I was attempting

zealous glen
#

I'm appending an empty string

#

Before it was sometimes empty sometimes a comma (when you had both chips and mult) and this was halfway through editing it

night pagoda
#

okay I'll try again

#

yeah it gets angry at this

#

cursed error screens again

ionic isle
#

critical error: failed to render critical error screen

edgy reef
#

I had the Lua add-on but then removed it because I couldn't stand it being mad at "SMODS not being a defined value" or something like that

night pagoda
#

removing the ")" and "," makes the game launch at least

#

@zealous glen what's the next step?

slow ocean
#

today i will code a new joker for jankjonklers so i can push a bug fix and not feel like a sack of lazybones

zealous glen
night pagoda
#

I injected this in, it should work as-is?

zealous glen
#

Well, it works for Jokers, and it uses a function I didn't send you that checks if the Joker is in the collection. But playing cards don't need those. I set up a new variable for Jokers to track mult, I think playing cards have a native one but you can set up your own, or I can show you how I did mine. Also cards need to gain mult

slow ocean
#

wording check?

night pagoda
maiden phoenix
#

The sprite is sick btw

hoary sand
#

truly a memorable joker

slow ocean
#

ok much better

zealous glen
# night pagoda Yeah, can you show me please? I'm adding ability.perma_bonus_mult to cards and i...

Again I think playing cards already have this so you don't need to add it to them, but:

local create_card_ref = create_card
function create_card_post(_type, area, legendary, _rarity, skip_materialize, soulable, forced_key, key_append)
    create_card_val = create_card_ref(_type, area, legendary, _rarity, skip_materialize, soulable, forced_key, key_append)

    if create_card_val.ability.set == 'Planet' and #find_joker("Félicette")>=1 then
        edition = poll_edition("felicette", nil, false, true)
        create_card_val:set_edition(edition, true)
    end

    if _type == 'Joker' then
        create_card_val.ability.perma_bonus_mult = G.GAME.BuySellPack.base_joker_mult or 0
    end

    return create_card_val
end
#

Although they might use it for Mult cards so you might not want to keep them together. YMMV

narrow pollen
#

the wording is fine, but 2 things:
1.) i think you could stand to give it a background reminiscent of a CoM world card
2.) i kinda think it would be a great disservice to the game it came from if it wasn't a "for each card" trigger of some sort

#

world card, for context

zealous glen
night pagoda
zealous glen
night pagoda
zealous glen
slow ocean
slow ocean
night pagoda
#

I'll use pastebin for that one sec

slow ocean
#

i wanted them to be transparent

#

but i havent actually coded the joker yet so im open to suggestions

narrow pollen
#

that's fair! i understand what the intent is and the origin of it

slow ocean
#

but i do want it to be something related to having 3 or fewer cards in hand

zealous glen
# slow ocean yes

I'd adjust it to "consecutive" and use a different verb instead of "contain"

slow ocean
#

torn joker uses contain

night pagoda
zealous glen
#

But it's 3 or less

#

Yours is exact

narrow pollen
#

i'm just suggesting what would work best visually as a card while also being faithful to the source material

#

and having the talk sprite on top of a blank world card (maybe via a soul_pos?) would be the best middle ground

zealous glen
slow ocean
#

while i do agree that does sound neat and very doable im not sure what the world card would even be

silent sinew
slow ocean
#

keep in mind the talksprite itself is pretty big and covers up more of a regular frame

zealous glen
night pagoda
#

oooohhhh

#

checking

#

removed that check completely; still nothing

zealous glen
night pagoda
#

yup; entered a new one

#

entered a new one, updgraded cards and they do not show anything additional

zealous glen
#

Ah, right before it defines center_obj

#

but not for playing cards

night pagoda
#

huh?

zealous glen
night pagoda
#

yeah, what should I do with it?

#

😵‍💫 sorry if I'm being an annoyance

#

I'm trying to make this work for like 4 hours already

zealous glen
#

You should define a center_obj when the key is something a playing card would have

night pagoda
#

do I even need to define it? Can I just remove it and remove the condition?

zealous glen
#

Maybe you don't need it if you just want to extend the tooltip

night pagoda
#

nah nothing

zealous glen
#

You can remove self.ability.set too

night pagoda
#

I removed ALL conditions and still nothing

#

simply if self then

zealous glen
#

Maybe the issue is outside this then

#

Well, even with a self it could still not generate it

#

Because there are ifs inside

night pagoda
#

actually, where is the function returns?

zealous glen
#

It returns generate_UIBox_ability_table_val

night pagoda
#

I don't see this return anywhere

zealous glen
#

That's because you put generate_UIBox_ability_tableref(self) instead

#

So it ran the entire code then discarded it for something else

night pagoda
#

nah that's from the code that I had already

zealous glen
#

Yeah but it should be the updated table, not the old one

night pagoda
#

I added this and it finally showed something

zealous glen
night pagoda
#

thank you thank you thank you!!!

night pagoda
maiden phoenix
#

BIG

zealous glen
#

Can you repeat that again? I didn't hear it

night pagoda
#

do I even need the chips code?

#

it seems like it doesn't get replaced

golden lake
#

good night balatro modding nation

glacial oasis
#

What does iter_57_0 mean in G.playing_cards[iter_57_0]

golden lake
#

presumably attempting to access a playing card at that key

#

what key that is? hell knows, not enough context

#

use google kindly :)

zealous glen
golden lake
#

i feel like there's an important distinction to be made between general Lua help and Balatro modding help

night pagoda
#

hmmm weird, why hiker has the same context but it actually upgrades after the score and not before

golden lake
#

hiker uses context.individual and context.cardarea == G.play

night pagoda
#

yeah I use the same

zealous glen
#

is hiker inside another if

golden lake
#

send an excerpt of your code

#

like properly

#
local example_code = 420
night pagoda
#
 if context.individual and context.cardarea == G.play then
            context.other_card.ability.perma_bonus_mult = context.other_card.ability.perma_bonus_mult or 0
            context.other_card.ability.perma_bonus_mult = context.other_card.ability.perma_bonus_mult + 4

            return forced_message(localize('k_upgrade_ex'), context.other_card, G.C.MULT, true)
        end```
#

forced message is:

golden lake
#

so i think your issue might be in that forced message i feel like, from just looking at this

night pagoda
#
function forced_message(_message, _card, _colour, delay)
        if delay then delay = 0.7 * 1.25
        else delay = 0 end
        G.E_MANAGER:add_event(Event({ trigger = 'before', delay = delay,
            func = function() card_eval_status_text(_card, 'extra', nil, nil, nil, {message = _message, colour = _colour, instant=true}); return true
            end}))
    end```
golden lake
#

normally you'd want to do something like what Wee does

#

Wee uses an extra.focus parameter

#

to bring attention to itself even though it uses individual context for eval purposes

#
                if self.ability.name == 'Hiker' then
                        context.other_card.ability.perma_bonus = context.other_card.ability.perma_bonus or 0
                        context.other_card.ability.perma_bonus = context.other_card.ability.perma_bonus + self.ability.extra
                        return {
                            extra = {message = localize('k_upgrade_ex'), colour = G.C.CHIPS},
                            colour = G.C.CHIPS,
                            card = self
                        }
                end
-- blep
                if self.ability.name == 'Wee Joker' and
                    context.other_card:get_id() == 2 and not context.blueprint then
                        self.ability.extra.chips = self.ability.extra.chips + self.ability.extra.chip_mod
                        
                        return {
                            extra = {focus = self, message = localize('k_upgrade_ex')},
                            card = self,
                            colour = G.C.CHIPS
                        }
thorn bough
#

joker invasion

zealous glen
maiden phoenix
#

I love balance

zealous glen
#

I’d expect the opposite flavor

wild gyro
#

i like it

maiden phoenix
#

About to make OddityAPI the most downloaded mod with this one 💪

silent sinew
#

new oddities are just good anyway

maiden phoenix
silk scaffold
broken vine
#

Joker Trophy: Only obtainable this run if you completed Ante 8 on your last game of Balatro

gaunt thistle
#

how goes it, fellow devs sungaels

maiden phoenix
#

debugging 😭

golden lake
#

chat what do we think

quasi jetty
#

Balatro ui nightmare is tormenting me 🤯 🤯 🤯

golden lake
#

no loc_vars?

worthy depot
random sleet
random sleet
random sleet
maiden phoenix
random sleet
#

they technically already are, though there is no method to obtain one by default

maiden phoenix
#

Oh

random sleet
#

theres no "Oddity Soul" as it were

#

something i am looking into for Thac Next Version Whatever That May Be

#

(ive made a right mess of the code so it might be a while ^^" )

maiden phoenix
#

Idk I had no difficulty understanding the API

#

Only crashed 4 times on my first try 👍

random sleet
#

^^" no i mean locally, ive added a ton of things to thac and i need to bugfix stuff

maiden phoenix
#

oooh neat

random sleet
#

neat for you
programming for me

maiden phoenix
#

I'll pass making an API thank you

random sleet
#

yea i still need to bugfix oddityapi as well augh

#

not that theres actually THAT much on oddityapi's side to do... main issue is the sprite scaling breaking on run load

#

which i have ZERO threads for

#

like i do everything Photograph and Half Joker do .... idk why it doesnt work...

maiden phoenix
#

You checked how Mika does it for Incomplete Joker?

unkempt thicket
#

how do you get the denominator with probability's?

random sleet
unkempt thicket
random sleet
#

vriska nonbo

unkempt thicket
#

0.000005250997689561 in 4

wintry swallow
#

im trying to make it enhance cards lol

ionic isle
#

congratulation! you flipped 2 cards once

edgy reef
#

YAAAY My Sticker API is no longer scuffed

wintry swallow
#

nice work

#

does anyone know how to make a consumable that give cards enhancments

random sleet
#

you might be able to reference my Universe card

#

it does random ones but the code should be easy to adapt

wintry swallow
#

oh yeah that could work

random sleet
wintry swallow
#

omg it worked and then crashed but i'll take it

maiden phoenix
ionic isle
#

i really like that

wintry swallow
#

could you have 2?

ionic isle
#

probably

random sleet
#

oh thats interesting

maiden phoenix
#

I'll try to get at least 1 common, uncommon and rare oddity before posting the mod (maybe more if I'm inspired)

silent sinew
#

all the booster packs are done

#

that's pretty much like half of the work lol

#

the other half is jokers

#

of which there are only even a few with words other than "joker"

random sleet
#

those unironically look awesome
maybe im just being a weeb but the typography hits different in japanese idk

maiden phoenix
#

Now I imagine an japanese-style crazy ad of Balatro

silent sinew
#

oh wait i forgot about the planets and spectrals

#

i guess those will be a decent amount of work too

#

when i did those like 6 or so spectrals i made the text thin but im trying a more dynamic style this time

#

i'll probably just change the name of immolate to fit this tbh it's the same word but just in kana because the kanji would be genuinely impossible to draw at such a low res

narrow pollen
random sleet
#

why would jimbo be a world card

narrow pollen
#

i mean, you can definitely change the color

royal ether
#

hello chatroom im back from socializing

random sleet
#

im glad you survived how goes balamod consumables

royal ether
#

it works i think

#

i needa make a second consumable for the set to check if the collection pages work

random sleet
#

sick

royal ether
#

how goes thac or whatever youre working on atm

random sleet
#

ive made a huge mess and i need to clean things up and also i have like 20 bugs to fix

royal ether
#

relatable...

random sleet
#

but i do have minor arcana suits now that give special effects on flush

royal ether
#

that jlippin' epic

slow ocean
#

i coded a jonkler for today... i might even do 2...

royal ether
#

holy smokes

slow ocean
#

i still need to figure out a design for its joker

random sleet
#

(technically, its "hand contains a flush and the majority of played cards are <suit>" but thats a lot of unwieldy language)

#

(and at least one card involved must be a genuine article of the suit, and not a wild card)

#

actually should i make it check the "base" suit of wild cards

narrow pollen
#

attack cards, magic cards, friend cards... you could even use enemy card colors, if you wanted; just having the shape of the card behind the joker would help sell the connection, i think.

random sleet
#

just occured to me its ignoring wild cards entirely rn when i could reference the base suit

#

friend card would make the most sense
magic card could be workshopped to be something
attack card doesnt really make sense i think

#

but like also the dialogue sprites are cooler

slow ocean
#

i am also very tired

#

maybe as a little trinket somewhere here and there

broken vine
#

i mentioned this the last time the COM-joker was mentioned

slow ocean
#

plus i like the pop up and weird sized cards

broken vine
#

but if it just had the little crown bit at the top of the box outline it'd be a lot more distinctive

random sleet
#

i like the lyman art :)

slow ocean
#

i am fine with it being a very "if you know you know" type of reference

broken vine
#

otherwise it has a way more distinct form than the flat cards

#

haha fair enough,

slow ocean
#

that being said if i do make another reference maybe like some kind of wonderland nod world card would be funny

random sleet
#

i get how it makes sense as a reference given the card soldiers and such but idk what itd do lol

narrow pollen
#

yeah, i was just trying to help make it look more like a card