#đ»ă»modding-dev
1 messages · Page 13 of 1
manipulating suits is relatively easy, manipulating ranks is hard
A lovey patch might work too
oka i'll try to work on that
Look for âStone Cardâ in the gameâs code and see if that helps
ohhhh, i was trying to do the sprites after adding the deck
idk if you can do it that way around
appreciated amigo
ah it doesnt really matter which comes first, just needed to supply atlas in config
you know, it's kinda funny when you get so close to what you wanted to do
i got fake score updates working, but alas
the score calculation is fucking hard coded
implement these
i have the chips and mult triggering twice for them
but the score doesn't update internally
also very quick question is there a good way to test quickly the jokers you mod in?
thanks
when you have those installed
go to collections
scroll to the joker you want to test
highlight it and press 3
*during a run btw
hand_chips and mult are global
where Xchips
i love eval_this.png
add xchips to the game then
yeah its pretty based
no u
also, steam really doesn't like running the lovely injected balatro through the client. fixed that by just pinning it to my taskbar :p
hey guys how do you give out multiple things at the same time? (ie a joker that gives both mult and chips but not with individual context)
god it feels good to make progress
now all i gotta do tomorrow is implement brick by brick, and i can release a new version of #1226055105204453428!
that feels so nice~
oh, and do image changes for at least clever and mad
you can delete said default joker image
1.) it's actually still being used for the shop stuff
2.) i'm tired and lazy
just wanted to show my progress quickly before brushing my teeth, putting my sheet and pillowcases on my bed, and passing out
yeet
x1.2 mult??
x1.2 chips as mult
oh right
guys should i relese
wdym my code is confusing
what the fuck is an atomic_part
uh
basically i wanted to be efficient
so hands can either define a function that gets called and added to the hand parts in eval_poker_hand, and composite hands could then use that data without having to re-evaluate the hand
i thought my usage of hand and _hand was more confusing tho
nah i see that all the time
please do
is there like a skull emoji
or laughing cat emoji
What the opposite moon do?
I have made some playing cards with 2 ranks. Does someone knows if it's possible to make it works with Vanilla jokers without taking ownership ? Because basically I need to modify the "self.get_id() == X" by "self.compare_id(X)" ?
+25 if hand has face card and a 10, 9, or 8
me when i get the win button
high card lobotomy build....
Yeah, when a card refers to sell value it's usually positive, though I haven't quite figured out the game's way of wording đ
Nice
it would generally be possible, but require lots of changes in lots of places. I think X-card did something similar?
Thx I'll check that
Well X-Card basically have dynamic rank but still have only one
Yes ! Cards with #2 seal are also considered 2 !
for fibonacci, not for all the game yet
no on both counts
also this mod is on steamodded 1.0
Neat
dam still release tho looks sick
If you are patching joker behaviour for this, lovely might be useful
and u use 0.9.8 mods with 1.0
you cant lol
Wonder if it's possible to make a compatibility layer for it
possible yes, sane no
it's moreso an issue of not being maintainable
I mean once the 1.0 apis get stable, it wouldn't be that bad
sure you could just feed an old SMODS.Joker:new() call into a new SMODS.Joker() call, but it's gonna be lacking features
But yeah it would be a bunch if work
Sure but it would be more of a keep old mods working not a let old mods use new stuff
sounds like pain
Yes I'll try to understand how to do it !
cant wait to have the mod with the most jokers (on 1.0)
(i will definitely be sleeping when 1.0 stable drops and mika or someone is gonna snipe me but yk the thought's there)
Just make a mod that makes jokers in a loop
(pov: i actually have a stable release for 1.0 scheduled the second there's a stable lovely 0.5 release)
meth pls
Speaking of lovely 0.5 meth said he was going to do that one thing and I don't think he has yet
Meth stopping all production for all balatro modders
Nooo
We need to cook
i got a whole page of jokers done today :3
Let's Fucking Go
hm yeah, also some indenting jank
Maybe I should try making a GitHub action to auto release my mods cause I'm lazy
But also I'm lazy
I guess I'm doing something illegal trying to call the self.ability here in the tooltip
uh yeah
tooltips actually get generated in generate_card_ui, where the Card object is out of scope
you only have the center, which is identical to the SMODS.Joker object at hand
so no state info in tooltips, and you'll need self.config instead of ability
Yeah, I think âgaining negative amounts of stuffâ or worse âlosing negative amounts of stuffâ are inherently confusing in general. I think itâs usually better to streamline it by removing the double negative and making it a direct statement
btw...
Itâs quite easy, at least in so far if you want to add or overwrite code in specific places that arenât repeated in the same file
Autumn being the most productive Balatro modder again:
i circumvent this by inserting tooltips in genetate uibox ability table in super auto balatro, but its probably not recommended
Holy shit
Thatâs a lot
Yeah, I'm just trying to figure out how to do a dynamic text based on card position to make it less mysterious, I know Victin was saying about using main_end but for some reason I just couldn't get it to render
I've tried to make something work at first it was just exploding now it's at least starting the game but it's just not working and it follows the same logic that the game uses in the vanilla code
It's simple - make two pages worth of jokers that just keep adding one more mult than the last. Will take you maybe 15 minutes
Ruina?
I have the 10 Jokers I aimed for my beta test ready after, what, 2â3 weeks? But still no full art, and I want playtesters to balance them
try reading thru my code (its balamod), the generate_uibox_ability_table should function should work on steamodded too
context: im trying to make a joker that makes stone cards into wild card aces
Did you create the full object?
Itâs a bit annoying since it has arrays nested in arrays that donât contain anything else
for reference, my code puts a tooltip displaying card stats at the top of the tooltips. i define localization objects in the on_enable function, which should be equivalent to steamodded init
steamodded init is on its way out
steamodded inât
yea im just using simile to help in my explanation :3
I basically copy + pasted this code example you gave me with joker. replaced with my slug
also just watched my laptop go from 100% battery to 10% in 5 minutes i am not going to be allowed to code on this flight
also due to the language API, defining localization will need a specific timing during injection (i love writing docs)
Let me see
i think balamod also has a language api but i havent touched it oops
lol
i end up doing everything the hacky way cause im not used to there being an existing api xdd
pretty much, at the start of the injection process, i have to call set_language again, which resets any localization changes made prior
that looks jank
ive checked and nothing bad happens but yea it looks stupid
its just because of some if elseif priority
btw should i do anything about this straight flush disp text? currently it will cause any straight flush with 10-A and/or any modded ranks to be considered a royal flush
Hmm, what version of Steamodded do you have?
wtf greater than or equal to sign
that's just my font lmao
0.9.5
I think that works in Julia
it's just a ligature for >=
yea i can tell from the whitespace
js strict equals is literally 3 horizontal bars
Maybe only allow tens, aces, and face cards (mods included)
talk about luck. I'm just testing the tier 3 vouchers still
I donât know why it wouldnât work. Maybe try without the row?
tens, aces and any face cards sounds good
Wide hamburger menu
Pareidolia Shortcut moment
uh no, it'd only be cards that are face cards as base
it needs to behave the same without modded ranks
Thatâs a lot of vouchers
I wonder if we can get thunk to use a consistent get_rank and get_suit method we can override
voucher gaming
we already have is_suit
but yeah is_rank would be huge
I use get_id for rank manipulation
local cgi_ref = Card.get_id
override_maximized = false
function Card:get_id()
local id = cgi_ref(self)
if (next(find_joker("Maximized")) and not override_maximized) then
if (id >= 2 and id <= 10) then id = 10 end
if (id >= 11 and id <= 13 or next(find_joker("Pareidolia"))) then id = 13 end
end
return id
end
That reminds me Iâd appreciate Enhancement manipulation
(The override is to not bug Deck View)
I'm not even done adding them
For now, I have a Joker mimic enhancement effects, which is fine by me, but I imagine players would be confused
Like this?
No I meant without G.UIT.R
just do low effort emoji mod hehe
Just add the text directly to the column
(deck view steamodded edition doesn't actually use get_id mainly, but sure)
It depends on what youâre doing and code reusability. It took me a week to add like 6 items but I did 8 decks in like an hour because they all had a similar effect
The rank list on the left does
nope
Was that added recently? It might have been like that when I tested lol
the old version was more jank, so maybe it did in that one
Like this (I am very stupid you may have to eli5)
old = pre-rewrite
Oh
Wait I did add it pre-rewrite
Yeah Iâll check later if that patch is necessary anymore
I think so
i was thinking royal flush could also require all cards to have a nominal of at least 10, but that wouldn't stop hands like 12 13 14 15 16 from being a royal flush
I also need to check if my logic works out with stone cards (it might not)
Still nothing
Try having a variable appear in the description
Now to add the rest
Does the description function define a variable for it?
Reboot Voucher effect update: 1 in 5 chance to refund Boss Blind Reroll
The description function? As in loc_def?
It was an empty table
If you set it to a table with a value does it show up in the description?
Did you manually add that â+1 Chipsâ or?
No, just adding a value to the first output table
Try making it an empty table
Okay, so time to figure out how PseudoRandom works
I donât understand why it doesnât work for you. Maybe youâre using an older version of Steamodded? Or I have code elsewhere modifying something?
I see that Steamodded 0.9.5 had a difference in how it handled main_end whatâs next(_generate_main_end(self))?
Ok I did what I thought would be the best way of updating it (downloading the latest injector and rerunning it) and now I'm getting this
u gotta uninstall the old version first
verify game files on steam
or just use lovely
^
... wtf
That's a new one
happens whenever i register something through this API and this API only
Is this the steamodded 1.0?
yeah
Maybe try in the steammodded thread
There seems to be more people who know more about this sifff
And also won't get drowned out
uh it's literally my engine
i fear aure is the one who knows more
Oh I may be stupid
All updated now and now it works with an empty table
Curious what I've done wrong on this one, assumed I'd just add another row to the table and fill that to add a second row of text but now it's just 2 blank rows
official poker hand api soon lets goooo
yesssssssssssssssss
porting thac is gonna be a nightmare lets goooooo
Thac is epic
only cuz you did the art
i wonder if it would be possible to have a pool thats "all consumables", we have the tarot/planet combo pool right
probably wouldnt be too hard, just go through pairs(G.P_CENTERS) and save every center with consumeable
wait
theres a G.P_CENTER_POOLS.Consumeables isnt there
oh is there
i think so
idk i cant read
same dw
me walking into needle fight with dna
<---- clueless
o fuck
wrong chat
ignore that
no one saw anything xdd
đ
hey, where is the text for blind here generates? have a problem variables not applying here
it seem to generate normally in the blind itself
I pass variables here using Blind:set_text() btw, almost the same way I do it for Jokers
off topic but that looks like aries âïž
how does the bull(?) do it? the blind that sets momey to 0 if you play most played hand
i think myst determined that the ox's code overrides anything else by default
yea i was bouta say it might have an override
I mean I do too in that function
it feels like game uses different function in blind selection menu specifically
because, as you see, my vars aren't working here
least_played_poker_hand generates in/after Game:init_game_object()
any ideas?
another weird thing that these values are seemingly swapped
I use #2# for most played and #1# for least in localization
Yes I've seen that ty. For now I can just overwrite some functions without having any impact on any thing else. But I'm going to use it for Vanilla Joker modification !
yea
loc_target is always most_played_poker_hand
no, it's a base game hardcode issue
what is this function
soo can I still do it?
need a lovely patch
urghghg
which i could not get to work but you can try
aure can you patch this within steamodded?
wait can you just wrap that and create an exception for your blind
oh
btw firch i only noticed i got credited in bunco after my friends showed that to me
and idk why i'm in there lol
I'm crediting everyone who helped me one way or another :D
(((please tell me if I forgot someone)))
idk I don't remember
but every time I update main page I search for my own questions in discord and write people who answered
chat is this art
what in the jpg compression is this
oh this is so lame, it doens't even check for the blind it straight up adds that value to all blinds??
btw you should check if the value doesn't resets when you modify it with other jokers
oh god
sweet bro and hella joke
this is so fucking shit, 10/10
exponential money generator
oh no
it sells for -2 dollars
you lose 2 dollars every time you sell one
how to create blackhole with your home appliances guide for dummies
wait till you get gift card or something
abstract synergy??!!
You should hook rather than overwrite but yes
Yeah I meant hook my bad
oh no, exponential scaling
you will be dead before it procs properly
need a challenge with just this ante 1
that's it
lmfao
how to explode computer
Iâm too tired to take a look at it. See if my example works and try to make sure the nesting is correct
They look like bunny ears to me
i can see it too
what fps
dayum
I remember trying to help but I donât know if I did @_@
I was once again defeated by my inability to type good (I wrote INACTIV instead of INACTIVE)
lol
Wide Candaceâs fingers are too wide
victin what do you think of the jocker
I like it although I wonder if you could make it not a FPS bomb, otherwise Iâm too tired to comment further
i love the polychrome
i think it being an fps bomb if you don't take its consequences of negative sell cost is on point
the jpg compression amplifies this
all Balatrostuck jokers have the potential to break the game, some just do it against the player instead of in favor of them
this is intentional
I mean honestly that isn't a feature that needs to be in 0.5.0 as I'd rather keep the release minimal
but if it's a hard requirement I can get it done
the Jocker is a very peculiar joker because you can just use him as free 3 dollars or you can duplicate him to hell and back and make abstract joker really powerful
get gift card
it raises the sell value and then you have true inf money generator
Does Jocker make Swashbuckler worse?
it kills swashbuckler yes
yes unless gift card
giftcard could work, wait at least 3 rounds
I might make it -8 dollars to buy and -5 dollars to sell
it's just

jocker ...........
7 rounds
I believbe in jocker
by the 6th round without no jocker removal your pc will brick

Balatrostuck is the only mod unhinged enough to get away with putting a literal FPS bomb into it fr fr
jokes aside I can't wait to test out the bomb
Yeah I remember that I need add you! Haven't got to updating the page yet
AradiaâŠ
abstract jocker
jocker would synergize with my modâs Jokers
What rarity is it anyways?
common
Real
hell yeah, what to do when my game crashes by simply closing?
Got it all working now, thanks for all the help @zealous glen!
Woohoo!
common because its a piece of shid
Even more synergy
When you get a Common Joker, Dragons gives your Jokers +10 Chips
this was skill issue; infinite loop
One last question however, for this row I want a red background as is customary for X mult, do I just need to add another layer like in blueprint or is there an easier way?
Make it uncommon for Baseball stonks
When you get a Common Joker, Chicken gives your future Jokers +3 Mult
I think you do need to add a new column yes
no that's actually good
At least I figured out how to make Dragon accelerate its animation arbitrarily, although itâs a bit Jane still
I typed jank but Jane is funnier
Pirate?
so swash would tank
But every copy will inherit the increased sell value 
To capture and share your gaming highlights, download the Outplayed app on Overwolf
And so it was written, and so it was done
okay I tried bruteforcing a variable but it feels like steamodded changes that function too because... uhmm...
(this small blind thing happens only for modded blinds)
Yeah the language API screwed with a few things
(Assuming this is Steamodded 1.0 you're on)
nope!
Damn
I'm still on the whatever version that is
by brute forcing I mean literally replacing the whole function with itself but with changing one thing
uh I don't think I've seen that happen
what function
function create_UIBox_blind_choice(type, run_info)
this is the only change
yeah steamodded needs to change that
the vars are seem to be hardcoded as mentioned earlier by myst
yup, really need that
use lovely then
nuh uh
Yes !
please
I will use it when it will be forced
it will be forced in 1.0
but a lot of people are too lazy to install it and they can't install it
well, until then
well then have your stuff break for no reason at all, fine by me
(I have it installed but looking at other mods like Reverie & how often people fail to install lovely makes me not want to deal with it for now)
true
đ it's about society
đ
anyways I fixed it in my stinky way
feel free to throw rotten tomatoes and cucumbers at me
we do a little trolling
Run Info
local _handname, _played, _order = 'High Card', -1, 100
for k, v in pairs(G.GAME.hands) do
if v.played > _played or (v.played == _played and _order > v.order) then
_played = v.played
_handname = k
end
end
G.GAME.current_round.most_played_poker_hand = _handname```
this is for most played and I have no idea how to change it properly
there's no least played hand, thus why I'm asking
trying to create custom loop for this but it keeps finding least played hand that is also the last in hand list
Just pick a random one out of the least played
That could be achieved by making a temporary table or creating a copy of the hand lists and shuffling it
can't, blind is supposed to make most played hand have the same chips & mult as the least played one, and if the least played one is random then it could be something like royal flush
Okay take the lowest base valued of the lowest played and highest value of the highest played
???
Multiply the base chips and base mult
Out of the lowest played hands take the one with the lowest product
Similar process for highest valued hands but with the highest product
you could just prefer ones lower on the tiering
nah it shouldn't biased by levels and such
yeah how do I do that!?
I'm really confused with this loop
that loop isnt consistent since it uses pairs and not ipairs
hmm
that doesnt mean anything đ€Ł
it works lol
so all you'd have to do is the opposite of that
start with _played at 2140000 or whatever dumb number and check if the hand is played less than that instead of greater than
math.huge I believe
2 is pretty a huge number
local _handname, _played, _order = 'High Card', math.huge, 100
for k, v in pairs(G.GAME.hands) do
if v.played < _played or (v.played == _played and _order > v.order) then
_played = v.played
_handname = k
end
end
G.GAME.current_round.least_played_poker_hand = _handname```
I had this
but it outputs "spectrum house" which is the strongest hand (that is also least played)
invert the order comparison too and start it at like -1 or whatever
or 1 whatever actually works
inverted, started at -1 and...
You inverted twice tho đ€
do I need to remove inversion???
I think inverting twice would be like a double negation
But also IIRC each hand has a number so the choice of 100 might be meaningful
Can you print the order the hands are evaluated and see if itâs consistent?
Just wanna make sure I'm not going crazy, juice_card_until here is the thing that makes the invisible joker jiggle right?
I was already confused and now I'm đ-level confused
Yes
I wonder if thereâs a hand order definition that would cause pairs to iterate over them consistently
Because I remember hands having numbers IIRC
yeah it always starts from flush house
this makes no sense actually
pair certainly is not going after full house
It does seem to be different between this and that screenshot
I'm iterating through G.handlist now and it's much more reliable (ty aure!)
i love steamodded 1.0
same
ballstuck
amazing
Unrealistic, not just an error page saying it couldn't define init
couldnt index init
is it out?
are the logos all a fixed size?
Iâll switch once I have a mod to look at and compare to. (Although I reckon itâll break OddityAPI)
logos are tag sized
Whatâs the code for adding logos? Might try something tonight for that
it's simple really
just add
--- ICON_ATLAS: in header
so in my code its
--- ICON_ATLAS: HomestuckLogo
...
SMODS.Sprite{key = "HomestuckLogo", path = "bstuck_logo.png", px = 32, py = 32, atlas = "ASSET_ATLAS"}:register()
Wont it get overwritten by Steamodded 1.0's tag icon later on?
How will you be able to tell if the mod is properly activated then?
because it will have the correct icon
when is this coming out officially?
smods or balatrostuck
Oooh if it doesn't the icon will switch to a rare tag?
also btw tags are 34x34
it has its own tag
I'm interested in both 
smods 1.0 alfalfa is already out on ghub
alfalfafafa
its alpha breaky breakington tho and you need lovely
when would that be official
32x32 + 1px border
because im stupid
also i made this very cool error tag that shows when your mod messes up (its in smods 1.0 alpha)
how mess up is mess up
I was like man, I'll have to do some sprite stuff for my mods now, but then realized all my mods that I care about are lovely mods
i thought we'd see the big o' error screen
dependency errors
basically if your mod don't load correctly becuase its critical deps are missing
it'll show this and won't load your mod
so say for example you have like
an API that you're using in your mod
and someone downloads your mod but doesn't download that API
very nice
the game will load, but the mod will have an error with missing dependencies listed on hover
probably saves half the traffic in modding chat
smods 1.0 is huge
especially now that I've suggested Labels system to Aure
Labels work by allowing you to basically put metadata on a Joker using enums
There's still some other API to add too (Payout Arg and Challenge API).
So you can for example, only summon a Joker with a specific Label
if you want food jokers only you could use SMODS.Label.Food
or if you only want Jokers that deal with Hearts, you could do SMODS.Label.Suits['Hearts']
could you have a joker trigger on a certain label being present?
absolutely yeah
it'd be part of the joker's definition
well, anything's definition, really
you'd be able to put these on Spectrals, Alchemicals, Planets, Zodiacs, Aspects, Subatomics, Tarots
can it be a real tag
(is egg a food)
I'd argue yes, because that's the theming of the joker
I wonder if we could safely have a mod error and not have half broken stuff
it's just weird because it doesn't act like the rest mechanically
if you wanted a diminishing effect you'd have a separate label like SMODS.Label.Diminishing
Minecraft tags intensify
Yeah, Balatrostuck also has food jokers too
That don't behave like basegame food jokers
Sopor Pie is one
cooking fusion mod
removes 1 hand size each round until you die
Is Mr. Bones a food joker?
fusing eggs milk flour -> cake
no, Mr. Bones is an SMODS.Label.Utility joker
Ooh if we have tags line that, then we could like ban stuff for challenges off that criteria
here's full example list
they're not tags, they're labels
tags are the funny things that give you 25 dollar on boss blind completion
so does having suit.diamonds automatically include a suit label?
yeah!
the idea I'm thinking is
SMODS would autogenerate labels for PokerHands, Ranks and Suits
Me when I give a joker a poker hand, rank and suit
so if my mod adds a PokerHand called Midas Blast it'd have an SMODS.Label.PokerHand['Midas Blast'] label
utility jokers are just non-scoring ones right?
yep, they're jokers that modify the gameplay in a way that doesn't affect scoring
No internal names for things with spaces, my weakness
again, Labels are a metadata system
they'd exist to allow mod creators more freedom and abstraction when defining abilities
Metadata names with spaces, my weakness
i mean it can be whitespace trimmed if you want
Although balatro internally does this a lot so I can't really fault you for it
i just think SMODS.Label.PokerHand['Midas Blast'] fits more with Balatro code convention
than SMODS.Label.PokerHand.MidasBlast
Just cause it does doesn't mean I have to like it
also another thing that could be quite useful would be if you could call label data in calculation logic
so instead of having to define suits/ranks/hands on a joker twice
you could just define them in labels
and then use that label data to do things like compare poker hands or ranks
that would provide additional incentive to use Labels over hardcoded values
epic~
which one looks clearer
i prefer #2
what's the context?
a mod logo
(like this)
I prefer 1
Actually
Make it 2 but add a shadow to the wrench
like this?
the new one looks the best yeah
or this
I like this one
i like the thinner shadow better
No
The light source is top left
So shadow is bottom right
Like you have on the wrench itself
oh
At arm's length this one looks really good
?
The gold star should have a shadow too in this case ?
Something like this, but the shadow should match the color of the underlying material
Including gold
Right now it looks a bit more like a hole than a shadow
the shadow doesn't touch the gold yet
what mod is this for :o
also I'd add a light outline around the whole thing
my 'slight tweaks' mod
Wrench and Shuriken mod
ie. slight wild buff and slight straight buff and a couple other things
Do you add any Jokers?
no
it's stuff like 'wilds won't be debuffed by bosses' and 'straights can wraparound'
I see
I recently made a Wild Joker
Which is why I asked
I donât think the base game has any
tbf
every suit joker is a wild joker
?
Yes but instead of making Wild cards one card at a time you can use The World and Death repeatedly
like
i've never had a issue with that but i get it
death is still 1 at a time but the suit changing cards, yeah
I think middle has the right level of contrast but it needs something⊠something small, maybe just a tweak to the gold shadow
But itâs stronger anyways
Also you have Cryptid
And DNA
Anyways, I tried to lean into the flavor of wildcards with it
i mean it is a cute card for sure
Thank you
Itâs just for testing
I usually make everything Common and cost $1
I do but I both donât want to think too hard about rarity and cost while Iâm programming the effect, but also I think I can tweak the rarity and cost after players test it
Although Iâd probably make specific Jokers specific rarities and cost
I do think I could make it stronger, but Iâd revisit it later while balancing it in the context of the rest of the mod
Because itâs inconsistent, so you canât guarantee youâll get a specific benefit
yeah the inconsistency makes it sound kind of iffy
I was thinking about making every effect ~50% better
The only one Iâd probably leave as is is Glass, although I could buff both it and Steel by less than 50%
I fixed it
Something like:
- Bonus: +50 Chips;
- Mult: +6 Mult;
- Gold: $5;
- Steel: 1.75 XMult;
- Glass: 2.5 XMult;
- Lucky: +30 Mult and $30.
also this is awesome
this is exactly the reason why i suggested mod icons
Blue Java is working perfectly
i made new art for square joker, and i'm actually kinda proud of it.
the joker itself was made ENTIRELY out of square tool usage.
Confession: ||I donât like base game Square Joker art but I do like this⊠at least more than the base artâŠ||
then mission accomplished!
base square joker is... unsettling to me
this is an attempt i made to be less unsettling
i'm gonna use it in my personal mod, feel free to use it in yours
i figure, "if i'm going to make it tied for the second most expensive joker in the game now, as well as one of the strongest chip jokers for endless... i might as well make it nicer to look at, too"
the corners of the card dont look like square tool
I prefer the rounded edges
on the other hand, that would probably require me to figure out custom backs...
custom backs? isnt it only 32 pixels?
yeah, but the engine automatically squishes the default sprite
for backs
to fit square joker
i dont see how thats a problem
Also AFAIK thereâs a card back bug
I'd be more worried about half jokers back over squares
chat how do we feel about this
yeah, half joker and vagabond are two i'd love to make custom backs for
epic
jimbo dating sim
1.6.2
cleared it up a bit more
Official modpack support would be fun
I know some people here just try and download as many mods as possible so now there would just be a way to expedite that process and keep it sane
the reasoning behind having an opt-in credits tab is that a lot of mods will have like, a loooot of contributors
and having to manage About details of the mod
and Credits
is kind of ridonkulous
The mod Iâm working on also has a lot of contributors since I kept track of who made every individual idea
And that is going to need its own section
So I approve of the Credits idea
My original plan was going to be to add a tab in the in-game credits anyway
guess it's time for me to work on a tag for my mod too
where is 1.0
It's the current code on GitHub
^
oh gotcha
to use the 1.0 alpha just downlaod the source code
hoping it'll fix this
that should be the ink and color conversion tarots, plus my page of cups
also, the page count is kinda fucked
need an extra page for all the taro
it's a start!
if you make a goku joker can you call it joku or goker
btw i think i have a good website for advice on pixel art technique i can get it in a sec if you want
would be appreciated
so what do i need to replace INIT with for steamodded 1.0.0
so... where do i put the initializing code that was in there, then
i'm kinda just wondering where all that code goes
you can just leave it where it was but delete the init around it
it acts the exact same
...well maybe not technically the exact same but i didn't have any issues when i did it
for me SMODS.findModByID is not defined neither...
It's like every method are null after SMODS
yeah, having the same issue
you can use SMODS.current_mod for your own mod's id
gotcha!
other than those two things and the sprite/object syntax idk what else is different
so how do we get other mod ids?
people have done cross-compat stuff, and being able to check for other mods being loaded helps
he's talking about 1.0 where init no longer exists
oh
...i'm asking because the alpha has removed init and findmodbyid
wait what
wait wait... 1.0 is out?
alpha what?
Steamodded 1.0 alpha
And some stuff doesn't work the same
and the loc_text stuff that you might need to do if your jokers do anything weird with text
So for now I should stop working on archived as a mod and focus on the actual archived project
and focus on art for mods
so, Sprite:new is also gone?
how do i change a booster pack name?
Basically everything works as a game object if I understand the code right. You can try to figure out how it works there:
https://github.com/Steamopollys/Steamodded/blob/main/core/game_object.lua
Basically you have different "required_params" for each object
Iirc SMODS.mod_list
You can also have dependanxies
and then just a bracket for the name?
Not sure
like, SMODS.mod_list["NumBalatro"] or something
Not sure
Ok so to create a Joker for exemple you just need to do SMODS.Joker({})
Try it and see
how do i change any card or booster pack names?
is the alpha api finalized yet? asking because I'm wondering if i should continue to make stuff for 0.98 or try to make it for the 1.0 alpha now to save the headache of converting it later
i hate gradient backgrounds
good
i like it!
i'm just trying to figure out how the hell to convert my code to the alpha version of steamodded
im getting started actually coding cardsauce, where are the definitions for the base game jokers?
and what the fuck is the new sprite creation template?
like how this mentions an e_negative tooltip, where would i find that in the base game files
i can explain things decently
so to register sprites you need this:
SMODS.Sprite{key = , path = , px = 71, py = 95, atlas = "ASSET_ATLAS"}:register()
btw you dont have to append mod path anymore
thats redundancy now
so you just give it a key
if you're using vscode you can use ctrl+shift+f to find things
path is just a path from your assets directory
px py and atlas are usually just this
for me it's line 662 of game.lua
yeah im looking though the code like that, and i did find that but im looking specifically for the tooltips because i want to write a new tooltip
OHHHHHHHHHH that makes a lot of sense ty
okay so what im gathering here is to make a new tooltip, id have to declare a new item and then write a decription for it, i can do this in steammodded?
what kind of a tooltip do you want to make?
guest artist tooltip so i can credit people who work on the mod
ahh I see
this is attempt #1 lol
so um, first off P_CENTERS is like, this big pool of everything in the game
G is just referring to the game object everything runs in
i tried to load a custom name for a Tarot pack and the game just crashes when i try
I know Codex does tooltips
overrides.lua my beloathed
if you're doing it before localization is initialized then it'll try to index a nil
but custom names for cards work
idk why
how would i put thi on a joker in steammodded?
its in the constructor
when you make a new joker and register it
you can set blueprint compat
oh yeah, im just trying to ge tthe indicator to show up on the jokers description
SMODS.Joker{
key = value
...
calculate = function(self, context)
...
end
loc_def = function(card)
...
end
}:register()
yeah, i registered it
i want to get the G.P_CENTERS value
and add more values into that after the initial registry call
i feel like im close to this working
why?
read thing wrong
if you want unusual entries in your joker's info just put them in the table in the constructor
anyone know the context for flushes and first played card?
not enough information, when is this supposed to trigger?
next(context.poker_hands["Flush"]) and context.scored_hand[1] respectively, but you'll need a timing context where both of those are valid too
stuff like context.before, context.after, SMODS.end_calculate_context(context), etc
ahh okay
Can someone check the Otralab doc to see if there's a comment on bull, I can't access comments
is that a threat
im sorry how would i write that out im confused
You can search the gameâs code for similar jokers and see what contexts they have; also every instance of calculate_joker to see what contexts they send as input
first card played of flush has 1 in 10 chance to become polychrome when played
check how midas mask works
yea i looked and seen the code for poker hands but didnt know i had to add flush as well and im using midas code as well
the code for poly and chances work as well
so whats the problem exactly
just not adding poly to first card not sure if im not adding the context right
whats your code
how would i send just a piece of the code instead of sending the whole file its kinda big
Copy paste it?
SMODS.Jokers.j_overt.calculate = function(self, context)
if self.ability.name == 'overtheRainbow' then
if context.cardarea == G.play and not context.repetition then context.poker_hands["Flush"] then
if pseudorandom('lucky_money') < G.GAME.probabilities.normal/self.ability.extra.odds then
for k, v in ipairs(context.full_hand) do
if v:poker_hand("Flush") then
v:set_edition({polychrome = true}, true, true)
G.E_MANAGER:add_event(Event({
func = function()
v:juice_up()
return true
You can also format it like Lua with ```lua
function foo()
return
end
```
you dont need to check ability name for starters
function foo()
return
end
v:poker_hand("Flush") means nothing you're running a poker_hand function on a card object
There seems to be a syntax error around context.poker_hands
youre also missing the timing context
so just take away this line completely?
if you're wanting to check the hand for a flush, just replace v:poker_hand("Flush") with next(get_flush(context.full_hand))
midas mask's code is probably in a huge if block with a bunch of others
yea i didnt understand the timing
And possibly there are implicit if not context.whatever
hey chat, ive gotten this joker to work but it only outputs the "Upgrade!" message and not the +X chips message when it upgrades, what do i need to do? its prob very simple lol
you want to card_eval_status_text the upgrade part, not return it
I think the easy solution would be to call the card_eval_status_text function manually
so just replace return with card_eval_status_text?
Returning exits the function
ahh i see
dont do this unless you know what youre doing
I meant the function you were talking about
i dont lmfao
oh, eval_card is a different thing
There historical revisionism that makes Autumnâs comment make no sense anymore
so i would do something like this or is it simpler
I donât know what inputs it takes but yeah
you can shorten the localize call to just the k_upgrade_ex text
Also you donât need the event
I think
the status text already creates an event IIRC
yeah unless you put instant = true in the table at the end
Which you do probably want
anyone here with alpha experience that can give me a tarot template?
im basically just trying to recreate runner but it triggers like matador
AFAIK people complain Matador feels inconsistent
Also IIRC it used to be a Legendary effect
yeah, feels like a lot of people think it should give money every time a boss blind effect activates
ok i got this, the effect is working properly but there isnt upgrade! text
it's pretty much just SMODS.Consumable{ set = 'Tarot', key = 'key', whatever_else }
I mean thatâs what it reads like
Try reading the source for that function
yo guys, anybody know of how playing cards of a specific game are saved? I was playing around with sprites and it turns out those sprite will be gone after i restart the game
how do
Kinda, are you replacing sprites?
i feel like knowing that would help a lot LOL
Iâd suggest copying the .exe then unzipping it
YES
oh i have
yesssssssssssssssssssssssssssssssssssss
and im reading through the card.lua
how hard is it to port a mod to steamodded 1.0?
guys, my balatro is on the wrong device
wait i might have something
@boreal token #đă»modding-rules
Anyways, while I maintain my previous question I think it recursively saves the arrays the card has, but probably not the sprites because thatâs a different object and the game doesnât expect the assets to change in-between runs
alright i got it
right, but it's not a permanent replacement, might take place in a per-run basis
i just did 7. it's fairly easy, if you know what you're doing.
alr
though i need to figure out atli now
which function does that? i mean at least i think i can try to poke the function so that it saves an extra field
oh fuck is it out yet?
If you add a new dictionary to the card it should save automatically
I mean officially
Alpha
not yet
kk
my first joker works!
I donât remember the specific function but try save_run
ok so basically i have something like self.xability
but the sprite of it is gone after i close and rejoin the game
Does the effect work though?
it works when i set it, it basically saves a few atlas info
to me, that seems to imply no discussion of modding the console versions of the game, which is not what i did
@frosty dock do you know why tallies dont work
oh i c, maybe i should've inject the code in the card rendering part instead
I meant if it works when you load
no it's gone when i reload
how, why, and where?
