#💻・modding-dev
1 messages · Page 6 of 1
unlike noir silence the icon is literally the fucking reception name
(spoilered because lyman has not reached this part in library of ruina)
me neither XD
when I hear the word mist I imagine spiral for some reason
i was expecting a touhou reference
and the character is like this (feder and lyman don't fucking look)
what da
hm
||is that supposed to look that much like Soul Edge?||
what the fuck is a ||soul edge||
(bashes own head in, jumps in boiling water, etc sorry for ping)
oh it's supposed to be ||the manifestation of Nothing There as a weapon||
when does Card:update() trigger?
lmao okay
every frame
what's the difference?
wait why would I want that, I understand now what is it
I'm going through the table of jokers, why would I want its length
oh dear
oh i thought you meant the bonus resets when there's no jokers on the field
yeah just that
it is meant to reset but it doesnt
lets joe
ooh nice!
is there any reason that my looping thing doesn't work?
it works when I add joker
but not when I remove
hm that should probably be higher...
oh no wait thats how hiker bonuses look
... i dont agree, but i guess it works
I have code for extra chips and mult in Joker tooltips. I wonder if it works for cards
I prefer this look
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
For Playing Cards I could see either way, but to make the UI consistent across all objects I think it makes more sense to have it be on the bottom
eh.
Also, I had added a new entry to the card table to keep track of extra mult. I wonder if that could be an API
Do you have an APIAPI so I can know how to make an API?
AAPPII
oh no
just monika
does she delete all of the other jokers?
does she turn the game into ddlc
i like the idea of a legendary joker that just "does helpful things", sorta like how hearthstone has "random helpful effects"
no easier to make balatro a dating sim
that reminds me of the fact that i have ddlc rotting in my epic games launcher from a few months ago
does she turn the game into endless
the ace of spades she tells you not to worry about
purple spades
giga-ace of spades
pan of spades
does she occasionally just say your IP address
pretty sure Bunco's Jimbo is going to do that lol
(xmult is hardddd)
does she jumpscare you if you have obs on
lets jlipping go!!!
i will never not shill legendary jimbo
yapping
legendary jimbo my beloved
yeah i'm a big fan of bunco in general and jimbo's going to be hilarious
unironically if i can make it happen it would be hilarious to tie in 'delete all jokers' to this
oh yeah myst do you mind if i also use toki pona characters for blinds
the plan is 1% utility, 99% emotional support and vague cryptic comments
perfectly makes up for my lack of coding skills
i don't own sitelen pona
go ahead
fair enough lmao
i'll just take kili and akesi first
ohhhhhhhhhh my goddddddddddddd
Just Monika
how do heck does xmult work
currently planning to use sin
Ooh
no way is that jan Liman
numbah do you even know what im doing
/hj
By the way, do you want my code for Jokers granting +Chips and +Mult and displaying it?
no not really
boowomp
I would actually like it if you don't mind :)
I'm wondering which mod has the joker that gives mult for unscored cards?
cheesy jokers pretty sure
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
I think there's a step for computing xmult after chips and mult no?
I'm assuming if it's not big project it could just a recourse for people to use and credit you for
You mean, how to store it in the cards?
playing cards x_mult come from Card:get_chip_x_mult(context)

Yeah
muting all of you
sorry 🫡
My bad
seems a little underpowered
yeah it's just for testing, i'll buff it later
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
heart suit needs a buff
This is for the UI. I based myself on AutumnMood's Autumn Circus
seems good
most sane balatro mod
should extra applications of xmult boosts be multiplicative or additive
also should extra xmult stack multiplicatively or additively with "base" xmult
How does it work for in-game effects?
I think it should work like that
bwa
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
i have no idea, but i'm not sure if it's harder than figuring out why specifically club-suited X cards crash when previewing your deck
hearts, spades, diamonds? completely fine.
What order are the suits added to the game?
Thank you so much!
I saw both messages
default X cards are on the same sprite alignment as the base game.
custom X cards are added on the fly as separate sprites
make a custom X card sprite for clubs....
I mean the order the code adds the game objects/sprites
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
yeah, clubs is neither first nor last by default.
i'll see if adding a custom sprite fixes it
maybe there should be a deck that has letter cards and hands are scored based on scrabble score if a valid word is played
it might have something to do with dankranks
Does the game add them in order?
balanced, as all things should be
this is properly unhinged, 10/10
balanced. as all things should be.
wait, scrabble as a deckbuilder just sounds like a actual complete game in itself.
wasnt there a game that was basically that
but like dressed up all fantasy RPG like
wouldnt be surprised if it already existed
wouldnt be surprised if there was a fantasy rpg version of it
There was a scrabble batlle royale IIRC
scrabble is already in a battle royale format!
joker scroker....
brb putting a full scrabble dictionary in a mod
is there a template for the blind chip shine
aure did you see giga queen
look at this monster
ive been learning how to inject with lovely
if you want i can send you the relevant code at some point
Did you use any reference to learn it?
good, because steamodded 1.0 will require lovely
risk of jesters mainly
i was actually wondering if this would be good for inclusion in smods actually
what'd you do?
I think so
ah still that
I kinda wanna use lovely to make more joker contexts for similar reasons.
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?
I already have negative dollar support bundled into the Payout Arg API
The game doesn't compute it, so either one needs to hook eval_card or injct into it
Currently I'm hooking but one could inject
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.
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?
yep, send it over and I'll try to put it in
Thank you Autumn and aure for their contributions
Isn't it context.after
alright just gotta peel it out of Thac real quick
sorry, i meant after tghe hand is scored
hm (from 5381's suggestions)
I thought that was context.after.
isthislossetc
probably a bit too strong for non-showdowns
yeah only showdowns get to shutdown jokers
hm
hm yep
"-4 mult for modded / vanilla jokers"?
I think The Old isn't as fun but well this is modded
eh i won't include blinds this update
The New is significantly harder than The Old if you don't have several different large joker mods tbh
mhm
And vice-versa
evil
If most of your collection is modded then The Old is trivial
good night chat room
goodnight
gn balamodder o7
Goodnight arachneii
first queen attempt...
wowie your art continues to be incredible
Beautiful
nope
I think I know why this didn't work
the loop wasn't called at all because of zero jokers
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```
seeing lyman makes my day too 
You need to use calculate.destroying_card
Then run the logic to figure out what card to destroy, then use return true
yeah cards are supposed to be destroyed at end of turn, although determined prior to the hand is played (technically)
do I need the context checks?
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)
I have a joker that does thus for clubs
Basically yea
morning chat
gm
hello
im about to head to sleep
questbed
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...
what are we talking about slabs?
chat am i cookin
those are very specific
yea
yea
some of these are at least partially just the thought experiment of adapting the effect
does Blood Moon just disables enhancements
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)
All enchatned cards are nonenchanted hearts?
i dont know if its really mechanically possible to just debuff the enhancement
i want to do one with nothing as an oddity
ok then i guess i wont 
oh you can
but what about harness infinity
how we doing chat
fine
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
Joker that checks for hands uses next(context.poker_hands["name_of_hand"]), check Superposition or the pants joker
finally got my joker to work
ive tried it but it says that poker_hands is a null value in the error screen
Another Dragon Joker
What was the other one?
I should test out having 5 dragon jokers, but that is more #⚙・modding-general
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
yeah that tracks
so i am going to have to figure out every single spot a card object could potentially store its suit
chat i am going insane
have fun with the dankranks (:
oh my fucking god it worked
wait, gg
...oh my god did dankranks fuck over my straight detection code
Add if context.poker_hands before it
i'm sorry
what
why do you need straight detection code??
@frosty dock to make the game... recognize when you're playing a straight...?
the playing card API already does that for generic sets of ranks...
you shouldn't need your own implementation
well, i would need my own implementation anyway
why?
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
(im DEFINITELY not doing custom face cards they would look so bad)
why'd you swap cups and swords?
ohhhh
this would be super super useful
is it for six hundred or a seperate thing?
i second this ^ especially if vanilla code is patched to use it....
separate thing. i'm built different.
understandable
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
is this pushing things too far?
i think it works!
i already had center injection, I'm abstracting further
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
oh can this be anything? i did just kinda skim it
probably yes
im sooo happy with standardized generic consumable systems
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
oh that looks interesting
works, just needed to make sure loading objects was skipped properly when init_item_prototypes is called pre-boot
the front limbs should be bigger and starts a bit lower i think
hmm, yeah they do seem a bit high. I want them to be skinny but maybe the foreparts can be bigger
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?
What kind of benefit?
i think it'd be nice before scoring
How about this?
Cups - (chance of?) freebie hand
Wands - Increase chip value of played cards (ala hiker)
Coins - MONEY
Swords - Reduce Blind requirement
looks better
For those I think it should be before
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
cool
Wow
i'm creating a blind for my crown suit but i can't find a name
(it will debuff crown cards)
nevermind i know
hey do you guys know how to give discards mid round?
wait
no ill try to find it myself, i thought of something
ease_discard
good morning chat
👋
👋
hi chat
👋
〰️
~
🌊
now i gotta figure out how to make the cards have like a tooltip describing their effects...

why is other card getiing called as nil?
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
also you should probably post this in modding chat
I should? I’ll do that soon
idk i don't think most people would look here
@mellow crag can i reuse your musical suit code to make my own suit ?
wdym by that?
well i don't know code so can i use yours to make my mod ?
Oh sure
thx
i'm gonna add your name to the autors of the mod
and i'm gonna download the new arcanum
anyone know if it's possible to lengthen the positive side of a cosine graph but not the negative side?
Probably yes, what do you want exactly
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
you could add some amount to center the cosine above the origin (though i suppose it depends how you can handle >1 values)
I think it might be time to start working through conflict management 
Or at least some way to notify the user when patches modify the same location
Otherwise this is going to get messy FAST
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
just remove both patches and the original code as a compromise
so looking for a graph more like this terrible sketch
idk if its what you want, but try doing like +0.4 to the cosine result and capping it at 1?
if statements are Really Bad in shaders right
will give it a try after I've eaten
If you can detect when cosine is positive or negative you can use an if/else to do it
it is an easing though
i made a guillotine blind because what the more effective against a crowned person ? a guillotine ! (smells like french revolution)
btw i'm french so the idea came naturally to me
Since we're talking French
french gaming
i said the world french now everybody's showing a little french touch in their mods 😂
#\modding-french channel
damn i didn't read the description 💀
why'd that capitalize
This has unironically won me some runs
huh?
discord syntax
discord gaming
i put # modding and it capitalized so i put a \ before it and it sent that
balatrocord gaming
This is France 1792! We HATE monarchy in this country now!
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
i did as well
for ink and color
i did a x-card version of : crowns, fleurons, halberds, moons, notes and stars
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 ?
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)
huh
that would be nice
not me working on breaking changes on steamodded :l
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
My recommendation is to install Steamodded with Lovely (or Balamod) and read the source code to find out how to implement specific effects
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
It's either defining the calculate function after registering a Joker with Steamodded or hooking into an existing function to add functionality
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
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
i think as long as we code things that try to stay in some scope it should be fine
since thats what the balamod update mostly was
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 😵💫
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
can someone give me an example how do I inject here?
adding a thing for another suit or self.base.suit == "suit name"
just one of the two i assume your using
this code will always have the issue that it groups everything that isn't listed as the first group
I do not understand the structure, this is what I'm trying to say
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
you're trying to use lovely, no?
I can't inject into the middle of the code tho??
you call the fuction as a ref
you would have to either do that or replace the whole function
i feel empty now XD
I released codex 1.1, but now what
like i have some other projects to work on
but idk
fusions
the function ref should just be Card.is_suit
wait you did
yup
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
oh true I overlooked that
chat what do we think
me like
my match_indent isn't indenting right :x
nice
it needs to return and I imagine you don't want to set suits to be Clubs
I made something and testing, thanks
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
nah that's intended
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)
Maybe a sword (in a stone)? Or in a lake?
oh good idea
what does it do?
doing an entire exotic suit update basically
wdym?
bunco
adding a lot of jokers that only appear when Halberds and Fleurons exist
i still haven't found one of those tarots
for some reason i have abyss discovered despite never buying it, how strange
you can't encounter them unless you play spectrum
doesn't that require playing 5 different suits?
yeah you can do that with wild cards
ahh
oh interesting
you should totally edit the wild card texture to include the colors of all modded suits
or by having more than 4 suits in your base deck
how do i use multiple files for steamodded?
?
???????
for some reason whenever I inject here my spectrum hands do not detect
even if injection is empty
does balatro have a json module by any chance
what are you cooking
Do you want multiple Lua files for organization?
I spent the day refactoring my code to use multiple files
yeah i have no idea how to do splits into multiple files literally
lua is foreign to me
To me too. On one hand you need require
Is there a mod that uses take ownership? I'm looking for an example of how it works.
i saw codex uses sth called NFS.load()
On the other, you need to return an object to be able to access it, I think
I saw it too but I didn't know what that was so I just did it like this
somebody said codex??
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
I use it to.
You can look at Relic Jokers, the code for splitting jokers into multiple files are very simplified.
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

You can create a table with the path to all your jokers, use NFS.load() to load each joker, then call :register
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
ooooh
What’s the difference between this and registering by file name?
registering by filename?
Like here
Anyone know what this mean?
I’m gonna guess you wrote a for with incorrect syntax
^
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
You forgot to add and not context.repetition to something
I’ll look out for that thank y’all
the price i pay for slightly cleaner code
I'm not sure? Probably what's inside each joker file that's loaded.
Also it is today I learned that you don't need to check the joker's name in loc_def
xdd
Yea it missing the repetition
Hi, I would like to delve into modding Balatro, where do I begin?
with jokers
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
shaders are great fun...
sorry what
Visual Studio Code + Lua extension is all you need
Steamodded with Lovely (or instead Balamod)
Or any text editor
I’m using SublimeText
what is even wrong here
Thanks
i am beyond confused
Oh god how the hell are you supposed to find out what the error is from this
I'm gonna have one hell of a fun time making custom joker contexts huh
I thought that could be the issue yea
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?
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
am i doing this correctly?
looks good to me
btw Aure would it be too much work to add a way to make a cool credits page with SMODS funcs
and UIT
donky cong
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
something like the thunk credits page
yknow having sections on it
colors
that kinda jazz
also balatrostuck refactor is going swimmingly
we're doing it that way because it's easier to write logic for each jonkler like this
huh why not?
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
I can't see any way to modify the minimum blind in the api
the constructor has nothing
there's a boss param though?
if you look at vanilla blinds, these values live in boss.min and boss.max
ah
for vanilla objects, you can access them like modded objects as SMODS.Blinds.bl_key
so like: SMODS.Blind.pillar(boss={min=2, max=10}) after I've already taken ownership?
uh what
that's been out like since forever
SMODS.Blinds.bl_pillar.boss = {min=2,max=10}
and yes, after taking ownership
Just feder and his 6 hand card...
nothing to see here...
sorry, poor phrasing, custom playing card API
thought someone was working on it
Pray : get blessed by the god of poker himself and instantly win your run
oh the Pray is from @river fern's mod. I just really like to use it
what does it do ? and whats the mod ?
It just does random effects when you pray.
my mod? It's nothing
there is nothing special about that image\
i see it
one gift two gift red gift blue gift
awwww these are adorable
black gift five gift
i love them
they look really good
OH THAT'S WHAT IT MEANS !
damn that's long
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
is the "automated" called copy paste ?
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
oh i see
plus a shadow that i can just copy and paste
the part that takes the longest is removing the foreground
How do I add additional lines to regular cards' descriptions?
looks good for now
Ummm... I think my game is broken
maybe you need to pray
alchemy card that disables all hands
its definitely not alchemy
I'm really not quite happy with this
there's gotta be something better
i went panic mode because i though that i've been making my joker on the wrong canvas 💀
knowing you and seeing the weird way this is cropped, I'm saying this is intentional xD
How can I add another description to card?
👀
?
' , .
there's no apostrophe in sitelen pona 😒
:]
god i hate arbitrarily obscure teasers
?
This is for adding new joker contexts?
If so
anyone know how to make a specific joker using the create_card function?
We could add a list of contexts already used in a table and check through if context[context_table]
oh shit are people doing tp support
thats epic
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
too busy to code rn
i can never escape that damned language
thanks
by checking if the else block is reached, you would just have to inject additional contexts w/ lovely and it would work fine
Also true
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
wouldnt it be better if the vanilla code was patched on smods side to use SMODS.end_calculate_context and then modders can hook that function to be false in their modded contexts?
or did i bring this up previously ive been losing track of what ive said vs what i thought about saying
yeah maybe that's better
Does anyone know what the _de means in this block fromgame.lua
card_protos = _de.cards
end```
challenge.deck iirc
no more being haunted by generate_card_ui 😅
i should make a translation reskin that would be cool
i think i know what language too
im gonna do that
oooh I actually need something like this for Sticker API
Would remove that really cursed and ultra-scuffed shortcut it uses rn
what is the pattern on green joker supposed to be
I have no idea but I always assumed this is failed attempt at camouflage
i just thought the hat was supposed to be frumpier
Gave the OddityAPI a try
omg more oddities
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
if you're making oddities, make a tungsten cube rare oddity that reduces the blind by some percent when used
That's oddly specific
blame coro
you are cooking
i should probably reference ja.lua instead of the wiki actually since they mightve changed stuff
luckily nothing ive done so far though
is it possible to make hiker-styled mult instead of chips?
Mika's Mod has "Mountain Climber" that does this iirc
Like this?
no, on regular cards
Autumn was also working on it earlier (for an API?)
I'll check it out, ty
It wouldn't be much different
If anything I think it's easier since the game already checks if playing cards contribute to Mult
so uh
nice, but it seems that it doesn't really have any description to cards
Id check how the variable Hiker changes get shown
I can send you my code
yeah would be really good
Because AFAIK you need to hook to the UI creating function
I'm going insane from trying to adopt other similar snippets
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.
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
My version should come at the end, if you want it to show at the end
and also there's some things that I don't understand at all, like this
I had to remove that when I was attempting
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
critical error: failed to render critical error screen
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
removing the ")" and "," makes the game launch at least
@zealous glen what's the next step?
today i will code a new joker for jankjonklers so i can push a bug fix and not feel like a sack of lazybones
What do you mean?
I injected this in, it should work as-is?
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
wording check?
Yeah, can you show me please? I'm adding ability.perma_bonus_mult to cards and it doesn't seem to show up
truly a memorable joker
ok much better
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
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
Does it reset?
it doesn't show up even with that
Have you added mult to a playing card?
yeah
Did you change the UI code to apply to playing cards?
yes
its based off the talk sprites from com
I'll use pastebin for that one sec
i wanted them to be transparent
but i havent actually coded the joker yet so im open to suggestions
that's fair! i understand what the intent is and the origin of it
but i do want it to be something related to having 3 or fewer cards in hand
I'd adjust it to "consecutive" and use a different verb instead of "contain"
torn joker uses contain
Pastebin.com is the number one paste tool since 2002. Pastebin is a website where you can store text online for a set period of time.
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
and self.ability.set == 'Joker' and
while i do agree that does sound neat and very doable im not sure what the world card would even be
keep in mind the talksprite itself is pretty big and covers up more of a regular frame
@night pagoda
Are you in a run?
yup; entered a new one
entered a new one, updgraded cards and they do not show anything additional
huh?
Line 115
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
You should define a center_obj when the key is something a playing card would have
do I even need to define it? Can I just remove it and remove the condition?
Maybe you don't need it if you just want to extend the tooltip
You can remove self.ability.set too
Maybe the issue is outside this then
Well, even with a self it could still not generate it
Because there are ifs inside
actually, where is the function returns?
It returns generate_UIBox_ability_table_val
I don't see this return anywhere
That's because you put generate_UIBox_ability_tableref(self) instead
So it ran the entire code then discarded it for something else
nah that's from the code that I had already
Yeah but it should be the updated table, not the old one
I added this and it finally showed something

thank you thank you thank you!!!
OOPS
BIG
Can you repeat that again? I didn't hear it
good night balatro modding nation
What does iter_57_0 mean in G.playing_cards[iter_57_0]
presumably attempting to access a playing card at that key
what key that is? hell knows, not enough context
use google kindly :)
For playing cards probably not. It doesn't replace because I add a new line at the end
i feel like there's an important distinction to be made between general Lua help and Balatro modding help
hmmm weird, why hiker has the same context but it actually upgrades after the score and not before
hiker uses context.individual and context.cardarea == G.play
yeah I use the same
is hiker inside another if
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:
so i think your issue might be in that forced message i feel like, from just looking at this
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```
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
}
joker invasion
Reminds me of this (look right) #⚙・modding-general message
I love balance
I’d expect the opposite flavor
About to make OddityAPI the most downloaded mod with this one 💪
It's a wip anyway I'm just testing the api
this is so cool
Joker Trophy: Only obtainable this run if you completed Ante 8 on your last game of Balatro
how goes it, fellow devs 
debugging 😭
chat what do we think
Balatro ui nightmare is tormenting me 🤯 🤯 🤯
Bussin
feels like a Legendary...
while this is interesting, it's unlikely that i'll be wanting to edit vanilla object behavior
i made a library for this which has been submitted for approval to Aure. likely this will come in SMODS 1.0 along with hiker-style xmult, hand mult, and hand xmult
Can Legendary Oddities be a thing?
they technically already are, though there is no method to obtain one by default
Oh
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 ^^" )
Idk I had no difficulty understanding the API
Only crashed 4 times on my first try 👍
^^" no i mean locally, ive added a ton of things to thac and i need to bugfix stuff
oooh neat
neat for you
for me
I'll pass making an API thank you
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...
You checked how Mika does it for Incomplete Joker?
how do you get the denominator with probability's?
i think it has more to do with not being a joker, somehow. ive done all the Usual things...
vriska nonbo
0.000005250997689561 in 4
congratulation! you flipped 2 cards once
YAAAY My Sticker API is no longer scuffed
you might be able to reference my Universe card
it does random ones but the code should be easy to adapt
oh yeah that could work
lets goooo
omg it worked and then crashed but i'll take it
i really like that
could you have 2?
probably
oh thats interesting
I'll try to get at least 1 common, uncommon and rare oddity before posting the mod (maybe more if I'm inspired)
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"
those unironically look awesome
maybe im just being a weeb but the typography hits different in japanese idk
Now I imagine an japanese-style crazy ad of Balatro
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
made a quick mock-up of what i mean
why would jimbo be a world card
i mean, you can definitely change the color
hello chatroom im back from socializing
im glad you survived how goes balamod consumables
it works i think
i needa make a second consumable for the set to check if the collection pages work
sick
how goes thac or whatever youre working on atm
ive made a huge mess and i need to clean things up and also i have like 20 bugs to fix
relatable...
but i do have minor arcana suits now that give special effects on flush
that jlippin' epic
i coded a jonkler for today... i might even do 2...
holy smokes
i still need to figure out a design for its joker
(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
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.
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
i mentioned this the last time the COM-joker was mentioned
plus i like the pop up and weird sized cards
but if it just had the little crown bit at the top of the box outline it'd be a lot more distinctive
i like the lyman art :)
i am fine with it being a very "if you know you know" type of reference
that being said if i do make another reference maybe like some kind of wonderland nod world card would be funny
i get how it makes sense as a reference given the card soldiers and such but idk what itd do lol
yeah, i was just trying to help make it look more like a card

