#đ»ă»modding-dev
1 messages · Page 7 of 1
oh no i get what you mean
my only lament is not being able to put a good "joker" text on there (its on there but hidden)
drawing 100+ jonkers have taught me many ways to fit in joker but that was really hard
less hidden than hiking trip
you could replace the corner mickey with a jester hat and put a "J" there
hiking trips joker text is my magnum opus
is there a way to get other jokers extras by name? (all jokers, "extra.name" by specific name)
inside a joker
anyone else ever get an issue similar to this? I overrode Card:generate_UIBox_ability_table and am not sure why this broke.
it's only on cards with seals and is only visual
steamodded issue
okay
trying to not using injection issue
GOOD NEWS
I FINALLY GOT THE DISCARD TRACKING TO WORK!!!!!!
I used code from faceless joker but still required a lot of changes to fit my needs :)
But now I can use this to track the exact discards that happen
is there a way to get other jokers extras by name (all jokers, "extra.name" by specific name) inside a joker?
collection pages work!
chatroom how come every time i answer a balamod question the answer is always "that is a steamodded mod" or "that is because you have steamodded installed"
i mean we get people trying to run balamod mods on steamodded too so
true...
I'm thinking about a dn-substitution patch next, what do you guys think?
susge
it would be super useful, especially for making module injection easier
I just need to wrangle the lua runtime
sadge
none of those words are in the bible (what are you talking about)
module injection let's you inject entire lua source trees as a module, you can see how I used it in nativefs
thac module names are quickly spiralling out of control
dn-substitution is legit meant for that
So when I take ownership of something, do I have to fill everything out like it's my joker?
interesting. i've just been using NFS stuff to load em
yeah it's pretty useful
but it's a pretty complex feature
not excited for that :-(
it sounds interesting
yeah, I just hope people find it useful
it is pretty interesting though. dn-substitution was one of the cooler topics we covered in my uni courses
it might be useful if i need to load a module before SMODS init time, but im not sure if SMODS 1.0 features will change that
(i cant access the mod's filepath through SMODS features prior to init, iirc?)
though consequently i dont know why i would need to do that exactly
ah dn-substitution won't help you with that
so hilarious how unbalanced some of these ideas are
excuse me
hwat
that better be additive xmult and not multiplicative xmult
additive xmult? how does- what
exotic rarity jokers...
xchips doesnt exist tho right
2 applications of X5 mult = X10 mult vs X25 mult
it does now
haven't decided yet
multiplicative makes more sense intuitively though
so you're saying i should make a lovely patch for xchips
i think my fake localization in enhanceAPI can support it
its probably a good thing exotics can only be found from destroying all other jokers
Maybe trying to make retriggering joker API was a mistake
I've been battling this for a hour and a half
thats a backslash
might be a bit hard to see in this pic but this joker has 3 layers
I swear to god
this temp art is REALLY bad so if anyone can make a speed draw a good 3-layered idea then I can try it
soul_soul_pos
no, soul_pos.extra 
whats the gray thing
idk
soul_soul_soul_pos
just hang on for a bit, you're fighting regex not lovely. I can look at your patch in the morning and fix it up.
I've nefer had to deal with regex before
as does everyone who uses regex
Actually
in general I recommend explicitly matching for whitespace characters (like how you match for the indent) at the start
regex is incredible but confusing
please please please use https://regexr.com to rest your patterns
paste the text (plus some around it) that you want to match, then write a pattern
it's so much easier and expressive than debugging via lovely
ugh i lost track of it and discord search is being obtuse as usual
someone previously mentioned how to check if a card is in the collection screen, anyone know something about that?
Been trying to work with this but it seems like it has different syntax for some reason
Take this
Works in there, flashes me an error when loading
paste your patch here real quick
and try it here too https://rustexp.lpil.uk/
A Rust regular expression editor & tester.
I'm still getting used to the weird quirks of the rust regex engine
and also paste the code that you used in regexr
Tab space for the card_eval_status_text is wonky
yeah, use \s* instead
that'll match all whitespace chars
also I wonder if the leading newline in the pattern is breaking things
it will actually match 0+ whitespace charactars
ohhh
@edgy reef try this ```toml
[manifest]
version = "1.0.0"
dump_lua = true
priority = 0
[[patches]]
[patches.regex]
target = "functions/state_events.lua"
pattern = "(?<indent>[\t ]*)for i=1, #G.jokers.cards + #G.consumeables.cards do"
position = "after"
line_prepend = "$indent"
payload = '''
local reps = {1}
local j = 1
while j <= #reps do
if reps[j] ~= 1 then
card_eval_status_text((reps[j].jokers or reps[j].seals).card, 'jokers', nil, nil, nil, (reps[j].jokers or reps[j].seals))
percent = percent + percent_delta
end
'''
[[patches]]
[patches.regex]
target = "functions/state_events.lua"
pattern = '''(?<indent>[\t ]*)card_eval_status_text(_card, 'jokers', nil, percent, nil,
{message = localize{type='variable',key='a_xmult',vars={edition_effects.jokers.x_mult_mod}},
x_mult_mod = edition_effects.jokers.x_mult_mod,
colour = G.C.EDITION,
edition = true})
end
percent = percent+percent_delta
end
'''
position = "after"
line_prepend = "$indent"
payload = '''
if reps[j] == 1 then
--From Joker
for j=1, #G.jokers.cards do
--calculate the joker effects
local eval = eval_card(G.jokers.cards[j], {cardarea = G.hand, full_hand = G.play.cards, scoring_hand = scoring_hand, scoring_name = text, poker_hands = poker_hands, other_card = G.hand.cards[i], joker_repetition = true, card_effects = effects})
if next(eval) then
for h = 1, eval.jokers.repetitions do
reps[#reps+1] = eval
end
end
end
end
'''
the only difference is that I removed the leading newline on the second pattern
it's worth a shot but I'm pretty sure that wont fix your problem
Sadly no
so going over general regex syntax problems, you can't match reserved characters like * . + (){} without a \
so prepend all +, ., ( and ) with \
UNLESS you're using those characters for a regex thing
are standard multiline matches gonna be a thing? this sounds like a headache
(and/or are already a thing)
dear god
can i get a thing from the extras in all jokers, and put it in a list?
I mean there are ways to make this less painful, most of the time it's not really required to a pattern this complex
Almost every other context wouldn't need to do this
But I need to maneuver around a field of end statements
I just did that and checked with the regex reader website, checks on there but throws this at me when loading.
0-3 for regex
try this instead (?<indent>[\t ]*)card_eval_status_text.*\n.*type='variable'.*\n.*x_mult_mod.*\n.*colour = G\.C\.EDITION.*\n.*edition = true[\s\S]*end\n[\s\S]*
for your pattern
and if that isn't specific enough add additional info until it is :-)
The function is screwed since this doesn't cover the percent = percent+percent_delta end part but WE HAVE A MAAATCH
nice!
Also this is due to the 1st patch apparently
ah gotcha
same sorta deal, make sure you're escaping special characters "(?<indent>[\t ]*)for i=1, #G\.jokers\.cards \+ #G\.consumeables\.cards do"
the power of regex is that you can write a pattern that doesn't really care about the specifics
instead you can write a pattern that cares only about the most minimal amount of information required to make a unique match
this is due to a couple of reasons, some technical limitations, some because I'm opinionated
what
it's mostly related to dn though
sorry i got distracted and lost any train of thought from that topic whats going on
Gooooood morning
yeah, it's probably something that I'll implement later down the line
sick
gonna focus on dn first though 
hopefully thats cool when it happens i guess, my schooling didnt cover it haha
What are you guys doing?
Trying to win a war against regex syntax
mr lovely is making lovely do more things
flowwey is doing joker retriggers
im trying to make the next release of Thac not riddled with garbage code
speaking of did you get hand pages done
Where are my numbers???
GONE
literally only usable on the fragile challenge
lmao
and some other downside jokers too but that's more niche
theres probably some other stuff throughout mods, but yea
there's more dice, I'm just tryna figure out denominator stuff.
denominators arent handled consistently
ik
hit me
gacha alt universe lookin ass
Still giving me the same error
like a suit joker that gives you chips instead of mult
i've been telling people, alt art versions of vanilla things
or other changes to vanilla jokers
like i really wanna do stuff like that with the subtitle thing
Lusty Joker (Alt Art) that gives chips instead
the subtitle can be whatever your heart desires
i think Aure was looking at putting them in smods
debating on adding Blackjack Straight or not, it's technically possible with the assistance of jokers
hows blackjack hands work?
also is this in feder's cool awesome hand API 
if the hand sums to 21 its a blackjack
Natural is an Ace and 10/face card and doesn't count as a blackjack hand
This is so goofy, and I love it!
blackjack three must be that the blackjack is obtained with the three of the kind and only teh three of a kind. aka 3 7s
i def need to hide Blackjack Flush House tho since it requires duplicate cards
I need help
It says that j_joker_test is a nil value, and I don't understand why.
you're registering it as j_testy
the slug is prepended with j_
and then thats put in SMODS.Jokers
OHHHH
Thank you so much!
no.
instead of buying jokers you buy gacha tickets
10 pulls for a guaranteed uncommon
does the Blackjack Flush House look balanced, i felt it was harder to get than Flush Five and ranked it higher.
@gaunt thistle The injection isn't at the correct position
is a blackjack house even possible?
hack eating good
How do I have a modded joker show it's current chips or mult, like runner for example
you'll need a loc_def function
oh that is so good for blackjacks
since they either demand low ranks or playing less than 5 cards
the loc_def function will have to return the values you need in the loc_txt
then in the loc_txt, use #1#, #2#, or any number to reference the variables from loc_def
imagine trying a Natural Build
blackjacks out here making king build worse by making everything else as powerful as it
180x20 seems odd given the other secret hands are pretty rigidly (n*10)x(n)
yeah 5oak is 120x12, flush house is 140x14, flush five is 160x16
180x18 it is then
but, small sample size, so do as you like lol
i like patterns
after i add planets for these im gonna try making a natural build
I'm definitely missing something đ
you'll need a loc_def function, similar to the calculate one
it takes one argument which is the card itself
my code has the process somewhat automated but this is roughly what a function of this sort will look like
(i havent actually made a joker before im just the Consumables Guy)
maybe i could add a blind which demands hands less or equal to than 21.
speaking of, @mellow crag do you happen to have Page-d Hand API you could send me this is getting ridiculous
yes
gm feder
good morning Lyman!
imagine combining that with blackjack, results would be ridiculous
well fortunately, im pretty sure BlazeJack is impossible
given that a Blaze is 5 face cards
Blackjack Skeet... maybe?
wait can i use this for hand of six?
oh ok
also i totally used HandofSix code to make the blackjack stuff, probs gonna recode/heavily adjust the code it so im not just stealing
oh yeah actually blackjack skeet is possible i think? (2-3-4-5-9 should be valid for both hand types)
i really do not care
oh okay then
no wait thats too much for a blackjack
that was my first mod anyway, i didnât put too much effort into making the code super well
skeet isnt compatible with four fingers though
because they out rank pair and two pair
im not counting hands only possible with jokers
so yeah blackjack skeet is out of the question
im tempted to make Straight Flushblaze possible
just make every set of cards it's own hand
sure
Pareodolia
I'm stumped :(
Is there any more code that I can look at that would help?
"yes give me a 0 of stars. give me a Ă of swords. " - Statements dreamed up by the utterly Deranged
-1 of hearts
usually people will say SixSuits, Mikas Mod, or uhhhh the third thing
unget chips
Balor!
i got and changed the denominator with a different card
without specifying what joker
i also did a thing im excited about
you forgot to retrigger Test Joker
Test Joker is retriggering itself
i got the denomators able to change :0
surpirsing easliy
This random asdf comma and a very cursed regex line saves me
regex are inherently cursed
Epic :0
Just in case pegi makes the game 18+ again
is there a non-texturepack method to modify how a vanilla card looks?
random seeds have been removed to avoid gambling addictions
youd have to take ownership of the card, then either give it different atlas and pos values or register a new sprite with the same slug (and probably also change pos values)
i was fearing that, thanks
hello yes i would like a 245 in 256 chance.
so they are all 50%
how are you getting 50% out of that lol
avergae probability is 50%
i just realized something about blackjack, i have to account fro weird ace rules
rebuff jumpscare
managed to forget those somehow
what about split rules?
is this a blackjack
yup
what are dollars & mult for in blind api?
would blackjack count 0s
if the hand has 2 8's, does it have the potential to split?
joker that lets you split
if you have 10,10,A,A, that's a blackjack with a split technically
but you only have 1 hand in balatro
so, no
dollars is reward money
mult is required score relative to base
ohhh gotcha thanks
so 2 on most normal boss blinds, 1 on the needle, 4 on the wall, 6 on violet vessel
looking forward to playing this blackjack flush
nope
that's four of a kind
blackjack flush is below 4oak?
yes
This is making my brain hurt... How is that possible?
cringe ngl
21 + 0 + 0 + 0 + 0 /s
blackjack flush simply isn't hard enough to be above 4 of a kind
but also, 0 cards are kinda hilarious and should be it's own thing
I meant as in 'How do you get a 21 and four 0s'
yeah its probably fine
gotta make it a straight blackjack flush
nope
straights aren't blackjacks without jokers
if you find a counterexample i'll add straight blackjack
23457 with shortcut
without jokers
sure sure it's not possible with no jokers
yessssssssss
flush four doesn't exist
omw to make flush four
20 + .25 + .25 +.25 +.25
who even said flush four
@random sleet are you adding half-cards?
no lmao
DankerRanks
we can do negative ranks, but the game itself does not like negative chips
time to hack it out!
BTW @random sleet could you send me dankranks?
i have no idea how to add ranks XD
lol
yay
BTW you might wanna update it to the poker hand api in 1.0
what?
i have wrote an API to add new poker hands, which will be added to steamodded 1.0
this works too
3 3's and 2 A's is a blackjack house. so is 3 A's and 2 4's and 3 A's and 2 9's
this makes blackjack flush house a good bit less rare
it won't be if you don't submit a PR for it
I am not sure how to send it to you in a good way. Should i mak a small lovely patch for it?
I mean with the amount of processing involved on my end (especially to the form of APIs), it doesn't matter super much how you send it
but yeah a lovely patch sounds good
While doing that, I made this XD
?
half a car.....
hey i've been trying to get the deck creator mod on thunderstore to work and it just gives me an error, steammodded lovely and nativefs alone work, but whenever i add deck creator it fucks it up. can i copy paste the error it gives me here? it's kinda long
sorry if this isn't the right channel to ask for troubleshooting
How do I change bg color of a blind?
oh no
oh no no no no no no no no no
i accidentally deleted the mod dependency and icon patch
oh no no no
HAHA YES
that's not good
well time to rewrite it
retrieved it
whew
i really wasnt expecting to pop off so hard with the minor arcana suits these look pretty sweet
They look quite nice
(we dont talk about face cards)
bobm but hot girl
speaking of face cards
how many people are making more suits
I got confused from time to time
so many amazing suits
i have minor arcana and homestuck aspects as suits, firch has fleurons and halberds in bunco, aure has stars and moons in sixsuits, snow has ink and color, and then there's sixty suits and six hundred suits
I'm not sure why but my blind background color is defaut/main menu color
however the ui is colored properly
imagine installing all of them
I tried to play around with that before, and it keeps switching off
is that steamodded's thing?
i think per hand played
Ummmm @frosty dock I think there's a really big issue with making the consumable tab
Should I buff natural or is the current fair, the hand feels pretty useless rn
well I haven't played a single hand tbh
that mod is supposed to run last, and having it inside steamodded makes it load first
which means it will not work
I just entered the blind and it's already that color
my screen recording is broken, but otherwise i can show you what i meant
make it init itself after the initmods thing
it has hooks
It feels like I made blind and literally nothing works aside from the blind appearing XD
Debuffs also do not work and feels like they do not even get called
Debug message doesn't print anywhere
ugh what
oops that debug message is not even in the funciton đ€Šââïž
bobm but womn,,,
still doesn't print lmao
the patch works by patching the function after all of the other mods patched it, which means that it will run last
are you using priority?
woooo refactor time
yes
high values load last
yup
are you sure it executes first, or does it just get found first by the loader?
when it's loaded into base steamodded, it's loaded first
i see, so for my PR i will have the hand API, tag API, dependency checks, and mod icons
We will need to figure out how to load the sprites into the game though
I'll drop you the new API structure I'm working on in DMs, so you can see how it functions
API API (real)
wait wtf are finisher boss blinds supposed to have this bg?
ohhh i see which one you are talking about
the one with the table?
actually
i wrote it the old fashioned way currently
you don't need to adapt to it if you don't want to, it'll just spare you a lot of redundacies
whattt, that's true, actually very lame
Now I want to make a thing that reenables bg color for finishers
thoughts on this look for minor arcana face cards?
oh that's a lovely color scheme
tarot infused!
that's fun
or is a more subtle effect better
subtled one might work better with enhancement?
since it becomes transparent afterwards (I assume)
ehhhhh
i'd go darker just because it's more striking
enhancements kinda muddy up a card visual-wise so imo i wouldn't factor in enhancements
my dumb attempt at localizing to do list
"buy jeans, get some yogurt, work at the office, fix the curtains, alcohol" and the first character on each line roughly spells out "joker" in japanese
compare
ooh yeah. that dark gold contrasting with the emerald green pops.
minor arcana (sorry i screwed up some things)
cups/wands/coins/swords
since they're tarot and im nowhere near good enough to make my own face cards, i figured just combine tarot background with the face cards
What's the value that tracks how much money you currently have?
how's this for hijacking card type badges?
G.GAME.dollars
hey guys do you know what value tracks the amount of chips during a hand?
hand_chips
thanks
k imma just make up planets because finding actual planets is too annoying
trying to incorporate more colors so they will actually be unique from regular boss blinds
trippy
i just had a horrible idea, blind where you cannot overshoot or else you lose.
I have no idea why I did this
that is awful
maybe it should be like set money to $0 or something
gives some lasting negative effect but doesnt Just Kill You
i said it was a horrible idea
if you overshoot by x% you lose because it would be almost impossible to get the exact number
thats so pretty
crimson heart and vv screenshots look like they have yellow filter on them
it's (mostly) done
there are a couple jokers i forgot but i'll post it sometime tomorrow
hopefully the translations that arent derived from the official names are like. not shit
Do you have the code for this on GitHub?
I do remember seeing that idea for a Blind during the demo
I canât remember if it was mine or someone elseâs
also i tried to do another "pun" with ride the bus
Ah, I suggested something similar. The Pauper: Debuffs all cards if the player has $11 or more https://discord.com/channels/1116389027176787968/1164969920182890516
since the word for "road" is in the word for "clown" (also used for buffoon packs) i made the "route 211A" text "clown road"
if my translations SUCK then i'll be embarrassed but it was still fun to practice the typography
actually i should probably also look through the localizations thread for japanese and use some of the things that have been mentioned there
funny bug
Blackjack as a hand. Interesting
just for clariity an Ace by itself is not a blackjack
ah yes i love drawing single ace blackjacks
#đ»ă»modding-dev message list of blackjack hands btw
Currently cooking fish, will share github in a sec
planet card
i love diluting the planet pool with random ass hands
Interesting
just use MoreConsumables and have Station available
so true
https://github.com/Firch/Bunco/blob/main/Bunco.lua
Lines 3191-3213
hey do you guys know how to copy a card like dna but change the suit?
you can't just do what dna does then change the suit after?
im not really sure on how to do that
the tooth code is like that
and the oryx code looks like this
(i know i'm coding in a f- txt file)
if only there was an alchemist to tell me how his code works đ
(for those who don't know i want to do a blind that make you lose 1$ per card discarded)
ease_dollars changes your cash
where do i put it ?
I donât know how Blinds work, but Tooth creates an event to control when the animation and sound plays too, as well as marking its ability as triggered
You can hook the function that processes Blind effects or check if the API helps
Maybe another mod that has Blinds
i will check other mods but before that i gonna check if the river get added correctly
not the good skin
what should i modify ?
i tried messing with these value but nothing worked
tried 34, 68 : 68, 34 : 0, 0 : 68, 68
I think thatâs just the size of the sprite
Oh, you mean that it has the wrong sprite
yup
If you used an atlas, you should configure the x and y coordinates
norse rune blinds
these ?
Yes
i will mess with every single value 'till i find the good one
What does your atlas look like?
No the atlas
This
oh because the game already knows that a bling is 34x34 pixels
there it is !
now i have to make them do something
that's just uh. play max 4 cards
yup
i created a war just by asking what it might do now i can't change the effect đ
change "5 cards" to "5-card"
done
does anyone know the function that is called when blind is created/appeared in the run?
is it Blind:set_blind?
even by looking in the game code i'm too stupid to code my blind :/
Apple juice is so good (irl)
yes
hello blatrostuck
idk what's wrong
function Blind:press_play()
if self.disabled then return end
if self.name == "The Oryx" then
G.E_MANAGER:add_event(Event({trigger = 'after', delay = 0.2, func = function()
for i = 1, #G.discard.cards do
G.E_MANAGER:add_event(Event({func = function() G.discard.cards[i]:juice_up; return true end }))
ease_dollars(-1)
delay(0.23)
end
return true end }))
self.triggered = true
return true
end
end
i'm stupid
i know what's wrong
but i don't know how to solve it
chat anyone know why this happens in collection with a blind i made
i think that the juice_up is the error but i don't know with what should it be replaced
please use vscode aaa
ok ok
is your atlas an animation_atli
juice_up()
thank you blindomancer
no problem
lets gooo
Or SublimeText
hhhhh nice name change
are you sure you called Blind:press_discard
because that's a new function you're defining
a
that's me
there's a discard function iunno, i'm too lazy to check rn
but you'd want to add like G.GAME.blind:press_discard() there
i'm feeling dumb rn because i don't understand
yeah base game only has Blind:press_play()
if you want your function to be used, you need to call it somewhere
i can put it somewhere in here ?
you need to find the function that handles discards
and manually call your function there
so i have to put a function that handles discards then call the blind function with it ?
consider looking at G.FUNCS.discard_cards_from_highlighted, this gets called whenever cards are discarded
if you put a call to your function there, you're all set
but where do i put that ?
anyone knows?
can't find it
Found a way to make Joker Trophy less brutal on sold (Instead of making you lose the run)
me when i get a ceremonial dagger oddity
on use sacrifice your left eye
The easy way would have been to make it eternal but a flying sticker sounds ugly. If theres too many modded mechanics that includes destroying consumables I'll just switch to making it eternal
blind that helps you or "helps" you
very abusable
(note: no money payout)
Might just do that to avoid future problems, screw being pretty
both
methinks
TRUE
chat do you think my code works
SMODS.Backdeck đ
just switch between Back and Deck every line out of spite
If its your first try no
(you're right)
f
i mean i could allow both
i think Jera should at least have a $1 reward
but that's if I feel like it
yeah it looks weird with nothing there
I donât think itâs an issue to allow it to be sold while you have more Jokers
Hands work like that
it doesn't
You can go over, why should Jokers work differently
Because I feel like so
red stake sets a flag to remove rewards on small blind plus the reward text
No real argument from me lol
Back only because I felt like it?
fair
does anyone disagree
Nope
I also donât think it needs the text
I dont want people asking "Why did my Joker Trophy turn eternal?"
absolutely normal and not cursed screenshot
does the blind work though
They shouldnât even without the text, IMO
because i've messed with it at least twice now
it does
Define SMODS.Deck as a pointer to SMODS.Back
oh wait
but this was me testing things anyway
ah no no
i never tried to replace just the boss that's good to know
no
SMODS.Deck = SMODS.Back
still no
SMODS.Front when
that's just playing cards?
Epic
tbh that's a possible rename
I love it
SMODS.Card is inaccurate and SMODS.PlayingCard would be too long
Unenhanced?
Default
SMODS.PokerSquares
the set is literally default
I know
but SMODS.Default says even less about what it is
SMODS.Playable?
could just go straight for SMODS.Suit and SMODS.Rank
i'm gonna continue my blinds coding later
If Lua has type unions, maybe have one for Default and Enhanced
Wait. Are those in the gameâs code?
I thought not
How are you going to make API for sprites for arbitrary suit/rank combinations?
currently it's SMODS.Card for both, which I'm not sure how much I like
lua barely has types
this is all that's left of the voucher API
everything else was redundant
huge
Yaldabaoth my beloved
Praise the worm
oh thats much more comprehendable of a face than i expected
hes so cool..
is mult gained at end of round?
yes
it's basically Delayed Gratification 2, but it does something
the long awaited Delayed Gratification synergy build..
like s_sprite?
also mod prefixes
I'm partial to not prefixing sprites due to the way they get used if the key matches
either way it would be possible to just do something like SMODS.Sprite{omit_prefix = false, prefix = 'j', ...} to not omit the prefix (or omit_prefix = true to omit it anyway)
can anyone see why line 1240 is nil should be working like the others
undiscovered sprite API?
i love that boss effect
yea that looks good
(whats the difference)
yep!
theres always pixels
were they
yea i like it
not pixelated
playable*
is it me or it looks blured ?
without crt
i have shitty eyes tho
oooof now you can see the pixels on "Balatro" title but that's okay I guess
have fun unpixelating the game i guess
I quite like the effect
is it possible to have separate file with variables for mod? I want to make some kind of config file
what if
Balatro Faithful edition
like a 2x balatro texturepack
everything is twice res
rotsprited/pixelscaled balatro
ok so what if we make the ankh downside +1 ante
(pixelscaled is much better)
would stll need some cleanup
yep
any ideas?
https://github.com/AutumnMood924/TheAutumnCircus/tree/main wow it'd be so weird if someone did that already /s
A balatro mod adding more Tarot, Planet, and Spectral cards. Requires Steamodded. - AutumnMood924/TheAutumnCircus
ohhh ty
New Oddity. Might make it into a Joker. Not sure.
@random sleet For some reason it doesn't display the description. Might be a bug? I don't think I did anything wrong
no way, chance
?
that is bizarre
idk why that would happen
unlike Chance it looks like enhancements are guaranteed here
ok what else do I need to do when I take ownership of a consumable? Trying to make a re-balance patch
My guess is that it's because loc_def is empty but Idk
ok so when I take ownership of a spectral card and hover it, it crashes 
do I have to re-define it's oracle text?
function SMODS.INIT.Balatrostuck()
local mod = SMODS.findModByID("balatrostuck")
local function batch_load(txt)
local joker_files = love.filesystem.getDirectoryItems(mod.path.."data/"..txt)
local joker_defs = {}
for _, file in pairs(joker_files) do
if string.find(file, ".lua") then
local joker = love.filesystem.load(mod.path.."data/"..txt.."/"..file)()
table.insert(joker_defs, joker)
end
end
return joker_defs
end
local batch_jokers = batch_load("jokers")
local batch_aspects = batch_load("aspects")
local batch_zodiacs = batch_load("zodiacs")
SMODS.Sprite:new("HomestuckJokers", mod.path, "hsjokers.png", 71, 95, "asset_atli"):register()
SMODS.Sprite:new("HomestuckZodiacs", mod.path, "zodiac.png", 71, 95, "asset_atli"):register()
SMODS.Sprite:new("HomestuckAspects", mod.path, "aspect.png", 71, 95, "asset_atli"):register()
SMODS.Sprite:new("lymanJuju", mod.path, "hsspectral.png", 71, 95, "asset_atli"):register()
end
new and improved
init function
still need to load the batches of files
This is what I have
does someone actually want me to release this mod?
what does it do
look at the ranks
what does it do
half cards and quarter cards
yes but what do they do
give you half chips and quarter chips
can you make Straights with them
Isn't that skipping ace
ace is 11
also 1
what the heck are you cooking
half heart half club
Do give them ideas
half heart quarter diamond quarter club
that's a neat way of saying wild card
wild card without spades
weird.
take two cards and fuse them, real time suit creation
value is the average of the two cards
i think that would be absurdly funny
why is balatro exploding?
make sure your stuff is in your init function
im getting an error @random sleet
On a quest to become a cursed developer here
not all hearts are upside down, literally unplayable
care to enlighten me on what your code looks like or should we both just stand here looking like a couple of felt-covered cotton balls
this is my lib.lua file
and an example joker script
function Balatrostuck.INIT.Jokers.j_applejuice()
local j_applejuice = {
ability_name = "Apple Juice",
slug = "applejuice",
ability = {
extra = {
d_size = 8
}
},
loc = {
['name'] = 'Apple Juice',
['text'] = {
[1] = 'If no {C:red}discards{} remain',
[2] = 'add 1 extra {C:red}discard',
[3] = '{C:inactive}(#1# discards left)'
}
},
pos = {
x = 4,
y = 2
},
cost = 4,
rarity = 1,
blueprint_compat = false,
eternal_compat = false,
unlocked = true,
discovered = true,
atlas = 'HomestuckJokers'
}
init_joker(j_applejuice)
function SMODS.Jokers.j_applejuice.loc_def(card)
return {card.ability.extra.d_size}
end
SMODS.Jokers.j_applejuice.calculate = function(self, context)
if (context.pre_discard and not context.blueprint_card) and G.GAME.current_round.discards_left <= 1 then
if self.ability.extra.d_size <= 1 then
ease_discard(1, nil, true)
self.getting_sliced = true
G.E_MANAGER:add_event(Event({
func = function()
self:start_dissolve({G.C.RED}, nil, 1.6)
return true;
end
}))
return {
message = localize('k_eaten_ex'),
colour = G.C.FILTER
}
else
G.E_MANAGER:add_event(Event({func = function()
ease_discard(1, nil, true)
self.ability.extra.d_size = self.ability.extra.d_size - 1
card_eval_status_text(context.blueprint_card or self, 'extra', nil, nil, nil, {message = "-1 Discard", colour = G.C.RED})
return true end }))
end
end
end
end
why is it not doing thing :(
love.filesystem.load does not actually run the script so you need to return an object here
wdym
I imagine the joker file needs to end with return joker
does it?
I do it with require
is they set up global variables to get run later
idont wanna know how yours works i want to know how to make mine work
here's the lua for autism creature
which is what this accomplishes
you're clearly using mine as a reference because this is the most dogshit ass way to do this
Here's Hamster
lmaoo
and nobody would ever think of it on their own
im using Codex
as a reference
ty!
I'm adding the information about the Jokers to the Joker file itself instead of a different file with all of them
which was clearly using mine as a reference because this is the most dogshit ass way to do this
for love.filesystem.load files you need to declare everything into a table and return that table
But it's a WIP
OH NO
what
Rebalanced more like Reshuffled
yes
that's literally what i did lol
wait so i just have to do that then?
no NFS.load()?>
when you load a file with NFS.load it returns that file as if the entire contents were surrounded by
function()
end
And me but I used require
don't use require pls
Why not?
fixed dw
@random sleet do you not use nfs.load pls answer
no i use NFS load
now to implement probably not good balance changes
in a really weird and clunky way
none of those variables contain anything
none of those files return anything
Why not?
why are you loadnig them then
Are you also making a rebalance mod? :)
because they have the code in them
idk aure probably knows better
TheAutumnCircus and TheAutumnCircus.INIT is defined as a global table in the main lua file of the mod
you can't define globals in the same way from within something you load with NFS.load
mostly stuff to make high ante games more consistent and less terrible
because it'll be in the scope of this function
why would I? I'm the loader guy
yes
so your lib.lua defines Balatrostuck = {} as a local variable to its own file
you have to do that in the base file with the steamodded header
Balatro uses require and Idk Lua so I used require too
isn't default scope global in lua?
Nice! Mine is making the worst of the worst usable, and also making vouchers not repeat effects.
that i dont actually know
but i hope its not because then i have no idea why akai's code isnt working
salt induced balance changes
its global
at least from this weird game of Programming Charades we're playing where i see like 40% of the code
i have no idea whats going on
Idk how Lua scopes work. I define variables inside my code that requires other things but they can't find that variable
but yeah if you just set Balatrostuck.INIT.<...> it won't automatically work
aaghhsdjk its global scope why is it not fucking finding it
hm iunno then
you have to then iterate over the things in that table
okay
its not working
--- STEAMODDED HEADER
--- MOD_NAME: Balatrostuck
--- MOD_ID: balatrostuck
--- MOD_AUTHOR: [Akai]
--- MOD_DESCRIPTION: Homestuck Jokers! Why not!
--- BADGE_COLOUR: 4CE24E
--- DISPLAY_NAME: Balatrostuck
G.C.SECONDARY_SET.Zodiac = HEX("77003c")
G.C.SECONDARY_SET.Aspect = HEX("033476")
G.P_CENTER_POOLS.Zodiac = {}
G.P_CENTER_POOLS.Aspect = {}
G.C.BREATH = HEX('0086EB')
G.C.BLOOD = HEX('BA1915')
G.C.SPACE = HEX('000000')
G.C.TIME = HEX('ff2106')
G.C.LIGHT = HEX('f98100')
G.C.VOID = HEX('00164F')
G.C.MIND = HEX('50b250')
G.C.HEART = HEX('bd1864')
G.C.LIFE = HEX('77c350')
G.C.DOOM = HEX('20401f')
G.C.HOPE = HEX('FFE094')
G.C.RAGE = HEX('9c4dad')
G.C.SPECIBUS = HEX("008c45")
G.C.VRISKA = HEX("005682")
G.C.VRISKA_2 = HEX("007ebd")
G.localization.descriptions.Zodiac = {}
G.localization.descriptions.Aspect = {}
G.localization.misc.dictionary["k_zodiac"] = "Zodiac"
G.localization.misc.dictionary["k_aspect"] = "Aspect"
function SMODS.INIT.Balatrostuck()
local mod = SMODS.findModByID("balatrostuck")
local function batch_load(txt)
local joker_files = love.filesystem.getDirectoryItems(mod.path.."data/"..txt)
local joker_defs = {}
for _, file in pairs(joker_files) do
if string.find(file, ".lua") then
local joker = love.filesystem.load(mod.path.."data/"..txt.."/"..file)()
table.insert(joker_defs, joker)
end
end
return joker_defs
end
--batch_load("jokers")
--local batch_aspects = batch_load("aspects")
--local batch_zodiacs = batch_load("zodiacs")
for _, v in pairs(Balatrostuck.INIT.Jokers) do
if v and type(v) == 'function' then v() end
end
SMODS.Sprite:new("HomestuckJokers", mod.path, "hsjokers.png", 71, 95, "asset_atli"):register()
SMODS.Sprite:new("HomestuckZodiacs", mod.path, "zodiac.png", 71, 95, "asset_atli"):register()
SMODS.Sprite:new("HomestuckAspects", mod.path, "aspect.png", 71, 95, "asset_atli"):register()
SMODS.Sprite:new("lymanJuju", mod.path, "hsspectral.png", 71, 95, "asset_atli"):register()
end
i tried with batch_load uncommented too
i tried both
what like this
function SMODS.INIT.Balatrostuck()
local mod = SMODS.findModByID("balatrostuck")
local function batch_load(txt)
local joker_files = love.filesystem.getDirectoryItems(mod.path.."data/"..txt)
local joker_defs = {}
for _, file in pairs(joker_files) do
if string.find(file, ".lua") then
local joker = love.filesystem.load(mod.path.."data/"..txt.."/"..file)()
table.insert(joker_defs, joker)
end
end
return joker_defs
end
NFS.load(mod.path.."lib.lua")
--local batch_jokers = batch_load("jokers")
--local batch_aspects = batch_load("aspects")
--local batch_zodiacs = batch_load("zodiacs")
for _, v in pairs(Balatrostuck.INIT.Jokers) do
if v and type(v) == 'function' then v() end
end
SMODS.Sprite:new("HomestuckJokers", mod.path, "hsjokers.png", 71, 95, "asset_atli"):register()
SMODS.Sprite:new("HomestuckZodiacs", mod.path, "zodiac.png", 71, 95, "asset_atli"):register()
SMODS.Sprite:new("HomestuckAspects", mod.path, "aspect.png", 71, 95, "asset_atli"):register()
SMODS.Sprite:new("lymanJuju", mod.path, "hsspectral.png", 71, 95, "asset_atli"):register()
end
yeah basically
i have these getting called earlier in the file than any content modules
-2
-2
you didnt run it
NFS.load(mod.path.."lib.lua")()
not
NFS.load(mod.path.."lib.lua")
NFS.load returns a function
chat is this real?
the function is a no-argument function containing the code in the file
+-2
pi should be next fr
pray event that turns your whole hand into -2s
why NFS.load doesn't simply run the damn function i'll never know but you do have to actually explicitly run the function
you have an init_joker function? where?
just fixed it
thoughts
don't give me any ideas!
in utils.lua
are you loading utils.lua
i will kill the person who made lua
same bestie
alternatively can you kill me instead
i shouldnt have to load a file thats GLOBAL IN SCOPE
lua is such an ugly language
it's being ignored by steamodded because there's no steamodded header, which means steamodded will skip it
so you have to explicitly load any file that you need loaded that steamodded skips
thats so genuinely mindnumbing
if it loaded every file in your folder itd be more confusing
Is it possible to replace text colors? Want to replace high contrast colors of suits in text
especially if you don't get to specify load order. that'd be a real mess.
that's another thing i need to do
load order
rn its just a general batch load
it has no concept of load order
this is one of many reasons i dont mess with putting every single damn object in its own file
its cleaner to write though
as a language, lua is kind of unique in that it doesn't enforce a code style, like other languages
like, its almost impossible to write a program in c# that isn't object oriented
so its up to you to keep a consistent code style
you can mix and match, like the base game does, but it takes some practice
Kinda rough wip but gets the job done
What increases in sell value?
I think it should be like Jokers
âThis Oddityâ
I watched the video, I criticizing the description
Stop with the answer ping spam jeuse
Anyhow, I made a Joker with a similar effect, but I think Iâll remove it from my mod because I donât like it
My bad I like pinging people
Fair, changed the desc to clarify whats getting extra sell value đ
And by similar I mean you immediately gain $1 when selling Jokers
Oh so like everything get's +1 extra selling price?
Only Jokers
It felt both weak (which I could buff) and uninteresting IMO
Ooh I see
I want to encourage buying and selling Jokers, but itâs too straightforward
If I buff it too much then most Jokers become free to buy then sell
I could make it random, which I donât mind, but I still donât find it interesting
^this guy encouraged buying and selling pretty well
pawn joker from jank jonklers also encourages buying and selling pretty well
Hmm, the four main payoffs I have planned are:
- Dog: Gains +10 Chips or +2 Mult when you get a Joker;
- Shrimp: Gives two random Jokers +2 Mult when you sell a Joker;
- Dragon: +10 Chips to your Jokers when you get a Common Joker;
- Chicken: +3 Mult to future Jokers when you get a Common Joker.
interesting
Then I had three economy Jokers (including Goat, which Iâm cutting), and two Jokers which you can get value of then sell (Cow and FĂ©licette)
what are the rarities of chicken and dragon?
Iâm planning Rare, but weâll see
sounds good
If I cheat them in early theyâre quite strong, but so far Iâve only found them late
So itâs hard to tell
if you get them with riff raff its op but as a rare that seems perfectly fine to me
I just buffed Chicken from +2 to +3
Indeed, I made all of them âgetâ or âsellâ instead of Buy so theyâd work with Riff-Raff
I think the best economy Joker is Hamster, which gives $20 after every three rerolls
chaos flash card synergy is pretty cool
chat am i stupid
yes
Not stupider than me
snippet of code since i dont want to flashbang mobile users
i keep getting an error comparing a value to nil here
(i presume it's me trying to get the context.full_hand count)
wait
my logic for this is stupid
me when my work today has included deleting both of those files
