#đ»ă»modding-dev
1 messages · Page 348 of 1
(Am I making any sense I'm kinda floatin off sudafed and lack of sleep from swimmer's ear)
like, my factorial scaling joker is literally an instant win, you can solo the entire game without even trying, but the lengthy process to even obtaining it isn't even possible to begin until you've beaten ante 8
ive been playing too much ascendant stake i thought that was a reasonable amount for ante 8 for a bit
I mean even in my modpack it can happen
the thing is if you're offered enough jokers to only good good ones
even if the good ones aren't any better than the better ones of their rarity in base game
you end up a lot more powerful
which is why vanillia+ means something different to me than most people
I don't think ante 8 will ever be a challenge with 2,000 jokers in game
I think you gotta play the game different
I use sandbox sleeve and/or deck from sdm0's stuff almost always. They increase joker slots by 2, but also how many antes you need to beat to win
So I'll have 7 joker slots, but need to beat ante 10 to win
or even 9 and 12
Then it starts to actually make sense as a game
but I don't believe in imposing design, so the people who do play with my pack probably find very different games within
#1267720426109272135 requisite plug so y'all know what the fuck I'm on about
the sheer amount of jokers probably makes for a very new experience
oh right i should probably make a forum post here for astronomica at some point
i should probably update my post
oh i should make a Backup joker that deletes your save /j
i will once the next update comes out
I mean, to me this is just about making sure to match the jokers that already exist in the base game in difficulty and abundance. if the sheer presence of lots of modded jokers means you get more powerful, it's because the mod isn't re-aligning the pool with some weaker jokers
it's less exciting to design weaker jokers, but I think it's pretty important for maintaining balance
because no one wants to make or play with weaksauc3e jokers tbh
i have a post in cryptid's server but it doesn't get a lot of activity
that sort of vanillia balance is unattainable and grankly not as deseirable as people make it out to be
hey i make weak jokers...
maybe, but do you /really/ have any as weak as thunk's biggest stinkers?
does the one that gives 3 bucks for discarding gold cards count
fucking superposition
no because that's actually good
lol
and matador
8 ball
I don't think it's about being that weak, but just having some that are less powerful than average is already enough imo
if you don't retrigger spam
you don't need to design useless jokers, obviously
oh sorry the flush rare xmult
I'm just taking about not having all of your jokers be the peak output of that rarity
on held in hand no lese
i still believe that some jokers like chicot and perkeo would be considered extremely non-vanilla if they weren't in vanilla
i love dlushesand him is still pretty weak, yes
if you play a 5 card hand, held in hand effects kinda suck
so yes for me that's a synergy
i think some of my jokers are definitely on the more situational side
but ig none of them are as trash as banner past ante 3
lmao
tes
but people clown on chicot
for some weird reason
basically everything with a large community around vanilla+ mods run into something like this, because "what is vanilla" is thought of under the lens of "is this like existing content?" rather than "would the developer(s) add this?", mainly because the latter is nearly impossible to think in unless you are the aforementioned developers
like he's the worst legendary
like... and they really do mean weakest
i don't get it
chicot is not the weakest legendary
i don't know what the worst legendary even is they're all ok
tbh for me personally, as much as this is very much not true with most playstyles, perkeo is
people seem to think this one is useless
canio is probably worse because you need to build around ot
because the way I play he's just iway too much to set up and takes up dead space
like perk is nice to have
i feel like chicot you just pick it up on any build whatsoever
but nothing i don't sell if i need to
do people still code for old calc
i only like canio because it sounds like my username
i actually have that as a setting in my mod
I don't mind canio but he does need a lot of setup, but at least there's waus easi;u compatible with my playstyle
just make a buch of face cards and play and destroy the same cards
i think it's time to remove it
I feel like perkeo is not the win button people make it out to be, it can be a huge help but does literally nothing on its own, if you have a perkeo and nothing else you're dying
perkeo only skyrockets into absurdity with other jokers and consumables that are also very rare to get, and at that point I think the overpowered-ness is warranted
good syngergy with trib too
I think extremely rare setups are allowed to be overpowered for the novelty
I don't really do face card builds though
I prefer number cards because I got a lot of mod syngergy from them
with ortalab especially
my first ever e score was with perkeo and observatory and it was absolutely insane
face card builds are kinda boring imo
i mean i could but i've already set new calc to the default anyway and have the old calc there just not running if they aren't enabled?
but anti-face card stuff is common in mods well beyond ortalab
i mean might as well because you've got 1 less version to worry about
im glad i started modding after newcalc became the norm
see the funny thing is with so much content specific syngergies don't real
i personally don't see benefits to maintaining the old calc compatibility
how different was coding with oldcalc anyways
i mean its mostly the old stuff that has old calc support the new stuff either works on both or is only on new calc
you have to dui syngergies with how I have my game
oldcalc is irrelevent btw
don't do it
mods stuck on oldcalc need to be ported
not vice verse
I do attempt to deal with stuff like that in my own ways
more boosters? just add a way to get more booster slots
more vouchers? add more ways to get vouchers
though for 100 vouchers, yeah that's a special case
like
lol, anyone who plays betmmas
For the vast majority it was just longer
how did things need to be done differently
should i really delete the option when new stuff isn't really being ported to it to begin with?
whats wrong with this?
You had to return specific keys at different timings, you had to specify messages and cards to put messages on
wym? it's only old mods that are abandoned not ported
Not all areas received the same stuff
no like on my mod
Some object types had different calculation methods too
when i make new stuff it doesn't get ported to the old calc setting
steamodded gender equality update
it either works on both or is left in the newcalc
I mean if you wanna support oldcalc more power to ya
I'm a linux user, i always stan legacy support
also i think ortalab check can be done automatically
like all the oldcalc setting actually does is for stuff that is supported on oldcalc switch its code out for the oldcalc version and vice versa for the newcalc setting
I just wish the mods stuck on pldcalc which I can't trust to do their thing anymore were ported
ok nvm i fixed this missing coma
there's dozens of mods in my old modpack that some people play with, but I just can't feel right moving them to my new one as is
because oldcalc mods don't usually crash on newcalc
they just don't do the math right or have weird behavior
are there any examples?
like at this point i would say you should defintely play on newcalc which is why its the default but if you are one of those people who for some reason are still in oldcalc the setting is there
someone was on the oldcalc version of morefluff and it made the mouse influence the score or smth for some reason
that's weird
lmao
which is like nobody anymore
true
sorry if i sound stupid but what exactly are newcalc and oldcalc
i don't quite fully understand either tbh, only the general idea
steamodded varations old calc was before a massive change to calculation that breaks some stuff aka new calc
basically before the new calc everything was inconsistent
what reason would anyone even have for staying on oldcalc anyways
oh its just smods revisional differences? ok
ye smods
it's a complete rewrite to the calculation
yeah and if you are using really old mods they may not work right or just not work at all because of this revision
whats wrong with this? i thought getting rid of the string for the text in the description would fix it but it didnt change it
key should be string
OH
an d uppercase J in Joker
there aren't many old mods anymore
bullshit
most of them are either Balamod mod or the creator just gave up and you should be looking for updated fork
if people are interested
I mean... sure, but those updated forks were all by elbe
balamod?
and he dropped out months ago
not completely
just life stuff
https://github.com/GayCoonie/Coonies-Mod-Pack/tree/main/Mods
just look at all the mods here that aren't in my new pack
i dont really plan on giving up on my mod but i do know i'll probably be alot less active if active at all for july because of Artfight
I'n still very interested
quick question, where can i change the scale of card loads within the smods.joker structure? (self.T.h = Hscale0.7scale
self.T.w = Wscale0.7scale for wee joker for example)
I definitely agree with chicot
I feel like if three of the five legendaries werenât all xmult based on cards in some way, I think perkeo would fit in a lot better. But since you have xmult on face cards destroyed, xmult on discards, and xmult on played kings, it all feels samey samey and the outliers are a slightly better luchador, and a genuinely fun mechanic thatâs a bit strong based on your setup
also yes, I definitely should be asleep
my new pack for comparison
yeah, i wish there were more legendaries with more unique effects
Loki in my mod pack incoming lol
any of y'all here do artfight? i try to beat my record there every year drew 222 people last year
tbere's a lot of new faces, but the returners are sadly sparse tbh
mika's is probably the biggest loss
I'm really trying to keep the legendaries unique in my mod
that one is super OG and full of jokers
I think itâd be cool if legendaries were all very experimental. Like no other card has the same mechanic they do (ie, perkeo).
We have enough cards that give +chips, +mult, and xmult; give us something else! Lol
i think it'd be cool if vanilla had a legendary that was the only source of exponentiation in the game, even if it was extremely limited and small
to the point that they were the first jokers I ever implemented in the mod, and yet I also only have 2 out of their 5 mechanics actually figured out
Well well well
compelling legendaries are hard to think of
i think otherwise
is this a good legendary?
i also don't really like legendaries in mods that just complete ignore the design scheme (looking at you, nostalgic invisible joker)
I get to that gamestate regularly without it
when I'm actually doing runs
@hasty mist good legendary?
but I don't mind it as a 1-hit punch
venturing outside the strict famous jesters only is fine, but nostalgic invisible joker just straight up doesn't even make sense as a legendary
it's uniquw
Personally Iâd rather legendaries not be direct stat increases
mhm
I see what you're going for, and for something like this it's probably fine, but on the scale of a balatro joker design, It's disparate
Hell yeah
ahead when
jokers in balatro tend to effect one thing, or have a specific link between two things
legenday being a themed class is much too limiting
i'm glad it's largely discarded in mods
I like working within the bounds of the legendary designs
i cant wait for astronomica to have enough content to warrant it's own effect
Trance
Gradually shifts colours :)
-# (broken đŻ)
đđđ
also i was playing with freedom deck earlier
i am genuinely impressed at how stable it is
like
balatro mobile in betmma is the buggiest thing ever
but freedom deck is virtually seamless
not a single crash
that's valid too
if nothing goes together, everything does
it's how I pull cohesion out of chaos
never really sure how to do anything with legendaries tbh like they are supposed to be good but at the same time you dont want them to be too good or too similar to the already existing ones
the trick is to add suits and ranks for jokers and consumables so that they can actually score properly
econ legendaries are still an under explored niche
I see
it's not actually that restricting if you know what you're doing, nevernamed's hundreds of legendary designs come to mind
otherwise it crashes upon scoring one of them
yeah that might weight my legendaries enough to make the unthemes ones stand out
oh well
agreed, wario is kinda boring to me and that's the only econ legendary i can think of
I had a legendary mechanic that allowed vouchers to show up in the main shop, even if you've already redeemed them, but it's not actually that engaging so I scrapped it
the thing is with how vouvhers work that like... you'd have to code them indivudually to get the to do something twice
so it'd end up parasitic
not interacting agnositically with mod content
99% of the vouchers in game already support stacking... even observatory, which surprised me
hm? I don't think you need to do anything with them
if you claim two observatories, planet cards trigger twice
stacking them works perfectly fine with equilibrium deck
Got a link?
It's because SMODS takes ownership of observatory to use context.other_consumeable instead of just calculating for each planet.
I mean... maybe they got refactered to be that way, I know there used to be a mod called looper
that had to individually support them
the only ones that don't work are the planet/tarot merchant/tycoon vouchers, shop price reduction vouchers, and I thiiink that's about it?
I have that installed
freedom deck is so fun
it's about the open class of vocuchers
I wish the mod worked on 1.0.1n though
Oh my god
Thatâs absolutely insane
I'm sorry everyone for not going with America flag
I strongly dislike mechanics that aren't able to be generalized to modded content agnostically
whats the mod that shows the stats below jokers
joker display
why is the text for the name here on both of these showing up in the box at the very bottom meant for the rarity? Baloney Truck doesn't have a name shown at the top at all which confuses the hell out of me cause the way these two are coded is almost identical i don't see why one would run into this problem and the other wouldn't
a mechanic, imo, can be parasitic in 2 ways, it eats its own ass, or it eats vanillias ass. Both of thse things are fine in isolation, but I haven't, don't, and will never play mods that way, so for practicial purposes mods that revolve around such things really can't exist to me
It's loc_txt not loc_text
it's not nessacarily bad design, but it is pideonholing design
it means your mod will never thrive with others of its kind
can you explain what you mean by parasitic
like... take for instance a mod having a joker that relied on another joker from the same mod to reach its full potential
is there smth such as a "seal_gate"? like joker's out of the pool until you'd have at least a seal in your deck?
not like in a themtic sense, but in that it's designed that way
yayyy
coded that way
now all i need to do is find out how to actually use custom textures
Or, in the same way a mod relying on a specific vanillia joker would be just as bad
so, the concept of exodia jokers but broadened to be about any mechanic in general?
is there a function that changes card rank like change_suit()
probably, i'm not familiar
Isnât like 90% of cryptid based on/named after that one pair joker?
exodia jokers are basically just jokers that rely on other jokers for their effects, i.e. you need to "assemble" them to get use out of them, which is against balatro's design principles
there are other minifestations too, like mods that add a new mechanic that can only really interact with content from the same mod
yes that
well yes but you see that was part of A Bitâąïž and not meant to be good
an example of this would be the energy system from pokermon
Iâm currently creating an exodia of sorts with three âbrotherâ cards where two increase in power if you have the other two, and one just makes all three negative lol
Very true
I also extend this to when they account for vanillia manually but are otherwise parasitic
I mean, plenty of mods are designed as standalone experiences and there's nothing wrong with that, if mods want compat with bespoke systems in other mods, they're free to add that themselves, or communicate to have it added through other means
I think parasitic is a bit of a harsh term to use in this case
I was very clear that it wasn't inherently bad design
just a taste and playstyle thing
i have this
and it makes the mods irrelevent to me personally
which is parasitic by your definition
suits can be fairly parasitic if they don't have a lot of suppor, that's fair
"parasitic" referring to mechanics stems from magic the gathering design, where it's generally used to refer to mechanics that require a large volume of cards to work well
it's why when I'm gonna do my suit mod it's gonna come with literally half a dozen jokers per suit, to make them feel right in the pool
ahh
yeah it might be a misnomer for how I and some others use it
me when everything got confusing
I just make all my multi-suit-based jokers work off the smods suit list, so they're directly compatible with newly added suits
yeah that's the right way to do it
but if you're adding a suit itself, it needs support
I'm adding Joker suit
and probablky more than just the 2 jokers per suit vanillia does
and Consumable suit
parasitic mechanics (in mtg) generally work well in "draft" environments (limited cardpool) since the designer can control the exact percentage of cards that use the mechanic, but tend to not do as well in "constructed" environments which have a much larger cardpool
the reason being no other mod is likely to ever provide support for another mod's suit
like it happens, but rarely
are you adding joker STAKE though?
so for my personal design philosophy
boring
for a game that opens and closes instantly using alt F5 to reset weirdly takes a while
america
just crash it by closing the lovely console window
closes rq then
:P
bump
what in the name of god
What's the limit
wdym
what should be the limit
Do those cards get permanently added to your deck too??
no limit its the freedom deck a free bird isnt a caged bird
Thatâs so cool holy shit
also its very very funny
what is the proportions of x2 deck ?x?
đ” đŠ đž
?
like is it 71x90 or something else
71x95 is the x1 asset. Multiply those two by 2
ty
im gonna need to spend an entire extra night just learning how to add descriptions
good lird
Wait, sorry. If you meant the full deck of cards, the dimensions for 1x are 923x380
lirdy, lirdy, oh dear sweet lird
bump the bump
no just 1 deck like here
Ah yeah, ok. That would be 71x95 with both numbers multiplied by 2
how doth one add text to thine screen?
how to disable this
actually put something in the log message?
https://github.com/Steamodded/smods/wiki/UI-Guide
good fuckin luck
i've looked at that for a while, i know how to create text but not how to add it to the screen
That's the ui box section I think
with the function to make it go
you jsut need to figre out what parent to return to get you on the scren during normal gameplay
I think
fun
tell me about it
I'm not gonna because the fun is for you to figure it out
sure that doesn't lead to janky nonsense, lol
because the smods wiki says the same samn thing
damn
the trick is to nest C and R and C and R in alternating fashion
that's all there is
he needs one line of text with a trandparent background
the grid seems irrelevent
oh
you'll need to put text in one of those
and have some padding
put colour in the thing
if you want text on screen you'll have to have the UI Box be Game Variable and hook when you need to display it
the biggest issue is the fact it needs to display in game not in a menu
which i think you just addressed
holy moly that was easier than i expected lol
wait.... you understood that?
best method, lol
the scientific method
Why is that actually correct
although it is half obscured by the run info
because humanity just be like this
padding or something
i presume
People say humanity is a miracle and yet we aren't even the smartest creatures on our planet
I mean I think measuing interllegence across one species is enough of a crapshoot
let alone a whole planet
We have enough Karen's to say that for sure
whoa this is getting philosophical guys slow down
well tbf science has only one goal and it's to be correct
It's to be questioned
But balatro is philosophical
the only measure science has is the truthfulness of the answer
In an ideal world, sure, but I think there's a lot of philophical baggage that can seep in anc cloud interpretation
science fraud is so dumb because people just replicate and see you're full of shit or something
I mean, fraud, yeah, but I mean systematic and often completely unconscious biases that can lead the consensious asway for some time, and the more foundational the belief is, the less concious it is, and the longer it sticks around
I might need to sleep, apperently I made up the contruction "lead asway" I have no idea what I actually meant
like I know what it means, but idk the words that my brain was trying to make
astray
I truly am an idiot
And that's why psychology is a busted option to learn
What time even is it for you to be up this late
it's like my internal monologue temporarily developed a speech impediment that I went on to transcribe
Real
it's 2:44 am, the issue is I've been awake for about 36 hours
lmfao
Oh my God
Sleep man sleep
I... am kinda used to this
I've gotten to 72 hours without sleep due to balala
and the ecedrin and sudafed I am taking for my swimmer's ear aren't exactly sleepy meds
ecedrin because I can't take ibuprofen like a normal person because I take lithium and it could kill me
God you are beyond cooked
I'm also taking meds that will kill me if I take ibuprofen :3
my earache isn't too bad though? so that's a plus
I actually feel restful not high strung from the pain
YIPPEEE
I did go to the doctor and get antibiotic eardrops today
@manic rune
bepuis
Quick question, if i were to apply a custom soul layer to a playing card, is there a way to display it in the deck ui? Cause it doesn't seem to do so automatically
whats the color for the (Can't be sold or destroyed) line?
inactive
where/which file are the default hands/discards/money defined?
G.GAME.starting_params, get_starting_params() is defined in misc_functions
Aight thanks
how do you go about modifying enhancements?
id have to override the basegame code, wouldnt i? i dunno if i can do that through a joker
you would have to take_ownership probably
Guys, what's the problem?
is this correct?
how would you go about doing this the RIGHT way (changing C: to a color in the calculate function)
you will probably want to use V: instead
hey @red flower So i tried to make G.ASSET_ATLAS["astropulvis_diffatlas"] like you said to do, and when i try to use the atlas to render the sprite, it crashes stating that atlas is a nil value.
so THATS what V: is for
let me get the crash log
What is death
W
Guys, what's the problem?
alrighty
well, new problem
new_sprite_atlas is nil
meaning that something is going wrong from the atlasâs creation to it being rendered
did you try printing G.ASSET_ATLAS[...] to see if it has something
dont be mean to debugplus
it was meant to be an uhh
not an ugh
big difference
I think you need it in misc.dictionary too
yeah that looks fine idk then
let me try directly calling it
instead of using a variable
oh thats a bit large
works though
lmao
at least it was a funny bug and not a sad one
which file are enhancements defined in? cause unless im just ctrl-f'ing the wrong terms it doesnt seem to be in card.lua
It's not working
no idea then sorry
i'm trying to overwrite cards destruction to prevent it if a joker is possessed, although this just stops the game functionning (not crashing, i can still go to menu)
function Card:start_dissolve()
print(self.base.suit)
if next(SMODS.find_card('j_sdr1_stamp')) then
return false
end
return true
end
thats not how you hook
what you are doing is replacing the entire code of Card:start_dissolve() with that
In LUA, it is a very important concept to understand that everything is a variable and all variables may be edited in runtime. This includes functions. With modding other peoples' LUA files, like Klei's basegame code, you may find yourself wanting to run your code before or after the original fun...
but i dont find the original Card.start_dissolve in base code
here, this should help
i dont know what there is in it
i found smth similar in state_event
but it's not rly it
is it possible to change it? like using take_ownership or something
you can always just do a lovely patch
yeah i have no idea
my game keeps crashing when i load up a deck with the cryptid mod what do i do to fix it???
Game.lua
P_centers table
theres game.lua which seems to just be an atlas but i cant find any defining information
Search self.P_CENTERS =
đ«Ą
This could mean literally anything. Show crash log in #âă»modding-general
patching start_dissolve will not work smoothly, because the game calls that and then does other stuff assuming those cards are destroyed, like joker eval. It also ignores glass shattering which uses a different method. I'm not sure that's there any neat way to do it short of patching every single case, it's a lot easier to just let it be destroyed then create a copy
đ«Ą
yeah i know, saw the shatter right next to dissolve
Pat h card:remove
tried going with this, but it doesnt prevent destruction, although doesnt crash and accurately hooks the destruction info
local dissolved = Card.start_dissolve
function Card:start_dissolve()
dis = dissolved(self)
if next(SMODS.find_card('j_sdr1_stamp')) then
print(self.base.suit)
return false
end
return dis
end
again, patching card.remove will not work smoothly because the game will call that function, do nothing from your patch, and then go on to do other stuff assuming the card is in fact destroyed
Cause your still running disolve
Move it into the else function
else
return dis
end?
Dont run dissolve everytime the function is called
Move it into the else
On mobile so take what I say with salt, but anything that happens with jokers will check g.jokers, so if dissolve doesn't remove the joker from that, then it will work fine
local dissolved = Card.start_dissolve
function Card:start_dissolve()
if next(SMODS.find_card('j_sdr1_stamp')) then
print(self.base.suit)
return false
else
local dis = dissolved(self)
return dis
end
end
in there?
Yea but local so it's not a global
local dis
oh yeah
discard_cards_from_highlighted collects all the to-be-dissolved cards in a table destroyed_cards, then calls dissolve on each of them, then calls eval_card with context.removed = destroyed_cards. Any Joker that does something when a card is destroyed is going to see your not-destroyed card in that array and think it is destroyed
this table has the variables but not the code that uses the variables 
Card.lua would have it
Which one are you looking for
the glass card
which i think ive found already
i just didnt know what to do with it
i think glass is overwritten by smods
ok now the game stop working (not crashing) when i have my joker, i'd guess the return false is bad, but i'm not sure what args to give it to stop the dissolve w/o stopping the game
Which file is the discard_card... in
...
state_events, but I believe there are many such cases. I looked into this myself, decided it was less pain to just rework "when destroyed, save card" into "when destroyed, create a copy"
also it procs on jokers destruction too :/
what does this mean then if im trying to modify the properties of glass cards
Hex card only ever calls start_dissolve
the create a copy changes a lot to how a player will react to the joker
ideally i'd prefer going with a prevents destruction, but im struggling
Same with ankh
it's more that there's no single cancellable funnel through which all card destroy events must go, so there's no safe 100% reliable way to patch them all e.g. if a mod is doing things with destroying cards
isn't there a mod somewhere that succeeded to prevent card destruction without using eternal tags?
cuz eternal tags prevent using hanged man too for example, bothering
Smth in Jens has that
Psure
Patching card:remove should 100% work, but the visuals of the destroy would work
Yea
ok saw, diploplia, looking on how it's done
can you do something like this with V:n?
if i did take_ownership('glass') would that override this?
wdym
is that even what id want to do 
idk what your goal is
with {V:1} you can like return a color in loc_vars right
yes
for a deck, whhow would i pchange the blind size?
like 10X Base Blind Size something like that?
could you return a string that changes the text itself i.e +chips into +mult accordingly
with the same logic as V:n
that would just be the normal #1# stuff
yeah but that just returns the value
idk the fancy stuff on how you actually add the words n special characters into the variable
i probably shouldda started with that first
im trying to change the chance of glass cards breaking. im assuming the extra in the config = {Xmult = 2, extra = 4} in game.lua refers to the 1 in 4 chance but its the 1 i wanna change rather than the 4
{V:1}#1#
return { vars = { condition and "+10 Chips" or "+5 Mult", colours = { condition and G.C.CHIPS or G.C.MULT } } }
that would color the whole text but you get the idea
what's the difference
the 1 is global for all cards because it's affected by Oops and similar things
can someone help me figure out how to potray this joker better lol i'm struggling with the background, or like give me feedback?
how do i make something like G._ but for my mod specifically
i wanna put like, my risk table into smtn like âAP.G.RISK_TABLEâ
Astropulvis.Globals.Risk_Table
just do Astropulvis = {} at the beginning of your file
alright
and then i can define stuff as I go?
keep in mind it won't get saved between restarts
makes sense
i just wanna make it cleaner
yes a lot of mods do this to keep all their stuff in a global
the major difference is id like to change the 1 to 0
i could make the 4 like arbitrarily large but that seems like a hodgepodge solution
oh then you need to take ownership of it and prevent the destruction altogether
and probably modify loc_vars too
yes but if you make the name too generic it can conflict with other mods
iâll make it like ASPL
me when i vaguepost about what im trying to do so i can figure it out myself and i end up just slowly dripfeeding modding dev the entire goal
let me make sure that isnât a horrible acronym
uegh?
idk what this is
so id take ownership of the code snippet from vanilla card.lua and not whatever the SMODS version does?
if you need help dont do that
https://xyproblem.info/
no the smods version is the one that overrides the destruction so copy that
đŠ true my bad
in this #1# refers to +10 Chips right
or +5 mult
yeah ik
How do I pin everyone who follows my mod post? (optional)
how
unless you're a mod, you can't pin anything in any channel
do you like wasting time lmao
i was operating that way with the goal of learning on my own and only asking about the specific part i was having trouble with
but answers lead to more questions and
ive learned the error of my ways
the problem is that this is such a niche topic that the only two ways to learn are asking here or learning to read other people's code (including thunk's)
as someone who learned the second way i dont recommend it
yeah
ive got 4 custom jokers worth of familiarity with lua and most of the code is still incomprehensible
does a 1.0.0~BETA-0410b steammodded version exist? All I can find in the releases is the version I have currently
download from the gree code button
or this
ah, ok. thanks!
what does doing this look like? the code im copying doesnt seem to have a key i can reference like just 'glass'
wdym
my understanding is the 'glass' in the first line is aking ownership of the glass cards code in card.lua
if im copying this bit of code wouldnt i need a string id referencing it
no you would also take ownership of glass too
what i meant is that you need to copy that code for them to work properly
and then do whatever specific effect you want
so id just copypaste this function and edit out the shatter check?
actually no the shatter check is the entire function
if you want them to never work yes
but if you want them to work normally then you need to do a check for your condition
for example if your joker makes glass not break then you would add not next(SMODS.find_card("key")) to the if
it basically makes a value and places it on the last one, then the value moves left, i just dont have a clue how to actually return the value in text with all the "+N chips"
so the function is meant to universally replace glass behaviour then?
so i wouldnt want to paste and edit it into the jokers code
can i see the code
exactly
hm
SMODS.Joker{
key = 'incomingbattlecats',
atlas = 'Jokers2',
rarity = 2,
cost = 5,
unlocked = true,
discovered = true,
blueprint_compat = false,
eternal_compat = false,
perishable_compat = true,
pos = {x = 5, y = 2},
config = {extra = {effect1 = "none", effect2 = "none", effect3 = "none", effect1r = 0, effect2r = 0, effect3r = 0,}},
loc_vars = function(self, info_queue, card)
if card.ability.extra.effect1 == "none" then
c1 = G.ARGS.LOC_COLOURS.inactive
goto c2check
elseif card.ability.extra.effect1 == "money" then
c1 = G.C.GOLD
goto c2check
elseif card.ability.extra.effect1 == "chips" then
c1 = G.C.BLUE
goto c2check
elseif card.ability.extra.effect1 == "mult" then
c1 = G.C.RED
goto c2check
end
::c2check::
if card.ability.extra.effect2 == "none" then
c2 = G.ARGS.LOC_COLOURS.inactive
goto c3check
elseif card.ability.extra.effect2 == "money" then
c2 = G.C.GOLD
goto c3check
elseif card.ability.extra.effect2 == "chips" then
c2 = G.C.BLUE
goto c3check
elseif card.ability.extra.effect2 == "mult" then
c2 = G.C.RED
goto c3check
end
::c3check::
if card.ability.extra.effect3 == "none" then
c3 = G.ARGS.LOC_COLOURS.inactive
elseif card.ability.extra.effect3 == "money" then
c3 = G.C.GOLD
elseif card.ability.extra.effect3 == "chips" then
c3 = G.C.BLUE
elseif card.ability.extra.effect3 == "mult" then
c3 = G.C.RED
end
return {vars = {
colours = {
c1,
c2,
c3
},
card.ability.extra.effect1, card.ability.extra.effect2, card.ability.extra.effect3,
card.ability.extra.effect1r, card.ability.extra.effect2r, card.ability.extra.effect3r}}
end,
calculate = function(self, card, context)
bctable = {
"chips",
"money",
"mult",
"none"
}
if context.setting_blind then
card.ability.extra.effect3 = card.ability.extra.effect2
card.ability.extra.effect3r = card.ability.extra.effect2r
card.ability.extra.effect2 = card.ability.extra.effect1
card.ability.extra.effect2r = card.ability.extra.effect1r
card.ability.extra.effect1 = pseudorandom_element(bctable, pseudoseed('incomingbattlecats'))
print(card.ability.extra.effect1)
if card.ability.extra.effect1 == "chips" then
print("cve1")
card.ability.extra.effect1r = math.random(1, 350)
elseif card.ability.extra.effect1 == "mult" then
print("muve1")
card.ability.extra.effect1r = math.random(1, 50)
elseif card.ability.extra.effect1 == "money" then
print("move1")
card.ability.extra.effect1r = math.random(1, 25)
end
end
end
}
i will check the code in a bit because I'm on my phone but you should return colours last
i think
in the smods in-game mod list how do i get my mod to show up on page 1? i dont know what its sorting the mods by
then im just back to square one arent i? all im doing is moving a function from SMODS to my own mod
Hello, I am new to balatro modding, and lua. I have checked some tuto and read through many mod Source Code. And I don't know why m'y joker dosen't work. If any body could help me, it would be really cool.
having a config > priority > alphabetically iirc
fellas i gotta say im never coding a deck on adderall again
ante 8 boss is a solid fucking 20 billion
easily doable if you fix your deck tho
this is a WHOLE NEW GAME BRO
goes from "what jokers can get me flat mult"
to "I NEED X MULT, TAROTS AND PLANETS NOW."
- chip and +mult jokers are entirely useless lmfao
but you need to add the extra logic for your mod
thank you :>
lol "Full Dick"
texture pack lol
can i see the description text in the loc file
whats the code?
SMODS.Joker{
key = "j_jpp_debtcollector",
loc_txt = {
name = "Debt Collector",
text = {
"Gives you {C:white, X:mult}X3{} Mult",
"for each {C:money}-1${} you have in bank."
}
},
atlas = "Jokers",
cost = 4,
rarity = 2,
unlocked = true,
discovered = true,
blueprint_compat = true,
eternal_compat = true,
perishable_compat = true,
pos = {x = 0, y = 0},
loc_vars = function(self,info_queue,center)
return {vars = {center.ability.extra.Xmult}}
end,
calculate = function(self,card,context)
if self.debuff then return nil end
if context.joker_main
if G.GAME.dollars < 0
return {
card = card,
Xmult_mod = 3 * (G.GAME.dollars * -1),
message = 'X' .. 3 * (G.GAME.dollars * -1),
colour = G.C.MULT
}
end
end
end
}
yeah, thats the whole thing im here for to start with 
whats the issue or error its giving you?
now that ive got the code in my mod i can disable it from within the joker?
Ahh.. i already shut my pc off..
It was basically
{V:1}#V:4#{}...(V:3}#V:6#{}
(I know #V:N# doesnt work im more or so just trying to find out how to make #1# refer to the value and what type of resource it js)
The joker dosen't do what it is supposed to. When I have -1$. M'y joker dosen't add X3 mult.
no crash or anything
when you score a card it just
doesnt do anything?
Exactly
go ahead and do me a favor real quick and run this yeah
im suspicious of the Xmult_mod
you want something like this
--- description
{
"Effect 1: {V:1}+#4#{} #1#",
"Effect 2: {V:2}+#5#{} #2#",
"Effect 3: {V:3}+#6#{} #3#",
}
-- loc vars
loc_vars = function(self, info_queue, card)
local colours = {}
for i = 1, 3 do
if card.ability.extra["effect"..i] == "none" then
colours[i] = G.ARGS.LOC_COLOURS.inactive
elseif card.ability.extra["effect"..i] == "money" then
colours[i] = G.C.GOLD
elseif card.ability.extra["effect"..i] == "chips" then
colours[i] = G.C.BLUE
elseif card.ability.extra["effect"..i] == "mult" then
colours[i] = G.C.RED
end
end
return {vars = {
card.ability.extra.effect1, card.ability.extra.effect2, card.ability.extra.effect3,
card.ability.extra.effect1r, card.ability.extra.effect2r, card.ability.extra.effect3r, colours = colours}}
end,
SMODS.Joker{
key = "j_jpp_debtcollector",
loc_txt = {
name = "Debt Collector",
text = {
"Gives you {C:white, X:mult}X3{} Mult",
"for each {C:money}-1${} you have in bank."
}
},
atlas = "Jokers",
cost = 4,
rarity = 2,
unlocked = true,
discovered = true,
blueprint_compat = true,
eternal_compat = true,
perishable_compat = true,
pos = {x = 0, y = 0},
loc_vars = function(self,info_queue,center)
return {vars = {center.ability.extra.Xmult}}
end,
calculate = function(self,card,context)
if self.debuff then return nil end
if context.joker_main then
if G.GAME.dollars < 0 then
return {
card = card,
Xmult_mod = 3 * (G.GAME.dollars * -1),
message = 'X' .. 3 * (G.GAME.dollars * -1),
colour = G.C.MULT
}
end
end
end
}
fixed it!
you were missing some "thens"
here
yea no that works, i forget if its xmult or Xmult lol
i would heavily encourage you to install VSCODE and the LUA extension, it catches silly errors like this
If it work. Thanks you are my savior.
its X_mult_mod
test it
Thx for the recommandations.
mhm nw
it is?
I cant do that just now, I will do it later. But thx a lot.
i just use Xmult =, its a solid
Xmult_mod mult_mod chips and Xchips
any work i think
john smods is my goat
@john smods
what we think chat
iridescent is my modifier sorry
"1.7X Chips"
interesting
but why is irisdescent slightly more powerful than polychrome
is there a difference in rarity
true. since its all multiplication and the scoring is multiplication too, it is just better than poly
and also take into account that there are vastly more sources of chips than mult
yep
foil is 50, holo is 30, poly is 5 irid is 3 neg is 3
understand that xchips is EXACTLY the same as x mult lol. except plasma deck
they're roughly equivalent, but it really depends on the environment
like again, chips starts higher, there are more sources of chips than mult
etc.
@red flower is this correct 
say we score a flush for 200 x 15 mult
x2 chips is 400 x 15
x2 mult is 200 x 30
it would only start mattering if you had them in hand
even if we had a +100 chip joker putting an iridescent joker right after him would not be exponentially stronger than say a polychrome joker
Commutive property of multiplication
this does get stronger with iridescent playing cards however, as all cards give chips, because of that playing cards have their own rarity
foil 50, holo 30, negative 8, polychrome 5, irid 2 lol
rate my joker idea
after two rounds, sell another joker to get one of the same or better rarity
1 in 10 chance to get nothing and for this to self destruct
i like the idea but the wording is weird
like how can it self destruct after being sold
i think just "1 in 10 chance to get nothing" would be better wording
descriptions have gotta be short you dont have room for redundancy
other joker
you sell a different joker
oh
for some reason my mind skipped that word entirely
in that case, it feels a little strong and would probably increase the chance a bit
a little awk, seems like a worse invis joker,
i would rephrase it and clean it up
Joker: After 2 rounds, selling a different joker has a 9 in 10 chance to give you a new joker of same or better rarity for the sold joker
This joker then Self Destructs.
oops all 6 would make it better instead of worse as well
since in your original design oops all 6 just would shaft bro
the thing I'm basing it off of does allow you to trade with it only once so it dying would make more sense
if it is a self destruct after one use then I would make it sell this joker and it would apply to the one to the right
as long as its put at the end it still is on par with poly (aside from the 1.7 not 1.5) same as if you had mult enhanced cards before a poly. As long as a multiplier is placed for scoring last that multi is added to the end game mult. Yes a higher base value before mult is better always, for chips and mult, but xchips is identical to xmult (aside from plasma) because its just a multiplier. x1.5 or x1.7 can be on chips or mult and do the same thing because chips and mult are also multiplied together.
The real value derived from irid is just being a 1.7 and not a 1.5.
and if there isnt one to the right, grab a random one instead
also is there some sort of system in place internally that sorts rarities by how much "better" one is
Help, how do I put this after black stake and before blue stake?
yeah
customs specifically
jokers have a number attached to their rarity
so
custom rarities are keys tho
atleast I think so
try above_stake = black
unless the mod has its rarity as a number, make your joker just give a different joker of that custom rarity and make the "increase rarity by one" only valid for vanilla tbh
so selling a cryptid epic would always give you an epic
type shit
that's just worse commit at that point
i set up a table for it which defines crossmod rarities in order for a similar mechanic
but yea if there isnt a system set up already ill just do that
then it finds the index of the next rarity using that
youre still gonna have to have a fallback which will be best as the original rarity but yea
doing it like this is pretty easy and allows it to work with modded rarities
you just need to get people to add crossmod or manually do it yourself though
@scarlet thorn next project should be an api that mods can patch into to add their own rarities and stuff
smods rarity stuff should just make you provide an order
that would get very messy very quick tho
ik lol
if everyone agreed to play nice it would work pretty well but i think some people wouldnt do that cough cough
nope
womp womp
may be smth like st_black
or whatever stakes prefixes are
is what correct
shit is not working
"Key prefixing is applied to applied_stakes and above_stake by default. If you want your stake above a stake from the base game or other mods, this can be adjusted by using prefix_config" ?
trying to understand whats the benefit of having a copy of the function in my own code. doing that enables me to refer to it inside my jokers right?
no, let me do a mock up rq
SMODS.Enhancement:take_ownership('glass', {
calculate = function(self, card, context)
if not next(SMODS.find_card("j_matador")) and -- wont be destroyed if you have matador
context.destroy_card and context.cardarea == G.play and context.destroy_card == card and pseudorandom('glass') < G.GAME.probabilities.normal/card.ability.extra then
return { remove = true }
end
end,
})
yeah
okay i think ive got it then
you can also change loc_vars to set the value in the description to 0 im pretty sure
thank you for tolerating me i appreciate it đ«Ą
check if G.GAME.jokers_sold is not nil before the for loop?
after local contained = false
unless I just can't find it there is no G.GAME.jokers_sold, it doesn't exist
i mean it works fine if cryptid is installed where i took the code from
is cryptid tracking it itself?
well, how do i add it?
hook to Game:init_game_object()
i'm certainly missing that G.GAME.jokers_sold thing
your problem is borrowing code from Cryptid - it's defined there but not your mod
what effect are you trying to achieve?
local igo = Game:init_game_object
function Game:init_game_object(run_start)
local ret = igo(self)
-- "ret" is the G.GAME variable
ret.jokers_sold = {}
-- make sure to return ret!!!!
return ret
end
oh wait i may've found it
.
look you can add it to your game object but that on its own obviously isn't going to do anything, there's no point telling them just that
ok 
thanks for that
yw đ
you would need to search on the cryptid github for "jokers_sold" and find everywhere that the code is handling it, and do the same. but often people who aren't experienced don't actually know what they need which is why before recommending going off and doing that it'd be useful to know what you're trying to do
it's called the XY problem
ok, it works, but the rarity check doesn't
it just adds every sold joker and no just commons
yeah the if should be an and not an or
oh right
Does anyone know is there some sort of frame counter, or some other way to tell how many frames has passed since between two points in time?
Don't have my laptop to look at the xode
At least not efficently
G.FRAMES.MOVE and G.FRAMES.DRAW seem to have frame counters
i dont know what the difference is because they seem to print the same number in game
anyone know how to change the text in the cashout screen?
what do i do to have a joker make a specific tarot card, currently have it just making a random one using similar logic to hallucination (without the booster pack thing obv)
you either need to patch the cashout screen code or hook localize so that name_text returns the correct text
i have this exact same problem in my mod : )
how do i do that?
you mean like this?
SMODS.add_card{ key = 'c_pluto', edition = 'e_negative' }
you need the consumable's key
https://balatromods.miraheze.org/wiki/Modded_Balatro_Wiki:Data/Vanilla_Consumables
this has all the consumable keys
This page is used to store vanilla consumable data to the Cargo table VanillaConsumables.
Smods.rarity?
thanks
this is how i do it
local localize_ref = localize
function localize(args, misc_cat)
local ret = localize_ref(args, misc_cat)
-- Remove color codes from info_queue tooltip names
if args and type(args) == 'table' and args.type == "name_text" then
if string.len(ret) > 2 and string.sub(ret, string.len(ret) - 1, string.len(ret)) == "{}" then
ret = string.sub(ret, 1, string.len(ret) - 2)
end
if string.sub(ret, 1, 3) == "{C:" then
local _, _, _, real_name = string.find(ret, "{C:(.*)}(.*)")
ret = real_name
end
end
return ret
end
do i put that after my dollar calc?
return 20
end, ```
no, you put it somewhere else in your main code, not inside the joker
ok but, before or after all my joker definitions?
both work
it worked, thanks!
Oh nice. I suspect it's just incremented ones for G:update and G:draw so they should be the same in normal situations
is there a way to check if i have a specific consumable
can i just do context.card.config.center.set == 'c_moon' for example
card.config.center.key
if card.config.center.key == "your_key" then
end
needs prefixes and stuff
ty
Hi folks! I got a bug report and sure enough, my config for my mod is defaulting all settings as 'unchecked', leading my mod to do basically nothing, lol!
Do you have default config.lua in your mod path?
Good question! I do define my config page in this config.lua file, which ends with a return block
Do you have DebugPlus?
I do!
how are you creating your config menu?
If so can you run eval SMODS.Mods.YOURID.config in the console
https://github.com/1RedOne/FickleFox/blob/master/config.lua
Here is my config file. Maybe I shouldn't be making the menu here as well?
I would try having that file be just the config table
Forgot the .config at the end but I cans ee the table its empty
But yeah I wouldn't put other kogic in the config
Weirdly, the value of .config was an empty table. Although when I manually changed a setting, the value was populated!
Ok, I think you are giving some ver good advice, Eremel and John, I will try it!
That was the fix! @rough furnace @wintry solar !
My config.lua now holds only that return table and I moved everything else into modconfig.lua, works like a charm!
can i debuff a hand (like how psychic prevents you from playing 4 or less cards) with a joker or some kind of other effect? I want to make a mechanic which, when triggered, will permanently apply a condition to your run that if met, debuffs ur hand
like it wouldnt be a joker doing this, it would be activating a consumable that sets a flag
for _, k in pairs(G.consumeables) do
if k.config.center.key == 'c_moon' then
moons = moons + 1
end
end
does that loop work for finding how many moon cards are in your hand/storage
if not is there a good way to do it
kinda just taking other logic and using it here lol
yea that might not work lemme see
I think you can use SMODS.find_card
anyone know?
like is there a place where the hand is played where I can hook in and set the hand to be debuffed
context.debuff_hand
your loc_txt needs a "label" property if i'm not mistaken
oh ok
ty
how do i make a joker trigger the effect of another joker?
does it matter where i put this function? cause ive got it at the start of the main.lua file and the glass cards are very much still breaking
Use SMODS.blueprint_effect
trying to make it so a joker wont appear in the pool if the check box in the mod's config is deselected,
this however crashes the game
is there a way to do this?
this doesn't require for the copied joker to be owned right?
i'll try it
oh i forgot to add what exactly the isaac config is (im also trying to do this without having to restart the game every time, unlike how i used to have it)
What are you trying to copy?
it shouldn't matter
for _, k in pairs(G.consumeables) do
local found = SMODS.find_card('c_moon')
sendDebugMessage("SMODS.find_card('c_moon') returned: " .. tostring(found))
if found then
moons = moons + 1
end
end
why does this return with 33 moons lmao
The key for your find card is wrong
How many consumables do you have?
i have a table of sold jokers and i want to trigger effects of jokers in that table
What exactly are you saving in the table?
joker keys
wdym? is it not just the joker key?
Yes but thatâs not a joker key, needs to be j_modprefix_key
oh
that makes sense
You can do this then
local calc = G.P_CENTERS[card.ability.extra.last_joker]
local ret, trig = Card.calculate_joker(card.ability.extra.last_joker_table, context)
if ret and ret.card and ret.card == card.ability.extra.last_joker_table then
ret.card = card
end
return ret, trig
I create a dummy table to act as the previous card, if you have lots youâll probably need to adapt it somewhat
so this should be correct then?
i put that in the calc function?
Yeah
because the glass cards are still breaking 
the lua gods striking me down for my hubris
Oh glass cards have their own check
they huh
Or it used to
their own check that isnt covered in
SMODS.Enhancement:take_ownership('glass', { calculate = function(self, card, context) if not next(SMODS.find_card('j_grat_abyssjoker')) and context.destroy_card and context.cardarea == G.play and context.destroy_card == card and pseudorandom('glass') < G.GAME.probabilities.normal/card.ability.extra then return { remove = true } end end, })
alright (where is state events)
Look in your lovely dumps folder
currently holding 2 moon cards, when i deleted 1 it still said 33
found it but i dont really know what im looking for
theres a thing about shattering in G.FUNCS.draw_from_play_to_discard that im not sure what to make of
uhh... where do i go from here?
it crashes as of now
I mean total consumables
how do i add a rarity to a joker besides the default common? cause the steam modded examples lists the code for it as just "rarity = (number)," but that isn't doing anything
Search for m_glass in that file
Hold on it looks like my code has something missing
yeah, local calc is not used anywhere
and you're checking ret.card twice for some reason
wait no
?
Huh
dw i fixed it lol
this is the file in Mods/lovely/dump/functions right?
Yeah
i was just dumb and was taking a table as a boolean lol
huh
whats the most efficient way to find the cards[index] index of self?
yay i figured that out (kinda)
Loop through it, and see if the value is equal to self/card
so
for i,v in ipairs(G.jokers.cards) do
if v == card then
ind = i
end
end```
truth
Can't debate that description.
-# that card, a joker, which indeed, executes, performs an action, an event, activates, gets triggered, when one finds themselves playing, in a run, making use of this program we call 'balatro'.
Yea
Why do you need the index
Not something that's all too valuable yknow
alright there we go
That's gonna be interesting to code...
now if i can only figure out how to make it actually pull from the 1x and 2x folder
yeah im expecting it to be probably too complex for where im at but i'll cross that bridge when i get there
average string.find(v, "{C:tarot}", nil, true)
Your rarity and atlas are inside your loc txt table
take them out of loc txt
ty
this right?
other end
yeah i realized woops
where is your syntax highlighting
i dont think so
ye and thats where you search for them
will G.GAME.current_round.current_hand.chip_total have the correct value during context.joker_main?
depends on when your joker triggers, so id say.. no its not a reliable source
i want to get the amount of total chips when the joker triggers
j_jimbotomy_nerd_joker = {
name = "Nerd Joker",
text = {
"{X:mult,C:white} x#1# {} Mult, {C:chips}+#2# Chips{}",
"if {C:chips}Chips{} are {C:attention}prime{}",
"{C:inactive}Debuffed if {C:chips}Chips{} > #3#{}"
}
},
pseudo bump so discord doesnt have to cry over scrolling and such
hello guys, does anybody know how can i make a joker retrigger itself like ten times and each time it multiplies the score with it's xmult value?
This might be the fact youâre using a very generic name for your config
Lmfao. I fell asleep shortly after this. Unfortunately my ear hurts more shson now and I lowlry miss being drunk from lack of sleep
should i change the name of it then to like hyperconfig or something
Iâd do Hyperglobal = SMODS.current_mod and then use Hyperglobal.config
this code no workie :/
im trying to make a joker that removes all stickers from the joker to the right on selecting the boss blind but this crashes on 1455
oh and
No not the second line
did you mean within the in_pool
Everywhere
how everywhere is everywhere
Wherever youâre trying to refer to your config
ohhh everywhere in the JOKER (in this case)
can this be used to modify collection appearance (like true or false)
example:
or will it just have to always be shown in collection
what is mod_mult()
inject = function(self)
if not Buffoonery.config.show_spc then
SMODS.Joker.super.inject(self)
G.P_CENTER_POOLS.Joker[#G.P_CENTER_POOLS.Joker] = nil
else
SMODS.Joker.super.inject(self)
end
end```
From buffoonery
On the joker object to be clear

howwould i do the thing that trading card / invisible joker does with my own joker
like, the "ok! i'm active"
Yeah you could do it that way, it does require a restart though
I presume it's loc_var stuff?
the very thing i was trying to remove,,
You should be able to add a function to your toggle though that iterates over your set of disabled jokers and toggles their no_collection flag
Oh... that's silly imo
i have a lovely patch that i am using to give 2x mult at the final scoring step, but idk how to have it actually play the animation
Whatâs your effect coming from?
Requiring restarts is fine if not preferable for configs imo. I dung trust them without restarting anyway
its a one time use consumable that sets a flag
how would it be that
