#💻・modding-dev
1 messages · Page 17 of 1
I thought it'd be unnecessary and also slightly easier to code if it were always the same text
Fair
Though it's not really that hard to add changing lines at the end
problem solved 😄
thats awesome
What do you think of the balance? I modeled it after Odd Todd but I'm not sure
@slow ocean looks like someone figured out funny shader shine stuff
Odd/Even has 5 possible values, yours close to that so it's fine
Yeah, my trains of thought was that it's close but it's less consistent
I like to balance my stuff compared to how difficult it is to get and how much other jokers give in lesser or higher situations
I'd rather focus on balance during playtest, but at least I can have temporary numbers that seem reasonable
@slow ocean can I get your opinion on some art
orkey
looks like its being applied to vanilla cards without side effects
fucking bodied
is that good
sorry I had to lol
Oh that's a good face angle
oh man, i think i have a issue of not understanding 😐
yes its good
should i send the code to you understand?
T-thank you 🥺
(I keep looking at it feeling like it could be better but I'm not good enough to see how to get there)
You can put it here but I'm going to sleep. Tomorrow me or someone else can take a look at it
But you can try and get that snippet I posted to work by adding a header and some .png assets
idk what is a header lol (sorry)
The wiki doesn't explain it AFAIK, but Steamodded requires a header
balatro's art style does enjoy the time-honored tradition of Keep It Simple, Stupid
which are some comments at the beggining of your file informing Steamodded some data
Like mod name, etc.
OH THE ID?
If Steamodded finds a .lua file without a header it skips it
It includes at least
--- STEAMODDED HEADER
--- MOD_NAME: Buy Sell Pack
--- MOD_ID: BuySellPack
--- MOD_AUTHOR: [Victin]
--- MOD_DESCRIPTION: Adds Jokers that synergize with buying and selling Jokers.
That Satellite joker art goes hard tho
That's true, but getting this composition to read well with so little detail is difficult
The perspective suffered a bit
hmmm, I wonder if this looks better
The way the blue red-masked guy look looks better imo
You mean it looks better in this new version?
Yea look, the look looks better :))
chat any thoughts
meow
afa
ahhh, i give up for now, tomorrow i will try again
"perfect"
its a bit complicated for me rn
I couldn't figure out a good way to make it appear as though the (top of) their head was facing the audience/down, besides jutting it sideways as I had done, but now that I have the face looking straight down… it looks a bit off but maybe I have just gotten used to the previous look
People wont blame you for it
Now you can have an audience while you play Balatro
Sleep does tend to help
its based on her design in Rex Duodecim Angelus
Oh that's what RDA means
♌
If I move the eye pixels up by 1 it looks like it's staring directly at the viewer
Peaks into your soul 👁️ 👁️
The difference 1 pixel makes in pixel art is astonishing
True you could get shot for doing this
(If tomorrow I'm not active here you know why)
its just a bend in the line
aaaand done
Watch out Lyman! Jumpscare!
jesus fuck how many copies of that emoji do you have
thats a staff
listen i was there when it was created and i have watched it proliferate
its great
we now have half of the trolls
so gorgeous
you watched it choose any number of players or permanents and put another counter on each of them of each type already present on those cards?
refreshing pixel art after a day of hard work
Ok what about this?
literally fine lol
what am i getting mad at here
you were told lies by the council
I give up 😔
me get mad at me
pixel art rules can be subverted if you know what youre doing, they arent rage inducing by themselves
I know some people can be nitpicky about it
is it???
it is a gradient yes
is it just really subtle
I was just joking in the first place but it's not even funny anymore 😔
pixel art rules can be subverted by using emoji instead of real art
its a gradient
its noticeable without
if you have the time id like to see the with and without
Smh this gets to you tho
listen ive had my art pieces auto-rejected for too many similar colors its instilled into my soul
its darker on the top?
Damn
without it the top of the book feels flatter
hmmmm
with it it feels like everythings in perspective correctly
i can sort of see it
what are the rules
- no swearing in my minecraft server
frick!!!!!!
from her skirt/glove shade?
yes
yeah the point of these is to like
trick you into seeing them as higher detail
than they can be
i dont really have that much of an issue considering base balatro
yeah no i get you
thats interesting
Me using darker than Joker Grey colors:
i might mess around with that in an indexed palette
Banned
you're gonna activate both me and akai
me using colors darker than Balatro Black
(i am not color adjusting the emoji at all)
Originally it was a single Joker but now it's two
me literally using colors darker than balatro black
But the second one is in progress
Me using RGB negative value black
i will once again reiterate
It's too thick to be released right now
.
ye
no
ok :(
It doesn't work on Lyman
your punishment is lack of hatred from anyone for 48 hours
btw what should Meulin do Lyman
Best I can do is forever
"Meulin should f**k" — Lyman
(I need to fix this but it's just so funny given what I'm trying to draw)
do u have any other dancestor designs on hand/written down so i can get a vibe check
oh i meant disciple
oh you mean
what do we have for zodiac abilities so far
remind me what dolorossa did with 6s?
it was the summation one right
(im sorry im a lil foggy ive been busy :((( )
trying to understand
Virgo?
2s was retriggers, 4s was held +Mult
that's because Zodiacs and Aspects start at level 0
oh so just like a clarity thing
so it shows how much you will get
not how much you're getting
the other 3 havent been updated to template yet
also do you like the 9s effect @slow ocean
Taurus: Exists
the one splash fan
also the funny thing about Sagittarus in this context is that
You're thinking of Marie?
you can't play multiple of them
because playing more than one 9 will mess up the whole plan
im trying really hard to connect mechanically playing 5s and skipping
skipping?
because i just think of like disciple darting the fuck off
ahh
or maybe something to do with copying stuff ||because of her book||
(another concept by @slow ocean )
niiice
copying could be interesting
good question
Me when I play a 2 of heart with this and 🧻 because 1 in 4 isn't enough
all future 5s create (lvl) copies of themselves when played that are destroyed after scoring
(shove the copies in G.play)
(this totally won't be hell to program)
technically different from retriggering
its not just the copies destroyed
but also the 5 itself
basically make it so that every 5 you play is destroyed after scoring, but it creates X duplicates of itself
that could work, right
actually no that's too strong
these packs are not that uncommon
scoring +Mult
retriggers
Taurus
held +Mult
Leo
funky scoring +Chips
scoring XMult
double probabilities
funky scoring +Chips
held/scoring XMult
Aquarius
interest moneeey
Ophiuchus
the one for 2 is cracked so
the one for 2 is cracked for 2s only
like its a holistic thing
this is just a card printer
for only 5s
yeah but you print more 5s
also thats the point of destroying the copies
like they wouldnt go to your hand theyd immediately get added to the hand currently being played
i dont think it makes that much sense for leo
👀
by the way
here's the plan for all the things:
- 6 Tags
- 12 Aspect cards
- 4 Vouchers
- 13 Zodiac cards
do you see what i did there
6-12, 4-13
hehe
also my plan is to keep updating balatrostuck until it adds 413 jokers total
not enough
then again im making dumb emoji mod so i might get up there too lol
only ∞ is enough
(especially since the design of emojiokers effects is basically just "combine every trigger with every possible effect")
Wow the determination
oh
interactive shaders are a game changer
yeah you get a variety of arguments
yeah it passes the rotation in
to get that hover
so you can just use shader.r in a trig function to adjust certain values
so this one changes the hue ever so slightly
like so
I'm not ready to attempt shaders with patterns yet
glsl 🤢
blanket changing the entire card is enough for me
btw i forget, is Ortalab an overhaul mod
i think it will have a config for disabling vanilla stuff iirc but works in tandem by default?
no I think it's designed to be in addition to base game and then have an option to play with just ortalab stuff
I wonder if patterns are easy
I mean looking at the code for the foil shader blows my mind
I mean, separating specific areas from others… though if you have to do it at an angle
Not good patterns, just simple patterns
please let me know when/if you release this so i can gut it for parts peruse your methodology
stuff like the debuffed cross seems straight forward
but this is how foil does the rings and highlights I think
yeah that makes sense
circles are probably just inherently strange and difficult
anyway I definitely should have been in bed two hours ago
UV space by default plots all information to cartesian coordinates
you can however convert that all to polar coords which form circles naturally
they're coordinates in percentage form though
:dumb:
doesnt make a difference
true
cartesian to polar conversions still apply
like, a straight line in cartesian space is a circle in polar space
what about in hammer space
you get hammered
I will have to pull university maths from the far reaches of my brain if I need to do that
anyway, gn
BET
or just google it like me
example of cartesian to polar remapping
you just figure out the shader effect in cartesian space and convert the visual to polar space
I'm trying to find the origin in the first figure because I don't see how it closes the circles
?
Wait that left horizontal axis is an angle
It's converting from angle and radius to cartesian, not the other way around
I'm talking about this
this is not what we mean by cartesian to polar conversion in graphics programming
also again, its not converting from angle and radius to cartesian
if it;s any easier just think about what happens if you multiply a real number by e^i*theta :)
this is not cartesian space
Idk graphic programming just math
also this is literally how this looks like in cartesian
its just lines going horizontally for circles and lines going vertically for the streaks
with anisotropic noise applied on top
The left graph has the angle in the horizontal axis and the radius in the vertical axis. The right graph reproduces it but in cartesian coordinates
💨 💨 💨 💨 💨 💨 💨 @slow ocean
only +8 seems weak
#1238654488131272729 message this may help 🙂
i mean its not bad when you have it in Light Mode
yeah but that's wrong though
balancing things around negatives isnt great
also look
but also i have the same issue with Red Card being that its basically never good
Now this is a straight line in polar
let me show you something
also keep in mind this is the same mod as 🧻 and 🧱 which only exist to destroy your cards
(i just wanted to make the light mode joke)
youre the goat??? wtf
yeah thats fair. sorry about that
idk what you mean they're really simple effects lol
i can poke at buffing it later ig
i did nerf 🗝️ to -8% instead of -10% just because playing a flush of clubs was... really strong lol
youre still goated
true
numbers changes are easy to make after all
as long as the effect works i can do balance stuff easily
The general formula is r = c sec(θ - arctan(a/b)) where bx + ay = c if I've labeled the coefficients correctly
which corresponds to y = -(b/a)x + c for non-horizontal lines
need a shader that does this in polar space
and slowly rotates them
now they're in polar
hypnosis shader
So a cartesian straight line looks like this in polar
That's not a cartesian straight line in polar, that's writing the radius as a linear function of the angle
It's not that different
it really is
the "top" of the polar space is in the center, the "bottom" is around all edges of the rendered image
I can't be bothered to do this properly so have a "large enough number"
three jokers today... alas all i could accomplish
do it in reverse
lmao
so that the straight line is in cartesian
We started there
But I'm saying this isn't Cartesian on the left
you started with f(x) = x
start with x = 3
akai is talking about f(x) = 1
or f(x) = 3
(or any other constant)
Again, if we take the function r(theta) = constant we get a circle
Because you're writing in polar coordinates
That Is The Point
the radius as a function of the angle
that is literally the point
So you agree it's polar coordinate not cartesian
Me too though
into this POLAR
i am literally talking about Cartesian to Polar conversion this entire time
You started with polar and then plotted in cartesian
You start with the radius as a linear function of the angle
no you dont
you're the radius as a linear function of the angle
Then you plot that in cartesian coordinates
literally wrong
chat i have to go to work :(
literally you don't know what you're talking about
THIS would be Polar to Cartesian:
lmao thats kinda sick tho
yeah the whole reason these conversions exist is to make life of shader programmers a bit easier
I wonder if I have the nomenclature wrong or if graphic programmers are using a different convention
a horizontal line in cartesian will be a circle in polar
and its radius will be determined by the height at which that line is drawn in cartesian
its not that hard
I'm taking issue with the nomenclature
I thought if you write the radius as a function of the angle you're in polar coordinates
we dont have that in graphics programming
we work with pixels
on a percentage-based grid
we dont do function plotting we just remap existing constant data
everything in graphics programming is just taking existing data and remapping it until it looks pretty and awesome
I think the difference is that I don't see cartesian or polar coordinates as changing the underlying data, only the representation of the data
yeah no thats not whats happening in graphics
That is the entire point of a coordinate system; the object is fixed, but you need to represent it
in graphics we can take an image, interpret it as cartesian, convert it to a polar space, and then interpret that polar space as a cartesian space and plot it again as a polar space
so we go cartesian -> polar -> polar
and we get different results
see
At least Wikipedia agrees with this
converting the polar space as cartesian into polar space
made a slashy effect
in graphics we don't really do like, math properly
we use math as a tool, but we don't respect the math
It's very common that other areas will have overlapping jargon but use it to mean something completely different
Which is alright but makes mutual understanding difficult
yeah for graphics Cartesian to Polar means "we take the pixel data that exists on this image and remap it as if it was a cartesian function graph converted into polar coords"
but nothing's stopping us from going "we will now consider this "polar" image to be cartesian and perform that same pixel remapping operation"
That operation is taking data that's meant to be read in a format and reading it in another format
because it's not really a cartesian or polar representation of data, its a remapping technique we use to get different visual effects
which is fine, but it's not really a conversion
Right, I underspecified what I meant by "conversion"
the visual image that you see on the screen changes
You have data described in terms of horizontal and vertical position but you read it as angle and radius
that's pretty much that yes
yeah no we use the term cartesian to polar to describe the visual changes you'd seen in change from a cartesian space to a polar space
(in the sense I think a "change of coordinates" ought to be called)
we can re-read the moved pixels and use their new positions as angle and radius too
because again, they're just a visual
it's easier for a graphics programmer to code an effect in height and width and then convert that height and width into radius and angle
than drawing the circles straight up
To me it'd depend on the kind of effect one is trying to achieve. If you want radially symmetric effects then yes
I guess they don't need to be symmetric
yeah they dont
If just want a circular slash for example
Though it's not intuitive to me how you'd limit that
you dont have to
But I suppose that can come with experience and trial and error
Polar shapes are an incredibly simple concept that can form the foundation of some interesting and complex forms in generative art and…
I meant limit as in, maybe a circular slash doesn't complete a full circle, so you need to choose starting and ending angles, as well as the area of the effect.
oh that's easy
☝️ I suppose for people who do it it is ^^
This works
only one message 😔
Yeah :(
It's fiiiinee
Every joker I've ever seen that gives more than 1 does that
Btw what do you put in effects for that
and message
Chip_mod
Lemme try this again
Okay it is that simple
(btw the tick/tock here being out of sync is intentional and a separate thing)
(though i might change it im still kinda on the fence abt it)
and the mod_chips/mod_mult
its basically the block that processes the returns from one of the calculate_joker calls
How do you change the sprite?
what if it gave chips that went down over time, like, time time
so you gotta go fast
This is wrong isn't it
i think you dont need the outer table
in effects
so just {chip_mod, message}
im just glancing at it tho i may be wrong
Nah that's not it
whats message defined as
if effects.message then
card_eval_status_text(card, 'jokers', nil, nil, nil, effects)
end
Good question lmao
I'll fix that
Okay so problem
It's working
But for some reason it activates twice
Like this is it
it gives mult equal to hours, and chips equal to minutes, then advances 30 minutes
speaking of sprites
hey there. does anyone know how to localize the name of new suits the way jokers and tarots do this, instead of brutally replacing each and every one of the defined name throughout the whole script?
the new_suit doesnt have a parameter for the localization so im not quite sure
(steamodded)
dont you want SMODS.end_calculate_context(context) here instead of that long string of not context checke
morning folks
wait you slept?
i had what we in the industry call "short nap"
which industry
we do not, I would know
pretty sure its just the "name" parameter?
if you're not in the industry you'd never know
or key or whatever its called
if you are in the industry you already know
you could check how SixSuits does it
i am the industry
no you're not
(i'd trust SixSuits' code since its made by the person who made the API for suits lol)
ive been caught
my mod
yea i thought so but there are tons of occurences of that name so im afraid if i only localize that single name the whole things gonna fall down
what are you talking about?
yeah what
like give me any example
(my head is jumbled with 1.0 code i genuinely am experiencing being Dumb about 0.9.8 stuff)
1.0 is just better and everyone should move
we should make this happen faster by refusing to help with 0.9.8 issues
that way we extinguish the old version's support and force everyone into the new ecosystem
Just like Microsoft in the 90s
triple E strategy
alpha's out
and microsoft in the 00s. and microsoft in the 10s. and microsoft in the 20s.
and it's pretty stable
ohhh i will check it out
feder port codex so i can put emojiokers support for it
it's out????
^
yessssss
not quite yet
i am currently implementing the final element of it
Aspects and Zodiacs
oh niiiiice
then release
porting shouldnt be too hard
we have 3 pages of jokers
if you're registering things in a loop
cringe
btw Feder you can throw out like 60% of Codex's logic to set up and init Alchemicals
SMODS has SMODS.Consumable and SMODS.ConsumableType now
oh yeah actual consumabletype support
oh that's really fun
do you have an example of it?
i'll send my ConsumableType declaration for Aspects here
wait does it also do the terrible UI stuff?
the collection stuff?
yeah
SMODS.ConsumableType{
key = 'Aspect',
collection_rows = { 3, 3 },
primary_colour = G.C.SET.Aspect,
secondary_colour = G.C.SECONDARY_SET.Aspect,
loc_txt = {
name = 'Aspect',
collection = 'Aspect Cards',
label = 'Aspect',
undiscovered = {}
},
}:register()
yeah
oh that's cool
collection rows is like, how many cards in each row
well to make it clear im not coding a mod im trying to translate mods to my own language.
so take Bunco as an example, the first parameter of
SMODS.Card:new_suit
is for defining the name of the suit, that are, Fleurons and Halberds
but i searched for these two words in the whole script there are many everywhere, so if i edit that parameter to something else (like localizing it), i feel like it'll break everything
so here i have 3 cards in row 1 3 cards in row 2
can you send me a basic walkthrough as to how to register stuff like how to register the consumables and stuff? it would just help a ton (in DMs as to not flood this chat)
AKA an exmaple of how you register stuff
oh that's all there is to it as far as consumable types go
but for new jokers and tarots there is a parameter only for the loc, like to only define its displayed names and descs
i forgot the :register()
what about registering the consumable?
i sent you in dm
1.0 will have proper localization support
oh aight thats cool
seems like its a wrong point to start doing the localizing stuff this early
yeah
you need to give these things time tbf
this is still a very young modding community
we have very little resources on how to actually mod the game
and we have very little in way of extending the game's behaviors
yea i gotta put em on github to track future changes tho its basically for personal use
it doesnt feel young tho lol those mods are already awesome
well, it is young, it's been up for less than half a year or so
compare that to really fleshed out modding scenes like Terraria's or Minecraft's
the good news is that as the community goes forward, we'll have more of each other's work to build up from
inevitably we will run into the coremod dilemma though I'm fairly certain
not necessarily a bad thing
mfw my mod requires a mod that requires a mod that requires a mod
oops! all dependencies
minecraft modding is kind of a sh show now. luckily balatro doesnt have that much stuff to deal with
when it comes to localization i do hope mods having individual language files for different languages like minecraft
solid minecraft energy
a lib, two apis based on that lib, a base mod using one of the two apis, a content mod, 10 addons of that mod
you can certainly set something up to load each language from a different file iirc
@frosty dock how does one set up undiscovered cards correctly
In theory all you need is an UndiscoveredSprite that has the same key as your set as well as loc_txt.undiscovered on the consumable type
- i have an undiscovered sprite
- undiscovered loc_txt is filled
- i've set a card to be undiscovered
So what's not working?
the whole discovered thing
is it that your save file has it discovered from when you didn't have it set to be undiscovered
wait im on full unlock arent i
the discovered state on the proto is a default
I've you've ever discovered an object with that key, it's gonna stay discovered
uh
it still doesnt work
even on a diff save file
i have my loc set up for undiscovered
i have an undiscovered sprite
i've set undiscovered on a card
i've even used a third savefile
fascinating
SMODS.ConsumableType{
key = 'Zodiac',
collection_rows = { 3, 2 },
primary_colour = G.C.SET.Zodiac,
secondary_colour = G.C.SECONDARY_SET.Zodiac,
loc_txt = {
name = 'Zodiac',
collection = 'Zodiac',
label = 'Zodiac',
undiscovered = {
['name'] = 'Not Discovered',
['text'] = {'test'}
}
},
}:register()
SMODS.UndiscoveredSprite {
key = 'Zodiac',
atlas = 'HomestuckZodiacs',
pos = {
x = 6,
y = 1
}
}:register()
function Balatrostuck.INIT.Zodiacs.c_zodiac_gemini()
SMODS.Consumable{
set = "Zodiac",
prefix = 'c_zodiac',
name = "Gemini",
key = "gemini",
config = {},
pos = {
x = 1,
y = 0
},
loc_txt = {
['name'] = "Gemini",
['text'] = {
"{S:0.8}({S:0.8,V:1}lvl.#1#{S:0.8}){} Level up",
'{C:attention}all{} future {C:attention}2s{} to',
'be {C:attention}retriggered',
'#2# time#3#'
}
},
cost = 4,
discovered = false,
atlas = "HomestuckZodiacs",
use = function(self, area, copier)
G.E_MANAGER:add_event(Event({trigger = 'after', delay = 0.9, func = function()
play_sound('tarot1')
self:juice_up(0.8, 0.5)
return true end
}))
G.GAME.BALATROSTUCK.zodiac_levels[self.ability.name] = G.GAME.BALATROSTUCK.zodiac_levels[self.ability.name] + 1
end,
can_use = function() return true end,
loc_def = function(card)
local level = G.GAME.BALATROSTUCK.zodiac_levels[card.name] + 1
local formula = level
return {
level,
formula,
(level~=1 and 's' or ''),
colours = {(level==1 and G.C.UI.TEXT_DARK or G.C.ZODIAC_LEVELS[math.min(7, level)])}
}
end,
}:register()
end
i cant undiscover the cards
even on a fresh save
try changing the key
on new save too? that's weird
I'll have a look later
but it's worked fine for me
is this another "not eternal was never an option" thing
feder also had a problem but it apparently just fixed itself magically
given that i've seen a couple of mods do it already, is there any kind of api for custom UI stuff or do you just sort of have to figure that out
for now you have to figure it out yourself
but i believe some basic building blocks will be coming to smods at one point
so i went brutal and replaced all '(suit name)' with '(localized name)' and nothing seems to be broken fortunately. imma try a run
steamodded 1.0 has inherent support for localization
yea i know i was just doing it for fun. might migrate things to whatever the new system is later when the new versions out
yea sounds good, just wanted to let you know
there's an alpha up on github if you wanna check it out (it's just the main branch)
not really, I don't think there's any or true anywhere
In fact the default should be false
interesting
uh, no i'd imagine not
have you tried setting it to instant?
Why not?
oh, i know what i'll do
i'll have it set a flag in the joker's ability.extra
then have that trigger during calculate_joker
OUGHHH
clapricorn
balatrostuck goes unnecessarily hard

i dont need to adjust the existing mod Luas?
im also not too sure if its possible to make addon mods that add localization to existing mods? but also i barely know how the localization stuff works anyway
it just depends on how people coded it
i wanted to understand how the game itself localizes stuff but it ended up balding me so
im no pro to all that
hardcoded vs using G.localization and localize{}
assuming people used localize properly
xdd
smods has a framework for localization now
so im mainly just not sure of its features
i.e. idk if mods can add localization to other mods
you might be able to find the specific object by its key and change the loc_txt that way
if priority is lower
hopefully there will be a good explanatory doc
it depends on if prio even is used for loc text stuff
chat am i insane for making 15 Vriska Jokers
maybe..
divisible by 8...
it will be in 1.0, need high prio and add to loc_txt of those objects
high as in positive prio
yeah, high as in load last, so positive
which is low prio technically
w/e
Anyway injection order doesn't matter, you just need the object to exist
lowest prio default value for the loc target is the table itself, so I don't think it even matters if the original mod's loc_txt is indexed by language at all
{name='a', text={'b'}, fr = {name='c', text={'d'}}} is valid to my parser
yknow high prio usually means loads first 😭
Should i make a stardew valley themed mod?
crops cardarea
yesssssssssssssss
i remember you talked about the idea before?
welcome to balatro in 2025 where we will have 38592789257 card areas
*2024, August
i did, but i am not sure if i will make it actually
imagine growing crops, and for each crop you have in your "garden" a certain card group becomes stronger
like crops for each suit, crops for face/number cards, crops for even/odd cards, etc
yessss
that can be so fun actually
good morning!
the first community grown mod
the first community GROAN mod
Screw farming chips we're farming crops now 💪
trueeeeeeeeeeee
just need to figure some stuff out
AKA where the heck would the cardarea be stored
dead middle of the screen
what if it was like cookie clicker farming
on top of the playing cards
movable cardarea when? (not a real question or suggestion)
imagine minimizing card slots like they're browser windows
oh hell yea
i remember doodling y fantroll in this pose for halloweeen lol
adding a slight noise filter like i did for magic number would do wonders, i think
making it so random pixels on the card are just ever so slightly a wrong color
perfect
wait a second this is colour cards with more steps
wait a good spot for a passive effects cardarea would probably be in your deck overview
or next to vouchers
What are the effects?
hm
so in total it can give X(8*5) Mult
the way it goes is, after every steel scores, it is destroyed
then at joker_main, it gives X(8*steels destroyed) Mult
shouldn't it start as X1, so 5 steels would be X41?
is it scaling or onetime
except when G.localization and localize don't work v_v
one time
then its solid
graveyard going to enjoy this
I'm curious how graveyard would interact with The Tumor
Vriska jokers are wacky and so much fun to play with
what's The Tumor
(Homestuck spoilers)
they get graveyarded
Do Jokers get graveyarded?
no
Do they get cremated instead?
no
they get japorized
they get jeopardized
Now I'm trying to remember if there was japorization in the comic. I think there's a good chance that there was but I can't remember it
my reaction to that information
no there wasnt lmao
i just made up japorized as the combination of jape and vaporized on the splot
Ah I see. ||I was thinking if Hope-y things could japorize||
now I want to make a mod that renames all instances of "destroys" refering to jokers to "japorizes"
yes
oh no
Gros Michel having 1 in 4 chance to get japorized
need to localize it tho
Ankh japorizes all jokrs
Eternal: "Can't be sold or japorized"
it would be so fucking funny if the "destroy but doesn't go to graveyard" effect is called japorize
japorize me
ayo?
I wonder if exploding cards sends them to the graveyard
not the gravyeard
that's where the gravy grows
should have a new animation that isn't dissolve
like how glass cards shattering are a different effect
graveyard goes hard with 🧱
brix
Canio scales with japorized face cards
I was thinking like some SBaHJ VFX
(destroy all glass cards when played)
i have every card that gets :remove'd go to the graveyard rn
you should also add the Javeyard
for all the japorized jokers
and the Daveyard for all the dead Daves
😭
Can I go to the graveyard and leave flowers to the deceased?
"Thanks for your service, Polychrome Red Seal Glass 8 of Clubs."
you can hover over a card and press F to pay your respects
don't forget the saveyard, for the revived
and the yard for those still alive
is there a easteryard for the deceased again?
front or backyard?
||Dream Bubbles|| Joker crossmod compatibility with Graveyard?
frontyard
that'd go hard
ghost cards...
ghost enhancement...
non suspicious name change
I did try to think of a ghost enhancement but it didn't feel very ghost-y
But seeing High Card mod I might take a look at that to think how to implement Disenhancements
depends on what counts as a patch... I've done significantly more than 4 commits towards 1.0
true but im assuming the loading is one of those exponential loaders that are only meant to evoke a feeling of progress
like how all boot progress messages from steamodded are on 95% progress?
exactly
I think you're onto me
chat what does this mean
this means no
chat means cat in french
that's why I answered
also when I first saw Steamodded I thought it referred to the fact that its a Steam modloader for Balatro and only later did I learn it was made by Steamo
I'm cat
Me too
same
it's a common misconception
Honestly it might as well be that now 
is it even possible to mod on any platform but steam
By the way, does adding to the localization of the game outside of Other not work? (0.9.8)
Because it didn't for me
it should, you just have to define everything properly
uhh it should
it should
anyone has a link to the blessing mod?
if you're defining it not from a joker then you also need to init_localization()
itay i think the blessing mod isnt ported to 1.0 yet
i know
I tried this, I tried outside of init, I tried parsing it myself inside and outside of init and nothing
steamblotting
.
did you loc_parse_string
steamedmodded
I also tried that
ping
Intentional
because my dumbass forgot that exists and calls a recreation of it that's missing some things... 1.0 just calls init_localization lmao
myst you should ping yourself
Yes
just call init_localization() after defining your localization
Because I tried that too and it didn't work
im crying oh my god lmao
I tried every combination I could think of
note that reloads will always eat loc text defined this way
well, reloads of localization
??
I can try it again
I also know the issue isn't with passing arguments to the tooltip function because when I set the key to negative consumables it works
Nope
welp, the best tip for a balatro modder:
if you can't do something the right way...
i'm back, and i still don't know how to create a joker
do it the hacky way
and i dont know where to put the code.
or even make it work
then it's your fault with how you're calling the localization
methinks
Am I not doing the same as you are?
for those who aren't fluent in attention_text():
SUIT BIAS BAY-BEEEEEEEEEEEEEEEEEEEEEE
I don't see any difference
no
i'm so proud of it~
on one hand, i'm considering nerfing this suit bias thing from 1 in 2 odds to 1 in 3
on the other, i think it's fine, given that there's nothing that randomly gives only the sun, the moon, the world, or the stars.

what the fuck lmao
damn you have a lot of local variables in the init
i say split but i don't even know if it works because i have not encountered that problem
yet
Is x$ possible?
I can make it show the Consumable or Joker Negative tooltips but not the one I passed to localization
well now I found the problem
it's because I wrote one redundant end and then all variables below are declared in "main" function instead of SMODS.INIT function, it seems like in INIT function there can be more than 200 locals?
i feel like most of your "locals" are reuses of 4 variables, from what i'm seeing
name, id, loc_txt, this_v
i think you can just chop off most of the locals
technically you're way off the 200 locals, if i assume right
yeah but doesn't that count as only 4
i hope so
What is localization exactly?
The game has different localization dictionaries so that it can be translated to different languages
I see
modifying the pseudorandom_element function
Not so Random PseudoRandom
PseudoUniform
there are weights in get_pack but not in pseudorandom_element so I add weights in it
PseudoMassDensity
Meanwhile me
whats this
My Balatro Archived google sheet
i use pseudorandom_element for a lot of stuff
Not all the slots but if every joker was different per version Archived would have 13,050 Jokers
i will only change the weight of fusion vouchers
so they're easier to get
and that's increasing with every major update of Balatro
I've had to be careful about not changing vanilla RNG a few times now lmao
reversing suit lists and whatnot
thunk's code is inconsistent sometimes
and I could change its name and have only get_new_voucher_key use it so it doesn't affect vanilla rngs
I think there’s an easier way of doing that
really
Hook the function that creates vouchers but sometimes replace the output
I did that for Cows
But yeah, a lot of versions are gonna be stuck at the unknown for them
I'm not someone who's just gonna ask thunk "Hey can I have access to the earlier versions for an archiving process"
So most of my research will be from old videos
i think weights are better because vanilla packs have a weight parameter and such function can be used in other situations
What are you archiving?
Balatro
Unless it’s an API I think you can have a local solution to your mod
Which avoids changing the RNG
I mean that would be bold, but it'd be worth a shot right?
it can be an API
I'm too much of a coward to do that lol
now I can set weights here and it's convenient
Also I think you can find the correct probability so that the result would be the same with or without weights
I'd do it but uh... it's not my project...?
Try it
I mean you have permission to ask on my behalf. (I'm perfectly fine just going off old videos for now)
You can also search old discord posts
I will not fall to peer pressure lol
Yeah, I'm currently going off old videos and old discord posts
What about evil pressure?
lol what?
But yeah, the current public version of Archived doesn't really work compatibly with other mods unfortunately
Instead of peer pressure, non-peer pressure
It also is missing stuff like the edition backs and uses the old version
I'm mostly waiting on the coding side for 1.0 to be released, that way i can just update my mods then and not have to worry about doing more
I also created custom backs for some of the jokers because it'd be confusing aside from the name which version you're using
The first 4 backs (skipping the blank one) are all from removed decks
Okay, so I've been trying to test out LUA scripting by making a really simple variant of "Raised Fist" that just does the same thing as Raised Fist, but focuses on the right-most/highest-ranked card in the hand instead to do the 2x(chip value) multiplier, just to prepare myself for the inevitable scripting spree I'll be doing once Steamodded updates to 1.0.0.
I've got the graphic I want to put in place for that particular joker, but I'm having trouble figuring out how to translate the code for Raised Fist into something that can be read as an SMODS joker type.
What do you have so far?
you can already preview 1.0 btw, a lot of it is already finished
you're already using lovely 0.5.0 I would assume?
you'd just need to switch to the main branch in that case
cut out every joker that didn't appear in the 0.9 versions
i think i finally got a joker idea, from a roblox item...... lmao
instead?