#💻・modding-dev
1 messages · Page 199 of 1
I think I looked at that and just didn't read it >.>
Wait also I just realized I forgot to add 'context' before the other two consumeable.ability.set
Also you probably want your value to be saved when you go back to the main menu and continue
True
Is there a good sample of this somewhere because without any context I don't really understand how to use it
This is an example from paperback
That sets a value that resets each round, if you wanted each run then do if run_start then before
I'm not sure what the problem is now
I'm not sure what the way to dynamically update the blind's description is, but this isn't it...
if G.P_BLINDS[self.current_blind] then
return {vars = {G.P_BLINDS[self.current_blind].name}}
end
end,```
Not every context has consumeablepassed to it, iirc it's only in context.using_consumeable
what's self.current_blind
self.current_blind = self.eligible_blinds[math.floor(pseudorandom('blinds')*#self.eligible_blinds) + 1]
print(G.P_BLINDS[self.current_blind].name)
return
end,```
wait I might need to do G.GAME.blind
Also you want to localize that name
oh hold on which bit
localize { set = 'Blind', key = self.current_blind, type = 'name_text' }
the hook
this is for language options right?
Yeah that will give you the localized name of the blind
assuming self.current_blind is a valid blind key
I'm going to worry about getting the functionality first and then go back and fill those details in
what happens if you put the print in loc_vars
also you should probably return a default value anyway
it does not print
maybe self.current_blind doesn't persist
so the hook basically stores the difference between the mult before and after the flint hits it. the joker uses that difference as a factor to multiply it by ten and add it to the chip count
never made a blind tho
self.current_blind would be putting it in the center tho
maybe this is something I can utilize?
from what I see searching through the server, you need to store your blind variables in G.GAME
instead of the center
hmm all right
I see that there's a context for selling_card, is there one for selling Jokers specifically?
that one
Doesn't selling_card include Consumables?
I need to figure out what hand is being discarded and what the most played hand is, but other than that my card is working. Considering I haven't written LUA is at least 15 years I consider this a major accomplishment 😄
yes, I think so. you need to check context.card if you want an effect that only applies when selling jokers
Look at how obelisk gets the least played hand
I'd played with G.GAME.hands[context.scoring_name].played earlier
As for what hand is being discarded, pass the list of discarded cards to G.FUNCS.get_poker_hand_info
that will give you how many times the scoring hand was played
not the most played hand of all
aka just loop throug G.GAME.hands and sort them by played
not necessarily sort, but you get the point
yeah
I'm surprised there's so little about it on the server
i know there's a way to make any joker do the little jiggle animation accompanied by a message popup, such as after their calculation func and they return... true?, from an external source outside the joker code itself, but i'm not sure how. does anyone know that off the top of their head?
do i just set a message on it and call the joker's calculate func
SMODS.calculate_effect({
message = "whatever"
}, card)
card can be any card
Joker, consumable, playing card
thanks!
No worries
I don't suppose an option would be to just add a field to Blind:init() 🤔
if i want to read the current debuff state of any card, will card.debuff just return that without issue or is there something better i should do? not to set, just to see whether it's currently debuffed or not
I don't see the benefit other than complicating your work honestly
that's how it's done yeah
wouldn't you just want to use this
for @minor furnace
I’ll take a look at this when I’m back at my computer
@normal crest thanks for the extra info, instead of going to bed an hour ago I finished my Joker 😄
Glad to help your sleep schedule!
anyone know a quick way to remove the shadow from the "soul" layer of my joker
That'd probably involve editing the rendering code for souls. Not a very simple thing to do
Bump
I think I might have thought of a way to find the best scoring hand with my omnirank cards in polynomial time, instead of what I was doing and iterating through every permutation
Would still not be compatible with custom hand types though
another quick question, for some reason my lovely injection that i made to draw a shader on one of my jokers is not working
this similar method works just fine for consumable cards, so do i have to do something different for jokers?
does the patch not work or does the patch work but the code itself doesn't
regardless you should check self.config.center.key instead of the name
that doesn't seem to work either
Ortalab Demo 3.2. Contribute to Eremel/Ortalab development by creating an account on GitHub.
how would i check if the patch went in at all btw, i've never had to do that before
what's the new code
mods folder under lovely/dump
i just replaced self.ability.name with self.config.center.key
i've also tried self.ability.key
ah ok
hey everyone just wondering what version of lua should i use (sorry if this is a stupid question im a first time modder)
you don't need any specific version of lua as you would probably be testing inside the game
but if you need the version anyway I think balatro uses 5.1
ok great ty
this worked btw thank you 
That's actually exactly the joker I was looking at to potentially help me make sense of things but it did no good
yeah modifying card algorithms is a hot mess
also one more question any essential vscode extentions i should have other than lua itself ofc
been getting a syntax error for not having a } on line 113, but that can't be right, so there must be an organization issue elsewhere. can a joker not have both a calc_dollar_bonus AND a calculate ?
calc dollar bonus has an extra end
^ lines 111 and 112
oh that could be, lemme ditch 112's end then
that's all i use
whelp, that was it! booted up just fine. tysm!
great thanks
I might just ask Eremel next I see him in chat
does anyone know how to check if a card is the first card being scored
check hanging chad's code
how do i see the scource code
extract your balatro game
eremel where do i sleep tonight
The only problem he won't solve is documentation 
Eremel when you ask him for documentation of his many wonderful SMODS tools:
how do i get these little tooltips on the right side of the card description, looked through the docs but couldn't find any good examples, i also poked around in the game's code and similarly came up dry
What is the 'getting_sliced' context for?
tip: for Xmult colouring, type {X:mult,C:white}
info_queue[#info_queue + 1] = G.P_CENTERS.m_glass
end,```
It'll be the Info Queue, this should get you on the right track. Here's the info queue for having a glass pop up,
alright
i think the x is uppercase too
trying to make a joker that scores Xmult for all Unscoring played cards and i tbh, have no idea what i am doing lmao. I can get it to score at the end of a scoring hand mainly due to a tutorial 😭
you need to enable optional feature
lemme look through the docs to see that but idk what u mean lol
Sacrificial Dagger I believe
SMODS.optional_features.cardareas.unscored = true
if you purely want the number of unscoring cards, #context.full_hand - #context.scoring_hand
madness also uses it
that's not documented at all
Do i stick this in the calculate area or somewhere else?
I think it only uses it so it doesn't eat whatever card Dagger is going for
you put this at the beginning if your file
@halcyon osprey
Okay Thanks!
and you check context.cardarea == 'unscored'
No there's an actual unscoring card context now
Ill go try both
ik but that's my alternate solution in case Ocemu doesnt want to mess with optional features
fair nuff
info_queues
idk if this was already answered
I have like Barely any experience with Lui at all so im a big dunce here and soome of my joker ideas are probably impossible to do
yeah i got it answered but how would i insert Eternal's tooltip
like the sticker
unlike almost anything else in the game it isn't just s_eternal
lua's fairly easy to pick up if you've any experience in other coding languages
I have alot of experience with Python but i am a bit rusty rn
hey, ima wanting to get into moding for balatro, is there a place for documentation to help me get started
Okay, So
My card now scores Twice for every card
And destroyed them-
Unscored card i mean
thanks
What's the code you're working with?
info_queue[#info_queue+1] = {key = 'eternal', set = 'Other'}
i'll try that out
again i got started with a basic tutorial but i have no clue where the cards are getting destroyed from lol
nothing is impossible
when do you want this to be scored? before, during, or after cards themselves are scored?
Is having a card that allows me to play 6 cards instead of 5 possible, i feel like ill need alotta experience (or help colonthree)
don't forget to add context.individual if you want to give mult per each scoring card
this worked thank you!
cause right now you just have a cardarea without a timing
Dammit aiko beat me
it's been done at least 5 times
Hello hi I'm one of the people who did that
:3
there's mods out there that allow you to play the entire deck, so it's certainly possible to get 6
When the Hand Scores
if context.individual and context.cardarea == 'unscored' then
make it now
i have it the over way around lol
it's fine
Probs when you get closer to releasing
and isn't order specific
if context.end_of_round then
card.ability.extra.countdown = card.ability.extra.countdown - 1
card:juice_up()
end
end,```
def a dumb question- everytime i do this, it subtracts 17 from the value, which is probably due to the fact that the function is being reactived multiple times during the end_of_round context. does something need to be implemented to stop this from happening?
i started the mistigris thread 20 days ago and I'm still not close to releasing 💀
i'm sure it's super easy but even while copying the exact code of a previous joker i made that functions i got nothin' 😔
i mean functionally I think the mod is in a good place
it just doesn't have much art
It might be that you're not resetting card.ability.extra.cooldown anywhere so it just slowly grows over time
i've run into that issue too, i think adding context.cardarea == G.jokers could fix it. That's what i did
Hell yeah the card works, Visually its a bit off, but i dont care too much about that yet
W
oh word? mkay, let me give it a go
Okay something more complicated.. Im wanting to make a joker that scales with every diamond card that is played, and scores each diamond with said mult
That's not too bad
All my current jokers have nothing in the scoring area except for the one i just did Lol
ive just been drawin
they have basic descriptions and like rarity and price and such
By played cards, do you mean ALL played cards or just scored cards?
All Scored Diamond cards
gotcha
ah no, didn't work after adding it as the first line beneath function . if it's not hassle, could you drop your working function?
I feel like having lots of help with a feew jokers should give me a somewhat general understanding of some variables in play
Definitely
well the variable persists now using SMODS.current_mod.reset_game_globals(run_start) but it doesn't update the description
This is the first game ive even attempted to make a mod for so im definently out of my comfort zone
I was in the same boat as you so dw I feel ya
-- getting abilities at the end of three rounds
if context.end_of_round and context.cardarea == G.jokers and not card.debuff then
if card.ability.extra.rounds_left > 1 then
card.ability.extra.rounds_left = card.ability.extra.rounds_left - 1
else
card.ability.extra.rounds_left = 3
end
end
this is an "excerpt" of the code that i use
I wonder if it's even possible to change boss description text on the fly
yeah... there's a chance it isn't
Sometimes things like that are weirdly static and I couldn't tell you why
i mean chicot does get rid of it as part of its ability
so its not out of the realm of possibility
He makes it so it doesn't render in the first place I think
If that's the case then I'll need to find some other way to tell the player what blind effect is currently active lol
hovering over the joker always works
Also thinking about it, card text with changing variables don't actually change until you move your mouse off of it and back on. Since the text isn't being "hidden" or "refreshed," it stays static
hmmm that feels really clunky though
Where does the text actually get set in code?
I feel like there's gotta be a function somewhere that updates it
currently I'm trying to pass it to the description using loc_vars() but yeah I might need to call an update function or something
function Blind:set_text()?
in blind.lua
I'll give it a shot
maybe this is needs buffing again
mucho texto
aiko when they have to make new cards instead of buffing the same one
I'LL ADD THE CAT
LMAO
I definitely need to get this sorted out, because this is not the only blind I plan on implementing that has an effect that changes lol
THAT YOU DO NOT THE
side note, i'm getting an error when i try adding rental & perishable to the info queue, is there a reason this shouldn't work?
good news it totally worked
So, what would the variable for Suit be?

hey anyone know where the default joker png can be found
jokers.png
in 1x
card:is_suit(suit)?
That's not actually a context, but a function. Card:is_suit("suit") is what you're looking for
My inspiration for the blinds are the runes from The Binding of Isaac
where tf do i put the function 😭
i like the blank more anyways
if context.individual and context.cardarea == G.play then
if other card is suit then
do your thing
end
end
LMFAO
although now I have an interesting issue, because the name of modded blinds are not stored in G.P_BLINDS[G.GAME.blank_blind].name, because I wind up with this
art by me :3
its amazing
update on this, trying to use info_queue[#info_queue+1] = {key = 'perishable', set = 'Other'} or info_queue[#info_queue+1] = {key = 'rental', set = 'Other'} just crashes the game
dunno why
this might come back around to the whole "localization" thing I've been ignoring
where is the file that has all the joker abilities in the source code
it's that btw
Oh I know this one! Replace Joker with Blind
card.lua
thank you kindly
general tip @halcyon osprey
you should extract the game's source code for your reference
I'd use lovely dumps instead
if anyone could help me with this i would be able to go to sleep finally
I'm not sure what the issue is here. It gives me warnings when I remove the ends at the end
yeah but it could contain other mods n stuff so
use whatever you want
i use both
you need another end at the end
Got it
sure enough, localization
huge
i have done that and just got lost
im trying to mod balatro to add meme textures to all the sprites but im having problems figuring out how to actually replace all of the textures, ive figured out adding joker sprites by just copying the lua from another sprite replacement mod, by i have no clue how to replace every single spritesheet, im kinda more of a spriting guy so i dont understand any code 🤷♂️
just replace jokers.png fr
anyways this is wrong me thinks, it caused a crash lol
ctrl + f in card.lua will be your best friend. Basically if you have an idea that vanilla kinda does, you can use it as reference
replace Card with context.other_card
which card
the uppercase one
WTF JONKLER
Also this isnt gonna be adding mult to the joker its just going to score all diamonds with x1.25
also hamsterball enjoyer omg
omg yes
In that case replace Xmult_mod with Xmult
btw malverk is usually better for texture pack stuff
okay this time i didnt crash but scoring a diamond card, did nuthin lmao
Did you do this?
just did now so lets see
is there a way using debugplus to summon a blind?
Surely it is easier to just patch in a condition to match for this custom blind into every condition like this in blind.lua instead of hard-coding all of them in manually to my blind
yeah no function
yes, ive made a lot of jonkler cards by now aswell lol
Press 3 on the blind in collections during the blind select screen iirc
i love jonkler
wanting to be like first diamond is x1.15 second 1.3 and just keeps going without resetting kind of thing
thanks, ive also made some deck sprites
how do i do that?
just need help getting the deck sprites ingame, ive already got the jokers in
you can look at my mods for example
bwah
before the return, do card.ability.extra.Xmult = card.ability.extra.Xmult + 0.15. You should also probably change the initial Xmult to be 1
im curious if its the fact i capilised diamond or smth lol
also u don't really need prefix_config = { key = false }, i had that when i was replacing the original sprites
It's not that. I just realized you forgot the final 's' in 'Diamonds'
buh LOL
but you'll have to prefix atlas with your mod prefix
Suits always refer to plural form
how can i flip played cards back up when playing a hand?
flip it again
what context would be played hand contains no hearts
yeah but how do i do that?
loop through hand then check for each
bruh you're so fast 😭
card flip
Astra and Aiko be fighting on whos quicker
the stay_flipped function? how do i tell if it's being played or not?
sorry I'm not that fast
ty for the help btw!
I'll check
card.facing == "back" i guess
sorry I'm on phone i can't check a lot
well hell yeah got 2 workin
i love art
On another random note I see that on your profile 
and i love coding because it makes my art alive
see wha
porter face
also I'm not British
:3
e g g
Oh yeah with my general ideas for my jokers i was thinking with some sort of balances..
another one i have, is i want it to Lock the first played Poker hand for as long as you have the card, and score x5 mult
so like, you play a flush, you can ONLY play a flush until the joker is gone
fucked up in the crib listening to Port Robin
POTARO IS FUCKIN DEAD
For something like that I'd take a look at the code for The Eye boss
i should open up the balatro stuff shouldnt i lmao
It will help immensely
Take a look in the lovely folder in your mods folder. There should be code dumps there that show you what it looks like at runtime after modification
That's the easiest way to view if you don't wanna open up the exe for some reason lol
i have two localization file questions:
1: how do i call modded localization entries for tooltips via info_queue
2: how come info_queue[#info_queue+1] = {key = 'eternal', set = 'Other'} works but info_queue[#info_queue+1] = {key = 'rental', set = 'Other'} and info_queue[#info_queue+1] = {key = 'perishable', set = 'Other'} crash the game
To answer 1, it should be the exact same as normal
is that all there is for the eye, im gonna search deeper
that just doesn't work i have e_chak_ignited as an entry in the en_us localization file but calling info_queue[#info_queue + 1] = G.P_CENTERS.e_chak_ignited does nothing
oh i found more
check blind:debuff_hand
how can i get the list of played cards (using G)
it just returns ERROR
1st pic is the en_us file, 2nd is main.lua, 3rd is in-game ofc
Edition, not Editions
hehehehe
changed it to Edition and it crashed
i dont know where to stick this, i thiiink i have this right though?
i tried doing rarities with consumables because i wanted certain consumables to be rarer than others (because there are straight upgrades for my consumables) and i kept on getting my default consumable whenever i would get that type of consumable. Did something change about SMODS.ConsumableType that made it impossible to use rarities? If so, is there an alternative method?
Unfortunately I think this idea requires a bit more work than you might think
whuh oh
i'm just gonna sleep on this and hope it magically fixes itself
I believe you may have to make a patch for it
Forgor that this isn't how edition tooltips are handled, pass the whole edition center in.
that for me?
yes
i tried that and it returned nothing
oh god, how do i do this 😭
info_queue[#info_queue + 1] = G.P_CENTERS.e_chak_ignited just don't work
no error or anything
bump
That's a bit more advanced as it involves using Lovely to modify vanilla code. I'd stick with some simpler jokers for the time being. Your idea is definitely possible, just might need a bit more experience to execute it
Does your edition even exist?
yeah
This is supposed to work (since this is how vanilla functions)
so ill hold off doing this one then for now
I'd recommend that
wait let me reorganize some things around
writing a patch is easy. knowing what to patch is hard
^
If i can get the help then sure LOL
i feel like alot of ideas i got are way too out there for my small brain
yeah still nothing'
Here's a bit of required reading to start it off
https://github.com/ethangreen-dev/lovely-injector?tab=readme-ov-file#patches
this is probably a stupid question but how do I check if played hand isn't a certain hand (high card in this situation)? I put this in but it doesn't work
no need for the message
bwa
i fixed it it was a case sensitive issue, i usually write everything caps first but i wrote e_chak_ignited instead of e_chak_Ignited
anyone that can help?
context.poker_hand ~= "High Card" ?
for future reference, right now you're checking if the played does not contain a high card
oh ok
what do u think could be done?
I'm looking at the code for blinds, and I'm realizing that if I have a custom blind method defined, it will not execute the rest of the function. So in addition to highjacking every blind's condition to also match The Blank, I think I also need to patch out the return of every single one of those functions that I have defined for this blind
oh god
it's either that, or I hard-code in every one of their effects into the code for my blind
and at this point I don't know which option is better
whats your blind
Copies random blind every hand iirc
oh i get the problem yeah
Last I remember making an effect like that is was about as scuffed as this is.
Altho this was 0.9.8 
you could maybe try having the blind object invisible or off screen somewhere and run code through it
add card ability and put it as null then once you play with this card in check if that's null if not then set that to current poker hand name but if it's not null then check if that is the same as current hand if it is then return xmult = 5 but if it's not the same then don't do anything
sounds mouthful

pants
Either that or make a table with all the compatible blinds containing all the functions that should be evaluated.
That doesn't really "lock" the hand type into being played though
Sorta like my D6 Joker code.
oh they want it to "lock"
yeah
I do already have a list of the compatible blinds written up
I'll look at the source
Kinda like reverse eye
I may have cooked a little too hard with this one lmao
isnt mouth reverse eye
...yeeeeeees
Whatever the case, I have an idea for tackling it
Tho it would involve a patch
so like, create a global to hold the secondary blind?
idea name it toe
hmmmm
I'm looking in state_events
me when i X0 at the end
I could totally write up this patch easy peasy but I don't wanna ruin a learning experience lmfao
true
is there a way to add a permanent calculate function that doesnt require you to have a voucher/joker/consumable?
oh, I might be able to do something like G.P_BLINDS[G.GAME.blank_blind]:press_play() inside of my modded blind's function 🤔
if I init a copy of the blind like Autumn said I think this approach works
Ill read the essay thingy in a sec, though i probably will need help
one question with the patch is, will the game be normal if i disable the mod?
mood
yes
I AM SLOW waaaaa
ASTRA BEAT ME TO IT
HA
okay well with my diamond scaling one, I want it to list things correctly, I want it to have Add +15 to jokers mult and list the current xMult

Hmmmmm
it will list it as Adds x1 mult, and then adds x1.15 and so on
it adds x0.15, not x1.15. That would be a very strong joker if the latter was true lmao
thats what it is listing
it adds 0.15 i believe, each diamond gets scored as x1.15 then x1.3 and such
very fast scaling
and now I need to figure out how to create a Blind object for the blind I want
i want the desc to be
Each scored Diamond card, Adds x0.15 mult to this joker and score the diamond card
(Currently at [total mult])
Try this
text = {
'For every scored {C:diamonds}Diamond{} card',
'this card gains {X:mult,C:white}X0.15{} mult and',
'gives {X:mult,C:white}X#1#{} mult'
}
why "for every scored card" instead of "This Joker gains <> when a Diamond card is scored"
?
It doesn't really matter either way tbh
just a desc can always be editited later, but thankies
yuppers
your art is amazing
this is a real line of code, written in the real game
3 of them are still placeholder
also
the notebook sprite is not mine
i will not claim it as mine
(giggle)
it was @frigid flame who offered to draw for me
Maximus teaser 
(I'm the coder not the artist)
why would you write it this way?
my current thing, and io have 5 more to draw atm lol
JS dev mindset
i do pixel art because i want it to at least fit the game kinda
maimai
this does not work on macOS because the patch doesn't work
Please do not the cat
I added an extra “do” in my mind
i can quickly write a quick thing for the not done cards stuff
oh it
changed the numbers on me
hmmm
1 and 10 got done
woag
not only do I need to instantiate it, I also may need to patch something to make sure it doesn't call any of its functions...
development will resume tomorrow
development resumes tomorrow
I already sent the gif. You only get it once 
i know
There’s nothing wrong with that
like 5 different mod does the same hand selection thing it's fineee
all i ask for is for everyone to agree on the same thing
also like woah though
maybe it should even be in steamodded
me too (i have a joker that guarantees all probabilities on flushes, but in order to make it work i just made game probabilities * 9999 lmao)
debugplus helps you debug
i think many things should be there
o i have thatr
fabric vs fabric api
i got the debugplus so i can test my cards
Im assuming you had to do that whole patch thingy to get the extra card i assume
yes..
Don't worry I did this exact thing recently too
You’ll learn sooner or later
Feel like the values could be split off to the extra pop-up of info_queue to not clutter description.
it's ok everyone does it apparently
i believe info queue does not support loc vars
The more things change the more they stay the same, worry not
i could be wrong
It does, actually.
my ideas are the only original ones
name one other mod that has a banana factory joker
huh
Mine tomorrow

just like my mod development resuming
it will resume tomorrow
Oh hey my mod is developing also, just tomorrow
welcome to the development resumes tomorrow gang
mistigris is going to be open source except for the banana factory joker which will be closed source and protected by armed guards
Too late, I'm already in your source
mfw i tried adding an info queue for an extra ability a joker had but i wasnt able to add chances so i just said “this joker has a chance to” lmao
You’re breaking Thunk’s rules smh my head
okay im looking at the patch thingy and im both like, okay this looks, okay, but then im also just lost as per usual LOL
info_queue[#info_queue + 1] = {key = "toga_kartjokerlist", set = 'Other', vars = { card.ability.extra.add_shop, card.ability.extra.add_shop*8 } }
he would agree that banana factory is too sacred
damn no excuse now for me
what about my ultra gambling card
the tl;dr of the tl;dr is it’s a tool that allows you to search for lines or blocks of code within vanilla and lets you add around or modify them
what are you using to keep track of your jokers btw
I have one that pays you for every time the wheel of fortune fails instead does that count
custom google sheet
wheel of hope in cryptid:
Yea i also use Google sheets
I'm sorry the what
i see i see
oh same mine just doesnt look that good
I was about to explode
my google sheet is excellent
mfw i come up with an idea only for it to come from another mod 😔 (it was +50 chips)
All i know about cryptid is its apparently huge and does tons of wacky shit but I haven't dug into their shit much aside of learning how to di the extra hand select
Me when I discovered other people did the +4 uno card
i feel like im gonna mess something up 😭
The basic synopsis is “What if the game is horrendously unbalanced?”
the linked image:
The worst thing that can happen is a crash. There’s no shame in trying
if u mess something up it only crashes and wont fully mess up your game. the injection only happens during runtime and never “truly” modifies the exe file
Like this happened to someone earlier
Makes sense enough
Do they have the 100000000 mult card yet cause I gotta create the x100000000 mult card that has a 1 in 100 chance to proc and if it procs rolls another 1 in 50 to insta lose the run
my name is GlobalThonk
i would assume whatever patch i want to do would be at the start of the code, but the thing is, i have no clue what i am doing with this patch- my goal is to have a joker lock a hand, and another to +1 playable slot, but got no clue How to do that
anyways brb
FUCK YOU, CURSE OF JIMBO!!!!!!!!!!
Dear freaking HEAVENS
Dude I was laughing for so long when I first saw it
LMAO
Like
That’s 100 jimbos in a SECOND
swashbuckler and abstract joker would go insane
you would need 100 sacrifices to deal with that
I think swash would faint
$20!!!!
50
Nah that’s hermit
$50!!!!
Wide
He wanna be cryptid so bad
i do want to include some sort of cross-mod compatibility with cryptid but i am currently unsure how that'll manifest
Hear me out
Joker that win game 🏆
Heh
Good luck
❤️
What if I eated it
Then what
legendary joker reskin
Why he look like that
Not the nether virus oooooooh mah gawdddd
Lowkey chat
I could take some netherite poisoning
Only lowkey tho
hes the chuckler
We need the chunkler
but now you can find cavendish!!!
i think the only special combo I've intentionally programmed into my mod is Banana Factory and Showman
Crowned Joker will outclass Cavendish 
but will it outclass unstable atom
Guh
I think my only ones that are specifically designed to work together are my debt cards and debt collector
I've discovered when you have the ability to go to -320 in debt having a mult of x192 isn't too bad
Make yourself as one :)
):
You'd be an awesome joker trust...
okay am back
wb
Heh....hi back 😎
so how do i make a joker perish
tell it to
Usually the start_dissolve() function
like this, i assume not lmfao judging its a different colour
Nope
The implementation is a bit more involved than just plopping it down somewhere
actually dont do this
:3
I once again very much recommend keeping a reference to the vanilla code up. I’ve made 70-something jokers and I still do this lmao
do this
if context.post_joker then
card:start_dissolve()
end```
I forgot post_joker exists but yeah that’s exactly what you want
my main reference points are:
- vanilla
- Cryptid
- Ortalab
sometimes I look at other mods too, but those are the main 3
I'm very much on a "fuck it we ball" mentality and just stare at source code until it works
I should start glancing at other mods more
It’s a lib for a reason 
There’s no shame in it. Open source is open source for a reason
I've had this big mentality that I'm worried I'll see someone else's code and be like 'what a sick idea, ill use it for myself'
And i know taking other people's code is fairly bad practice
this is barely better
Not necessarily
Just credit the source
That's fair ye
I'll probably start doing that
this is how I do that in my mistiutils file
i mean
I can’t believe you actually got that monster to look clean
legendary joker number 2
i mean i tried okay
why cant i use my art skills for something productive lmao
That actually looks alot better than I expected it to, well done
Nah I’m saying it looks good now and that you did well
wait why is it X15 chips
i love going in and putting comments on my MistiUtils file despite the fact that it's a local object and I will never be able to actually access the comments while i'm using it 😃
i just always have to have it off in a separate window
I comment just about everything just so I know wtf I'm doing half the time
If I don't comment then 3 days later I'm sitting there scratching my head going 
there we go
if you understand what you're writing decently enough, you don't really need to comment as much
monster card
tada
wtf real
I got that short term memory loss as a gift from the military so I gotta comment
adding hamsterball into balatro because i love
Adding -hamster-
adding ball
i should replace the hamster ball in hamster ball with jimball
its much easier to mod than balatro
😭
balatro is easy to mod once you figure out the basics of steamodded and lua
steal my code
nah dude you just gotta go to the appdata folder for it and replace the sprites
so, how to determine how the card dissolves lmao
AYE AYE CAPN
to convert levels from obj to meshworld n shit
Don't
texture modding literally same thing
i just do sprite replacements for tons of games
nah
texture modding you just replace a file
you can just open up balatro.exe and replace the file in it if you wanna go that route
you don't
you just open the exe in 7zip
and replace the file in it
not recommended but you can do it
its a zip file pretending really hard its an exe
Check for the function definition in common_events.lua or misc_functions.lua
i cant seem to replace pngs in just the zip
I forget which file it’s in
like
Or actually is it in card.lua???
unless thats just a problem with winrar but i dont like 7zip
it should be in card.lua
open exe as archive 7zip
Blegh it’s too late for this
Card:start_dissolve
😭
7zip is literally free
winrar doesnt work
why not recommended
so is winrar
Winrar is also 'free'
it does
you can also use https://github.com/M2Team/NanaZip
oh nice
yeah i dont think 7zip does either
idk why people hate lovely/steamodded theyre literally right there
I will say steammodded seemed very daunting to me initially
i found a bunch of things that say Dissolve but they are like spectural cards
Now that I've been in it though I love it
dissolve seems to be a shader or something
i just want the joker to die after it gets used TvT
it is
did you know that 郵便局 means post office?
Search specifically for function card:start_dissolve
capital Card
That should give you a better idea as to what variables it takes
my brain
meow
i've actually got a .luarc file (that I borrowed from paperback and made a few tweaks to) that includes other APIs as libraries so I can see what the functions do without going into the code directly
oh i gotta fuck with dissolve_colours more
idk my irl friend got that working so
do you just want to make a malverk texture pack
malverk means what
because that doesn't have you replacing shit in exe
Yeah that param exist, gets pretty results.
it adds api so you can make texture pack
oh cool
bpbsyuri release date when (on platforms that can be used)
僕のMODじゃない
i kinda wanna have it in its own thing, i may want to code some extra shit it, i probably wont but itd be nice to have the option
aikoyori where the fuck are we
mac keyboard so buggy you just spoke another language lmao
i gained headache so i probably will try figuring out on how to make a joker die after a hand tomorrow
development resumes tomorrow
This is hours later but if this is supposed to tell you when your mult decreases why aren’t you just checking if the value provided to mod mult is less than 0?
@wintry solar yo astra needs some help with this
getting crashes every time 😭
what happened
show code
don't just copy code
btw
well thats my issue there LMAO, idrk what from it to get, but i had the self.remove part and it didnt recognize it
card:remove()
change all mentions of "self" to "card"
Ooh
this stuff is confusing
Lmao it just vanished, and it scored after dissapearing thats funny
Steamodded example mods. Contribute to Steamodded/examples development by creating an account on GitHub.
check the gros michel example here
oh you want it to die at end of round
i want it to die after hand
:3
well i can get it to die after hand but still it dies visually before it scores
eh isnt the biggest deal i suppose
ronald is here
wtf mr Ronald McDonald
idk who else to make the legendary jokers
clown car from mario idk
thats a good idea for a different joker
oh i knpw
i gotta do the og cartoon joker
(i never watched)
eh i havent seen much of it but its classic
well, no clue how to create a copy of one of my custum jokers, but i can copy standard ones
maybe look in the invisible joker code?
i mean like
Create a Negative copy of a card at the end of a round.. Invis might help yeah, i assume i use my key for the joker right?
the thing on top of the mod file
trying to make a reverse obelisk, gains xmult if hand played is not least played hand, however, getting a reset on every hand played. have tried fiddling around with <= rather than >= and it says error instead of upgrade. tried looking at other mods that use least played hand and dont see what im doing wrong 😦
i think whatever tutorial i found on youtube, it sucks lol
this isnt negative either, but the tutorial was copying just standard jokers
can you show me the beginning of your mod file
bwa
maybe its key at the front too.. no clue lol
swap the "resets" and replace "~= context.scoring_name" with "== context.scoring_name"
i think the front would just be joker?
and replace "play_less_than" with
local play_more_than = (G.GAME.hands[context.scoring_name].played or 0)
still crashing
what's the crash
hmm
show code of joker that you want to create rn
also card:set_edition({negative = true})
SMODS.Joker{ key = 'burger', loc_txt = { name = 'Juicy Burger', text = { 'Scores {X:mult,C:white}X#1#{} mult for First hand Played,', 'Perishes once Scored.' } }, atlas = 'Jokers', rarity = 1, cost = 2, unlocked = true, discovered = false, blueprint_compat = true, eternal_compat = false, perishable_compat = true, pos = {x = 2, y = 2}, config = { extra = { Xmult = 3 } }, loc_vars = function(self,info_queue,center) return{vars = {center.ability.extra.Xmult}} end, calculate = function(self,card,context) if context.joker_main then return { card = card, Xmult_mod = card.ability.extra.Xmult, message = 'X' .. card.ability.extra.Xmult, colour = G.C.MULT, card:remove() } end end }
okso
gwuh
actually
local card = create_card('Joker', G.jokers, nil, nil, nil, nil, 'fots_burger')
this should be correct but idk
Going off of description and also noticing some things...
calculate = function(self, card, context)return { vars = {card.ability.extra.Xmult} }
if context.joker_main and not card.ability.extra.scored then
card.ability.extra.scored = true
return { x_mult = card.ability.extra.Xmult }
end
if context.after and card.ability.extra.scored then
card:remove()
end
SMODS.create_card({set = "Joker", area = G.jokers, key = "fots_burger"})
@halcyon osprey
😔
she dissolved into the ocean again
My best bet for wanting to transform a consumable into another is just to destroy one and create a new one, right? I was considering copy_card but I think I'd have to spawn a dummy item for that to work
i just had dinner
sorry 😔
why u apologising?
we're so sorry to hear your brother passed away, he gets five big booms
where abouts would i throw in negative?
also card:set_edition({negative = true})
in the same line as the creation?
put local c = right before SMODS.create_card, and then do
c:set_edition({negative = true})
no because card overlaps with the card in calculate
don't you have to emplace the card in the area
ah
makes sense
I'm dumb
in that case you'd replace "create_card" with "add_card"
smods has had this function the whole time and noone told me
for the burger creation card
burger card
btw the burger still gets deleted before the game scores it but its visual only, it gets scored and goes
before card:remove do G.jokers:remove_card(card)
lucky i have a save point to test the burger and the fast food card
still crashing
its screaming about a Center constantly
this
try making a new save
y'know what, fair point im probably using the same data as before
same thing again
ok maybe it's the metadata issue
maybe you added spaces somewhere
what I'm saying is that you should put mod metadata in json
i shall do that right now
idk much about the file header format
G.E_MANAGER.add_event(Event({
func = function()
G.jokers.remove(card)
card:remove()
return true
end
}))```
try replacing card:remove() with this
have you also changed it in wherever you reference your jokers?
crashed on Event
change the . right before "add_event" to a :
Burgers get destroyed at the right time, Crash on copy
back to 'Center' [a nil value]
lower case center?
yeah
show code
is "fotsocemu" your entire prefix?
changed it to that cause i thought fots could be used alr
change "create_card" to "add_card"
remove everything before the mod code part
A joker key is prefixed with j_
im wanting to copy one of my own jokers
ah
if context.end_of_round and context.main_eval then
burgers for everyone
yep
starvation is solved
many
would you rather have unlimited burgies but no games
OMG
BORGAR
I like the concept of the burger, its A common that grants x3 for first hand, The fast food chain kinda improves it and makes it viable for use and such
single use Cavendish
Perfection
yeah
I'm going to add joker based on this song https://youtu.be/zh-4M5blbiI
和田アキ子 X フレデリック
それはもうオドループならぬ和田ループ?!🌀🌀
↓🎧ストリーミング&ダウンロード↓
https://wadaakiko.lnk.to/yydID
↓🎤💃 Inst音源配布中!↓
https://piapro.jp/t/HMEo
↓💿🎧12月8日発売『WADASOUL 2』の購入&ストリーミング&ダウンロード↓
https://wadaakiko.lnk.to/wadasoul2TP
Vocal:和田アキ子
https://twitter.com/wadasoul2015
https://www.instagram.com/ako50th/
Music:フレデリック
https://twitter.com/frederitter
https://ww...
/hj
