#💻・modding-dev
1 messages · Page 325 of 1
i can make the delays super long and it just sits there and waits for the delay then does the last event before the first one
You can't nest Columns within Columns or Rows within Rows, you have to alternate them
bepis what the fuck
You want a UIT.C, containing two UIT.Rs, each containing either the bar or the UIT.T node
everything in life is contained in a UIT.R tbh
each r should contain one of them think
Alright
i wonder why is it mandatory to alternate between R and C, but i think i understand now
one sec
UIT.C {
UIT.R {
UIT.O (progress_bar)
},
UIT.R {
UIT.T (text)
}
}
like this, right?
wait i have a horrible idea can i just nest events calling each other until it works
oh wow that was the solution, i thought it just automatically aligns every child inside it vertically
thanks
:d
wat r u doin
ts
the current problem is that you are already nesting events
I'm assuming that I can make a post in the modding forum for this, even though its currently just in the concepting phase?
Columns only expand to fit the required height, and Rows only expand to fit the required width. If you don't have at least one of each for the top-level nodes, it'll have either 0 width or 0 height and display in unpredictable ways
but it wasn't
wut
is draw_card itself an event
but just putting 2 in another event add worked i think
or like
oh probably
does it use events
that actually makes sense
ah icic, that makes sense
but this is more fun
So, how exactly am I supposed to structure consumeable types, consumeables, and boosters? I've been reading the documentation and still can't figure out how to make them work, they appear blank in the collection, and the game dies any time they appear in the shop
is it though
did you try calling it outside of an event
it does call an event tho yeah
and you can pass in delay and such
buuut again this works and it will fall apart if i poke it i think
works asterisk
so just remove event 1 and call draw_card and delay directly
how do i reduce the gap between those
ok or, i could just not do that and have six events instead with like four of them nested
That's the padding on each of the UIT.Rs. Since they each have padding = 0.1, there'll be a 0.2 unit gap
bepis are you making balatro rpg
kuro you dont know what my mod is capable of
.....i cant tell if theres any difference
maybe i should try setting padding to 0 or something
negative padding?
negativew padding
or wrong padding
true
this kinda look like edwin who made the mimic
oh it definitely changes alright
perfect
Im trying to make a consumable card similar to The Empress am i doing something wrong?
makes two cards Candisimo
your level also saves throughout the entire profile too, giving you even more reasons to spend weeks on balatro ❤️
yes, enhancement conversions are a built in thing for tarots
one sec lemme find mine
set effect = "Enhance",
config = { mod_conv = 'KEY', max_highlighted = # },
there we go
where KEY is your enhancement's key and # is how many you wanna convert
can u send me ur code it prob isnt like mine so i can see
then you can pass in the info_queue if you know how to do that to show the popup
m
yeag i'll dm
thank you 🙂
Gonna bump mine, I don't even have working consumeables period
beautiful i hope your mod drains my life force
bepis stop making jrpg
fuck sake
What would be a good basis for Custom Joker Sprites?
Just the basic joker?
Is this even the right place to ask about stuff like that?
i sure hope so too
#💻・modding-dev is for everything related to balatro mod development, including both art and coding
personally i recommend #⚙・modding-general for balance/art questions and this channel for dev specific questions but i don't think it matters or anyone else really cares
jokerdisplay?
yeah
what that i might be dumb
ahh
yeah i've seen it before i just forgor
you should get jokerdisplay and joyousspring
Guess I'll wait a few hours to bump my post again so people acknowledge it
I think you should play joyousspring
i usually dont look at other mods unless it's something i know i won't wanna add, i don't wanna ruin any part of the creative experience for myself especially given i've made multiple joker concepts that i found out afterwards other people have already made
unlocked and discovered go outside of config.
:3 how do i update dynatext
Misread the documentation because they were on the same line, which is pretty confusing
i thought it would just update itself if i do this, but i guess not
do i use :recalculate() or something?
Is it separate from how jokers do it? They put it in config
I only play my mod and mods with whom I have mini clubs in my mod or future ones)
Not an answer to your question, sorry, but I recommend updating Lovely to 0.7.1
No? All objects put unlocked and discovered outside config?
Okay so my jokers just didn't freak out when I put those into their configs, huh
...the fact that i have to make the skill trees too after this scares me
im already terribly failing to make the xp bar 😭
Strings are value types, so if you pass it somewhere else, then change the original value, the new one won't change.
In order for a DynaText object to see the change, it has to be passed as a reference type, where it's inside a table.
my_updating_string_table = { time = "10:00:00pm" }
dynaText = DynaText({
string = { {
ref_table = my_updating_string_table,
ref_value = 'time'
} },
colours = colours,
scale = text_size,
--etc...
It still kills the game when it tries to load into a shop
The difference between reference types and value types is really important to keep in mind whenever you're passing values around that might be changed later
I'm gonna have to get into dynatext for my buff cards oh boy
question, why is it string = {{...}} and not string = {...}?
nil, boolean, number and string are value types,
table, function, userdata and thread are reference types
There's no good reason, that's just how Thunk designed DynaText to take in string tables
Oh, actually, it might have been to allow multi-line DynaText objects at some point, but it was never implemented
hUh i left for like five mins and skill trees were mentioned
how to destroy every card in the deck
Every playing card or every card that is currently located in the deck?
loop over every card in the deck and call :remove()
playing cards
for k, v in pairs(G.playing_cards) do
v:start_dissolve()
end
Is this during scoring?
this destroys 1?
idk lua code at all
i know what end does
You should probably learn that before everything else
Do you want it during scoring?
its a spectral
Learn how lua works, learn how Balatro works
Then put that in the use function.
no :)
ok ty
not required just a heavy recommendation (i turned out fine)
results may vary
We're not here to teach you every single step in the process from sitting in front of a keyboard to having a functional mod, we're here for the latter half
but tbf i also have a lot of experience modding games i don't know the language for at all
i know
im just confused with deleting cards
and now i know
At least learn the basics of lua, end is one of the most abundant snippets in the entire language, if you don't know what that means, it's going to be excruciatingly painful to try and teach you modding
Hmm. What's in your colours array?
no i don't think so? maybe?? i know mine fucked up once when i didn't have it in one but in most places it only works not in a table
That looks right
should i post the entire crash log here
things work randomly depending on how jimbo is feeling today
where is hsr_level_bar_update ?
unless you changed the underlined bit to that
or i might be dumb
......yeah im dumb, that was from an attempt where i tried using :recalculate(), completely forgot about that 😭
wha
accurate
does this not help with updating the table which DynaText is checking?
or am i misunderstanding how ref_table works
That should do the trick, though you should do hsr_to_refer_level_bar.text = "blah" instead
🤔
its refusing to update
recreating the bar does make the text change - so im sure its just that it doesnt update, for some reason
I'm just checking to see which UI Elements get update calls and why yours would be missing out
:3 maybe im ip banned from using DynaText
How do I stop a Blueprint playing card from copying other blueprints when it copies them copying the other cards?
Or how do I exclude something from SMODS.score_card?
I rescore the card from the blueprint.
Does it update if you just eval G.hsr_xp_bar:update(0)?
How could I go about making a card able to appear multiple times in a booster pack?
Also, does it work if you set major = G within the UIBox's config?
looking at for index, _card in ipairs(context.scoring_hand) do, here index is a generic incrementing variable and _card is some object inside of scoring_hand?
Yes.
🫡
froge
!
Im trying to have a consumable card multiply money in ur inventory by the amount of jokers in a set im making. How would i make the local loop to make sure it checks if you have those jokers for calculation and also the calculate
how do i add vsrg to balatro
sorry, i went to take a quick nap since i have school later
i tried eval G.hsr_xp_bar:update(0), and it showed this
This is legitimately such a cool mechanic what the hell
-# aka nothing changed
i also tried changing the major to G like you asked - didnt work either
That kind of worked but now this is happening:
that honestly looks really satisfying
This is super cool wtf?? Does it work when continuing a run from a restarted game?
Another thing you might try: define the DynaText object outside of the event with local xp_bar_text = DynaText({ etc... , and on the UIT.O, set object = xp_bar_text
Could also just tear the whole thing out of the Event, unless it's absolutely necessary
ic, i will try that when im back home, thanks :p
Yes and OH BOY WAS THAT A PAIN
Wow bravo to that. SOUNDS like a pain
I sure learned a lot about how balatro saves things
I bet lmfao
Super cool. Also ridiculously powerful for an uncommon, but based on the mod name I'm guessing that's the point
Tbh I've been meaning to upgrade the rarity I've just been forgetting
The mod name actually has to do with the eventual pow mechanic I plan to add
Which I came up with before I learned that talisman has builtin ^chips but oh well
How difficult would it be to instead of redeeming vouchers they went to a special card area and you could blueprint the ones that have calculate?
Vouchers already do go to a cardarea, it's just in the run stats page. But maybe you could reference that somehow
ok it worked. but now I have to think how to add certain suits to my own custom deck.
trying to get my head around the line for _, card_key in ipairs({unpack(card_keys, 2)}) do
im looking at the documentation for the unpack function but. what does it mean for one of the parameters to be a table and the other a variable
how do i have it index these jokers and muliply money? it crashes game rn
!!:D
how do i make this into the cards ability
👍
What do you mean?
when the card is used it does this
do i need anything before it
or after it
No, if you use it then it will destroy every card.
No, you put it in the use function.
How would I dynamically change the sprite of a card based on a config extra variable?
It'll be in the same atlas, so I'll basically just be modifying the pos
ok
I'm trying to figure out how config files work, and I've come across a weird issue where there seem to be config entries (read through SMODS.current_mod.config that I've previously removed, and yet they still exist and I can't figure out how to remove them?
Setting the values to nil then saving should do the trick. Otherwise deleting the .jkr file will work too
SMODS.current_mod.config.setting_2 = nil
I tried something like this, and it seemed to work temporarily, but after a restart came back
Where would the .jkr file be located?
I want to create a new enhancement which has both the property of the stone card and the wild card
it has no rank or suit, always scores, but can count as any suit when creating poker hands
is this possible?
In your save location.
%AppData%/Balatro/config
So no suit and any suit?
Ah, thanks!
yeah that means it'll be no suit when it's debuffed by any boss I guess
What is the goal?
Are you destroying cards during scoring?
nada
no destruction here, i know how to destroy safely
I don't know then, that's the only instance I've had where phantom cards exist
Most of the time it's because a dissolve or shatter effect was used on them
drawing everything that isn't diamonds
So after the played hand has scored draw all the non-diamonds?
well not all, but yeah
bump
I think you’d need to hook is_suit to only calculate all suits during Flush calculation
i also have no clue where it's getting these ghost cards from because this is accurate. 36 - 12 = 24
maybe i'm drawing incorrectly ???
how do i make my card not need anything to be used 😭
thats. a very vague question
can_use = function(self, card)
return true
end
Huh how’d you do that
tysm for helping me
I had wanted to have a similar display of multiple cards but I had given up on it
Out of curiosity, try running start_materialize on each card as you draw them
one of my cards are now angry
hold on this card is attached to the angry card
oh god not the green stink particles of doom
??
this is the worst debugging session ever
What are you doing
drawing non-diamonds
hello alrexx
Drawing cards and destroying cards need to be done at specific moments and carefully otherwise you get duplicate references
oh ...
hola
I have some card draw Jokers if you want to reference them
oh so drawing cards also creates ghosts
do you like loud incorrect buzzer
How are you
There’s no context I think
fff uh ck,
You just need to do it properly
i tabbed out to chat and now the game is dying
Or patch into it
Tab out again to kill it
yeah sure
Try looking for Royal Family and Tour Guide https://discord.com/channels/1116389027176787968/1343670935122870342
In the GitHub
why doesnt this spawn in my joker pool?
Sex joker
How does one make a custom card area?
key = 'j_'..chosen_key
I've got the same question
tralalero tralala
check joyousspring :3
this feels incorrect
how would I tell a deck to spawn with aces of hearts
you know what
nvm
i have an idea :)
I've heard of joyousspring but don't know where to actually find it
Where though?
I hadn’t recognized Bepis
Can you point me to a specific term to search so I don't have to go diving into your code blind?
i still don't exactly understand
What exactly
whose code
Joyousspring
you're using seperate functions so i have no clue where the correct order of operations begins and ends or when to draw the cards
Idk it’s not mine I just linked you to the mod
Which ones are you talking about
I don’t know off the top of my head, I just know what I did
Again the ghost cards exist presumably because of lost references
So it tries to draw a card that doesn’t exist or it draws the same card twice
mine's drawing the same card twice
I think I just draw cards after cards are drawn
i want to completely replace the cards being drawn with non-diamonds, basically
I had a similar effect but I manipulated the shuffle
oh interesting
basically i've just been hacking at this praying i don't need to patch anything lmao
If you want to draw extra cards you don’t need to patch
But replacing draws I think needs some patching
: pain:
@manic rune Can you be like, bad at coding, so I can ready your code better? [=
Are you talking about Joyous Spring
Wait this is N's code
I'm dumb
Sorry for ping
I'm also bad at reading
And everything else
If you want you can also check my mod
I add a CardArea
It’s all in a lovely patch
Oh god I haven't even touched lovely patches
Oh by the way which branch of my repo did you look at
The main branch is super outdated
I did that but when I put stuff in it, the count goes up but it shows nothing.
Did you emplace what you put into it?
I used SMODS.add_card
Did you specify the CardArea
Yes.
Hmmm I don’t remember needing to manually put it in the draw pipeline but maybe you do
Or maybe you patched a different place
Where are you supposed to patch?
what do I input here to have aces of hearts
Is there a context for drawing a playing card? I know hand_drawn exists but that only has a boolean function and the current joker I'm trying to make wants a context for every card that gets drawn and added to your hand
Can i grab your code somewhere? I'm a little puzzled by that, might have a fiddle after dinner
Now it's not showing at all.
I’m not sure what you want
I don’t know what you’re doing
SMODS.Back{
name = "Deck of Aces",
key = "deck_DOA",
pos = {x = 1, y = 3},
config = {only_one_rank = 'Ace', default_suit = 'Heart'}, -- Add default_suit
loc_txt = {
name ="Deck of Aces",
text={
"Start with a Deck",
"full of {C:attention}Aces{}",
},
},
apply = function(self)
G.E_MANAGER:add_event(Event({
func = function()
for _, card in ipairs(G.playing_cards) do
assert(SMODS.change_base(card, self.config.default_suit, self.config.only_one_rank)) -- Pass default_suit
end
return true
end
}))
end
}
something here is broken and i dont know what
to try and put it in more concise(?) words, I was wondering if there was a context for each individual card that gets drawn and then added to your hand
So that way for example, if an Ace gets drawn from the deck, you can then do calculations there before it goes into any hand playing/scoring/etc. but ignore any other cards
Is the card area for the vouchers in run info G.vouchers?
There is a context for the built-in draws
ahh, that's what I needed then. I'll have to try and find it since I don't exactly know what the variable is named, but thank you for the pointer
what does vic_drawing do
I don’t remember off the top of my head
my existing code was almost exactly identical to yours except for vic_drawing
If so how can I make them rearrangeable and permanent?
Check Royal Straight Joker in the dev branch
It’s a bit outdated but it should work
Oh wait you want to replace draws
Where did you see that again
tour guide
help
Rise.
Thunk said it’s my turn to bump an old issue of mine
electric bumpaloo
still havent figured out unpack
what function is run when you a run ends?
Like when you win or lose
lose
Idk
dang
Also it’s hard to recognize Bepis with the new pfp
Game:update_game_over()?
Group pfp?
SMODS.Back{
name = "Deck of Aces",
key = "deck_DOA",
pos = {x = 1, y = 3},
config = {only_one_rank = 'Ace', default_suit = 'Heart'}, -- Add default_suit
loc_txt = {
name ="Deck of Aces",
text={
"Start with a Deck",
"full of {C:attention}Aces{}",
},
},
apply = function(self)
G.E_MANAGER:add_event(Event({
func = function()
for _, card in ipairs(G.playing_cards) do
assert(SMODS.change_base(card, self.config.default_suit, self.config.only_one_rank)) -- Pass default_suit
end
return true
end
}))
end
}
something here is broken and i dont know what
can someone help
Try changing it to Hearts
Rise.
most of the questions you ask are always outside my knowledge range, smt 🥀
Ah, i think it's because you're still doing
hsr_to_refer_level_bar = {text = "LV 1 | XP: "..(G.GAME.hsr_current_xp or 0).."/100"}
That's replacing the table with a new table, while the DynaText object will keep a reference to the old table which doesn't change.
Try doing
if hsr_to_refer_level_bar then
hsr_to_refer_level_bar.text = "LV 1 | XP: "..(G.GAME.hsr_current_xp or 0).."/100"
end
``` [instead](<[#💻・modding-dev message](/guild/1116389027176787968/channel/1233186615086813277/)>)
Though i haven't tested it locally yet, still eating
How would I get cards in a new cardarea to calculate as if they're in consumeables or jokers?
I only knew how to patch the cardarea in at all because of your code
it works now :D
Patch here I think:
No worries, good to get it worked out. Reference types can be unintuitive and cause a lot of puzzles. This is why languages that require manual memory management and pointer handling make for good first languages in my opinion
I am an idiot, how would I go about doing that?
Do you have a lovely.toml?
now i have to do the skill tree ui
and oh boy, this shit is DEFINITELY gonna take a toll on my mental health
🪫
I do, but I also made my own patch file for the cardarea
My code also patches it there
What would I put as the pattern?
The target
Literally "-- TARGET: add your own CardAreas for joker evaluation"?
[[patches]]
[patches.pattern]
target = '=[SMODS _ "src/utils.lua"]'
pattern = '-- TARGET: add your own CardAreas for joker evaluation'
position = "after"
payload = '''
table.insert(t, 2, G.cardarea)
'''
match_indent = true
``` I think.
Okay, so literally that comment line
I thought there was a specific snippet or something
You can also insert at a specific position in the table
Otherwise it’s going to be at the end
That’s the specific snippet
What does the position in the table accomplish?
Order effects apply
me on my way to steal take reference from joyousspring's code once again :3
Ah
-# i need to put a huge text in the middle of the screen advertising JoyousSpring at this point
Is it possible to insert it before a specific cardarea or is it only an index?
Group pfp of people advertising gorgeousping
so true
Rise.
You need to find the index of the CardArea then insert it
Like I do
I meant permanent like if you rearranged them they would stay like that.
I imagine the one in run info copies from the real Voucher CardArea
Idk
I’ve never looked into it
This causes the game to crash on startup
It does, but how would I make it so you can rearrange them?
Find out how to copy the position back to the other table
bump 3 the bumpening
can i please get a hand on this 
Check like the last paragraph of https://www.lua.org/pil/5.1.html
Had to update lovely
joyousspring mentioned
Your code is too organized it makes it hard for me to read it ;~;
😦
I'm just horrible at coding
so unpack(a,b) where a is a table and b is an integer will extract all the entries in the table indexed from b til the end of the table?
What's the prefix for playing cards
As in j for jokers
Wait why am I even asking that
Nvm
all the prefixes are in the smods wiki btw
I thought about this once, it's really cool that you did it
Why does this not set G.runinfovouchers to anything?
I patched that in for reference.
Can you spawn a card with a specific enhancement with create_playing_card()?
Is there a way to lower the blind requirement
Modify G.GAME.blind.chips I think.
Gotcha, Thanks!
Is there a way to trigger individual cards in the player's deck? It says that you can on the Calculate Functions page, but using G.deck doesn't actually work
You have to enable it as an optional feature.
im lost, isnt this how you get the size of the played hand?
context.full_hand doesn't always exist.
Move the context checks before checking the full hand.
the card doesnt seem to do anything now. did i place the contexts in wrong order?
context.final_scoring_step and context.cardarea == G.play don't happen at the same time.
Neither does destroy_card
Neither does other_card
Is there a reason you are doing this at final_scoring_step?
to not destroy the card before the scoring starts
context.destroy_card happens after the cards score?
didnt know that.. let me reorder
How would one make a blueprint for vouchers?
elaborate?
Some vouchers use calculate right?
i think you just make it copy the next voucher
see the last voucher used and have it copy what that one did
(the voucher menu in run info doesnt do anything its just for show)
how can i make this affect a single random booster pack instead of all of them
i finally understand
the goofy ahh gold card enhancement incremeting joker
that ive been scratching my head about for days now, it finaly works.
How'd you fix it?
and all it took, was a hook and a single "if not var_stupidvarforstupididiotslikeme then var.stupidvarforstupididiotslikeme = 0"
it was so simple.
i was mad when i realized it worked
every person that helped me was right. i just didnt get it until now
that hook document really helped tho, i had no idea what to do lol
programming in a nutshell
im so mad
i could eat a table
i was supposed to take a day off from code, only to not do that because i just had to get this joker working.
on the bright side however, i now have a much better understanding of lua and general balatro modding
thanks to looking through thousands of lines of code
where is the code that creates an UI and also slow down the game in background like this?
idk
found the function thats run when you press Options, i can probably work with this
There are a bunch of functions that trigger menu opening and pause the game. If you search for G.SETTINGS.paused = true you'll find them.
Most of them are in functions/button_callbacks.lua, along with a few in functions/state_events.lua
The menu creation is G.FUNCS.overlay_menu{ definition = <def> }
i seeeeeee, tks
u know what mod uses G.FUNCS.overlay_menu
dont tell me
Is there a context for when a hand isn’t drawn due to insufficient cards or space
cryptid
cryptid is not real
truth and real
you’re real to me nro
breeze doesnt understand the joke u.u
you s
Story of my goddamn life
I'm just staying silent through all the roffleposting
does checking if #context.hand_drawn == 0 work?
WHY DID HEARTACHE JUST START PLAYING
no because it doesn't call it if the draw is 0
damn
why are the only songs autoplaying all boss songs
🤔
i feel as though ive angered the roffle gods
yeah i think i got it working, nice
What is it
wait
is there an UI function that creates a scrollable box?
I don’t think so
and now its ultrasonic faith ive definitely upset some higher being
Skill Tree button + opens a menu
carto does something like that
oh, actually?
thats a slider
not exactly what im looking for, since even if i got it working with mmb, i still have to worry about somehow making the children nodes move too
...or i can just go with the lazy approach and add a "<" ">" button honestly 😭
does smoded have a function thats called when the round is loaded up?
context.new_round iirc
i mean when the game loads up from pressing "continue run"
unless new_round does that unlike the name implying its true when the round changes
damn
just hook into the new game code
yea
Wdym, when the new shop start or when you select the blind?
unless your doing it for an unlock then there is something for that
read ahead
like, pressing the continue run button from the main menu
^^^^
just set a variable as soon as the round loads. since reloading the run resets some values i made, i just need to set them back as the round starts
G.GAME
set the values in there
they get saved that way
so like G.GAME.number = 1 will always be saved
i did that, this is really hard to explain lol
what are you saving then
i modified the gold card payout, the value saves and changes and updates correctly unless i reload the run, then the value resets back to 3 until any other function is triggered that modifies it again.
after i retrigger the joker or i end the round it fixes and goes to the saved value
so it does get saved?
this is how i fix it when the round ends
yea
weird
area all gold cards using the same global value?
yep
the cards themselves retain the value regardless of the global value, so those dont need to be fixed or anything since they save and load on their own
its just the global value i wanna set as soon as the run loads up
my global value saves, but the game's changed one doesnt, it resets.
mannnn
i dont wanna do that lol. i might have to as a last resort
if there is a function thats called before the player has a chance to interact with their saved run that would be perfect, but i prob have to hook the one the game uses to load the run
this way might be more efficient for the other jokers i have in mind tho, since they work similarly i can use the exact same function and just add to it in a table
with ownership id have to make one for each modification and i really dont wanna
you are prob right, but im gonna throw my head against a brick wall one or two more times just to make sure
you wouldnt if they are all gold card modifications
throw yourself into a bunch of blender boxes
oh wait i see the issue
@proud moon
instead of setting the centers have the joker set the individual cards configs
or just have the joker give additional money when a gold card pays
works, thank you 
the joker's effect is permanent, even after selling it, and the card's config loads itself as intended
its the tarot that doesnt
i mean for steal and for stone and for mult, etc
lol the pfp btw
a joker i've written is hard crashing to desktop when i navigate to its page in collections 
What the hell
How many roffle blights are there?
You’re free!!!!!
nope, out of one issue and straight into another 

join the Roffle team for free $🥚
What is happening here today?
Everyone got hacked?
why and how would this be causing hard CTD
I mean i do really like roffle
i found a fuck ass (in a good way) pic of roffle and its become a bit
bump
does roffle even know about this
probably not
i dont want to take up too much of the chat when someone has real questions
yea lets move to modded chat
config.extra being self referential maybe
how do i get all of the cards the player is holidng
G.hand
*blight
G.hand.cards, to be more precise actually
oh yea
Rise.
G.hand is just the card area G.hand.cards is where the cards be
..what? how. where? 
all it contains is tables, strings, numbers and centers
what centers?
what would i need to do if i want to: press the buttons, recreate the entire ui?
does it contain its own center?
if so that would be self ref
no, never its own, only
G.P_CENTERS.e_polychrome & G.P_CENTERS.m_steel
so far
...wait, that sounds really familiar, isnt something like that on UI Guide
i dont have any solutions or ideas, but i wanna know, would it copy the most recently purchased voucher? or an adjacent voucher in the shop?
that table is for things that need to persist between saves, they're saved to disk (recursively). so generally that's only mutable stuff. are you sure that this all has to persist between saves
oh i hope i didnt ping that
you did
cant find whats wrong 💔
i forgot to turn it off since i didnt have any advice or anything
...hm. you're right
i was going about it wrong
Oh cg, I have a fix for TMJ to work with a new smods feature, do you want me to PR it or just pass it to you in DMs?
I have a UI that lets you choose.
card.ability.mult
...whats this
oh thats cool
instead of card.ability.extra.mult
as for why it doest want to set extra i have no clue
im roffling it
didnt even realize there was an ability.mult there, i removed it, but it still seems to show the same error
sounds interesting, pr
what feature?
which line is it?
if lucky < G.GAME.probabilities.normal / card.ability.extra.odds then
most likely this
??? most likely?
its line 254
ok so it is that
im still brand new to this go easy on me 🙏
dont quote me on this but i dont think you need a pseudoseed for pseudorandom
atleast you dont come to use everytime you approach the programmer equivilent of a bumby sidewalk
also this still isnt the issue im jsut micromanaging your code 🫶
have it print out card.ability if you could
and remove the crashing code
to elaborate on that if you use a string instead of a pseudoseed it just calls pseudoseed on that string and uses that
oh neat
so it's essentially the same
i did not know thats how it worked
started a new run and it doesnt crash anymore
however
the code doesnt work 💔
aka the joker does nothing now
what printed
just the entire abilities without anything wrong
is there an extra.odds?
lemme see the print code
the code doesnt seem to trigger right now
hiya! i can't find the bug in my code — the 1X and 2X are named correctly, what could have / did go wrong? :>
and what about the calculate
why can't you just write G.GAME.probabilities.normal?
incase that doesnt exist
make sure 1x and 2x are lowercase
can i see your full file path
hey roffles, is it bad practice to use love functions?
this is meant so i can separate each joker/card into its own file
i dont think so?
when does it not exist..?
C:\Users\[USERNAME]\AppData\Roaming\Balatro\Mods\Sea of Stars Cards\assets\1x
hmmmmmm
ive seen multiple other mods do it, so its prob not bad
maybe try removing the spaces???????
okay
not at all
thatd be my only guess
is smtcom staring at this chat from the shadow 😭
lovely
Native multi box description support
yep
how do you mod in like... suit texture pack changes like the friends of jimbo stuff
@hardy viper
ah i see
thank
beats me! ¯_(ツ)_/¯
hanyway ya
should i release my mod
oh a small version :D awesome
yes
now we can post him without it getting in the way
if it's supposed to be small it's not on mobile
further, it should be made into an emoji
🤔
pixelated roffle
hmmmm
why do you have so many??
thats an awesome screenshot
the plague
guys what do you think this nerdy joker does
prolly something dumb
👋
like +2 or +4 mult
a complicated as fuck equation, only to end up giving +4 Mult
(iykyk)
eh
morefluff already has something like that
gets pushed into the fucking lockers when I see him in the hallway
yeah but that thing scales
ayy we both thought of the same thing
add a ☝️
that sounds like aiko's tl;dr joker
did you know i combined the colors of odd todd and even steven into the nerdy joker
I’ll get to it later this evening
it is because the mult output of this nerdy joker can be odd or even
It should be like “actually…” and be a very specific but worse version of a joker like To do List
daft idea
i wanted to add multibox support for my 300 descriptions with some regex but sadly thunk decided to make text formatting use {}
Has anyone ever had roffle play their mod here?
roffle played morefluff
this is true
man where the hell do you keep spawning from
do you get like pinged when someone mentions notmario or morefluff
they are always here
For every three rounds someone mentions morefluff, an additional notmario spawns
okay ya nevermind it. still doesn't work -w-
tried putting empty space where Spades and Hearts would be
someone should get roffle to play too many decks, the balatro mod that adds too many decks
spot the mistake
your american
ding ding
someone get drspecter to play joyousspring
Someone please tell me if this is racist
I need mbt to play it
bro its about how color is spelled
same
Is MBT good? I have not heard of them. I like roffle but fall asleep watching his stuff at night quite a bit
i love MBT i was his patreon for many years
an eye for an eye
make it round up the end of round score by 2 digits lower than the current blind
ex: blind is 7500, score is 7413, rounds to 7420. blind is 100,000 , score is 532, rounds to 1000. or round up 1 digit below, so the minimum score is a 10% of the blind. either is cool, it would be nice to see those even rounded numbers while scoring
my reply unreplied for some reason
i won a field center in one of his tournaments
❌
it gives mult
darn
the mult can vary
Mbt is a Yu-Gi-Oh and sometimes politics/chatter/Isaac youtuber. I don't think he's played much Balatro. I do think he has streamed it but I might've just attributed another stream to him
well i like my idea, im gonna make a joker for it
hi ice
AU where MBT is Michelangelo and N’ is the pope commissioning the Sistine Chapel
Hello dilly how are you
i know he streamed it because it's one of the first results when i egosearch "balatro yugioh"
As far as Balatro content I only really follow Murphy and Roffle, and I guess Rarran. And some random yt accounts that have played Kino or JoyousSpring
hi vic!
im okay, im finally resuming development today
i hope you are doing well
ive had a very stressful last couple of weeks and it hasnt really resolved yet, but i cant fix that so im doin my best 😎
Yo
okay i'm getting somewhere. i swapped in a massive image to see if it was reading it from the wrong place, and
i should get back to editing my videos i have a backlog of.
what about drspect?
I’ve had an anxious couple of weeks
N' vs Sea of Stars
im miles not phoenix
I’ll probably keep having them too
exactly
objection your honor
Don't care much for his content, honestly, but I haven't watched more than like two vids
Glad to hear you’re doing well and to see you back
im sorry, i hope things improve for you soon cause youre awesome and epic
I mean
Not well but better
Maybe not better either idk I can’t form proper sentences
im just glad to see my favorite people are still chattin 😎
like u, bepis, ice, i see n over there
i will be here until i find a new fixation
Kino still isn't finished so I'm around until I find a new hyperfixation
ah. iiiiii seeeee what's happening hereeeeeee
ok moana
yayyy you got the refereeeence! :>
needs to have the full image?
only because I was on a Disney cruise last month
Not gonna do stuff for Kino except some fixes the coming days though. Bit tired of staring at VSC code for hours.
so what have i missed with all this roffle
mhm, it expects 2-10 to be there for some reason
it can't do partial sheets
Idk
i found a fuck ass pic of roffle and now we shitpost
i had to take a break so i feel it
i was heavy losing drive for balala
but after playing some minecraft with the gf and playing some amnesia the bunker im feeling ready to come back
I spend half a day away from Discord and all is Roffle
wee roffle
fuckin insane lmao
does it then take the textures for those as well or only the face cards still?
if you know
i'm bad at breaks except if they're downs, haha
this is the best one
so, i specified what it should take from the sheet, but it took from where they would've been, had the sheet included them
we've taken this fuck ass pic of roffle to hell and back at this point
ahhh i see so it just needs to have them in the right place in a file the right size, makes sense ig?
one of us
i mean you'd imagine it functions the same way as joker atlases which for the most part can be any size
So I want this to trigger when a hand doesn't beat a Blind, but it is doing so anyways
aha :D the template code uses "deck" instead of "ranks"
@red flower I Normal Summon Roffle in Defense Position and end my turn.
judge my opponent is cheating
my joker no longer crashes the game for now, but it doesn't rank up the card, what do I do?
You seem to have forgotten I have a Light of Intervention face-up on the field
ill get to work on that
awesome :D
latest smods has a function called SMODS.modify_rank that allows you to really easily rank up a card
trigger in what way
what should its effect be?
At the time that code runs, the score hasn’t been computed yet
the Joker is supposed to rank up the lowest ranked card that is scored when you score a hand btw
@ancient plinth assert(SMODS.modify_rank(G.hand.highlighted[i], 1))
the number determines if the rank increases or decreases
fun. I can't believe the "triggers after scoring is done" context does not in fact trigger after scoring is done
thanks, also, where do I put it?
That’s because nothing in Balatro works like that
Because Balatro has animations
i'd just replace all your code you put in that event with it
The code runs first, then animations play later
So chips etc. only change during animation
everything seems to work except the highlighted part, why doesnt the card destroy?
destroy_card doesnt happen in other_card
you need to do it in context.destroy_card
you should also use a more specific context for the first part
gotta reorder the contexts then
there are 11 errors now
where in the smoded docs would i find the SMODS.current_mod.reset_game_globals(run_start) documentation? other than the example jokers
mod functions i think
you left lines 127-128
So delete them entirely?
thank you
is context.individual pretty much the same as context.other_card?
yeah since you're not gonna be using that anymore
context.other_card is a parameter is a couple of contexts including context.individual
so yes but no
impressive
anyway i came in here cause i need some help too
in the past i made a challenge that automatically fills out the banned cards list with every joker that isnt from cardsauce, and im now trying to make a challenge that bans every consumable that isnt a certain type. code seems to work but for some reason it doesnt follow the rules in game and im not sure why
Pluto is explicitly included in the list
You can't ban default objects.
Sounds like a default item issue
really?
the wiki said nothing about this thats weird
"This can be used to ban jokers, consumables, vouchers and booster packs."
someone should update that
You can ban them
They’ll just still appear in the situation when it’s pulling the default
oh
This good?