#💻・modding-dev
1 messages · Page 351 of 1
ive tortured people here with my genius brainfarts before, its fine lol
Now this is weird!! the same GSLS shader which makes a cool 'snow' looking affect in GSL app results in an upwards falling snow when I implement it in game. No idea how I am flipping the time value
What is this site even,
Who the hell is mirroring smods updates but not doing it automstically?
i also was trying to make glass cards not shatter earlier so i'm glad to see this in chat lol
win
happylandeline my beloved
every time you type i think its someone i have blocked lol
You did not answer my question. What he hell even is that she eh aren't hot just using github?
because of your name
?
🐈
my name has led to so much tomfoolery in the past
especially from people typing "@invalid-user"
is there a way to know the area a card is in just from the card itself, without needing to use for loop through all the cardareas manually?
Were my typos that hard to understand?
card.area
oh sick, thanks
"She eh aren't hot" 😭
How do I give myself a joker using debug plus?
Hold CTRL and press 3 when hovering over one in Collection.
go to the collection, hover over a joker and hit 3
collection, press 3 as you hover on a joker
oh my god
Huh I just didn't recognize that one screen
The latest dev release button on the wiki should slso redirect too the same place as the green code button
For reference
What are you working on N?
Anyone able to point out what im doing wrong here? Im trying to make gold cards give 1.25X multi and it keeps showing up as nil
im still lost at making a mod that just changes the playing cards picture, i want to use images ive already have downloaded, anything would help
just playing cards?
yes
context.individual doesn't go over the jokers.
cardarea has to be G.hand, like I wrote before
and value has to be the value you want (card.ability.extra.Xmult)
i asked earlier and the person who had linked a post didnt help really it just confused me more
did the G.hand and conditions. ill try the value thing rq
tried to switch value, still nun so far
oh it shows up as nil in the description?
yes, and in fuctionality
it's because loc_vars says mult instead of Xmult
oh
this should solve the functionality part
is this what i should do to make it so that negative jokers give one extra slot after a negative joker is sold?
there's an example here, idk how much it will help https://github.com/Steamodded/examples/tree/master/Mods/DeckSkinTemplate
why do you do the substraction when it should always be 1
i tried
but its creating permanent joker slots even though all the negative jokers are sold, for some reason
yeah thats what change_size does
when negative cards are destroyed, they should reduce the area's size by card.edition.card_limit, right?
thank you hopefully it does cause this is going to be my first time making a mod
they should but negatives are wonky
thats without change_size?
it still has the change_size code
i would try without it
also what do you recommend to use when writing the code
visual studio code
thank you
this is without change_size, after selling 3 negative jokers
so it should look like this right, because i feel like im doing sum wrong?
looks ok to me :3
G.hand not G.jokers
ohhhhhh
Where is it located and how to create your own, does anyone know?
maybe the -1 is not removed
ok fixed
did it straight up ignore the first -1??
I want to create my own effect and I wanted to learn from this example
is there a context for when xmult triggers? i think the wiki said something about if context.post_joker then but im not sure if that’s correct
okay, so theory:
having only +1 joker slot somehow makes it so that the joker slots arent reduced by 1, somehow
oh you can look at it in the code for the game inside card.lua but I'd recommend going through the thread bepis linked you first
i love
knowing how to code
idk what is going on with my code either
i forgot font again
thats for editions
try context.post_trigger
n will this break anything
my heart
ok fixed the font for real
and localize "name_text" might be weird in tooltips and end of round dollars
it works properly when you have less than 3 negative jokers??
wait
do i
need to use events?
ok so i got visual studio code installed now what do i do next exactly
WHAT
you dont need to shout
so at the moment this isnt crashing, but I accidently broke this and I dont know where to go from here
me but when driving
\
this doesnt look right
oh wait i dont think Xchips works
its all in the config, just seperate lines
yeah it doesnt work like that either
no i mean Xchips literally
fixed
okay, so
both jokers have +2 joker slots, if i sell one then joker slots decrease by 2, the other increases by 1 so that all adds up to -1 joker slot
why
im still lost, where do i start on visual studio code
this will activate anytime a joker triggers though, i just want it to activate on xmult
it's helpful to get some lua extension and then add the lovely dump and smods to your workspace so everything shows up in intellisense
that also lets you look up game code much faster
ok
check context.other_ret
inside that context
ok so ive gotten lua extension and how would i add the lovely dump and smods
in the file menu there's an option to "add folder to workspace"
now it never triggers. did you mean check both contexts at once?
or you can use ctrl-shift-p and type "add folder to workspace", peobably
Lmao it's true
How many jokers have misspelled keys? I know that's not the only one
caino
caino
Lol I know that one
consumeables
ill have a look
lemme look at the whole localization file rq
Though in his case wasn't his whole shit originally mispelled?
heirophant instead of hierophant
i think so(?)
@red flower in the next smods update will there be a better way to force draw cards to hand from deck?
ive done what you said but when i did, a file popped up named balatro and when i opened it two more files had shown up, one named FileContentIndex anf the other v17
when are we getting j_séance
True...
true...
what do i do now
Do you know about G.FUNCS.draw_from_deck_to_hand() ?
What I don't get is why when it was discovered other things were misspelled with him thunk didn't do a find and replace
Or maybe be thought it was just his nameplate
speed tag is tag_skip
Which I'm pretty sure did read caino at some point
yeah but I rly don't understand it and I couldn't get it to draw specific cards, ghat being said I have used it in the past to draw every card from deck
@carmine burrow what do i do now, ive also gotten the un ziped files for both lovely and smods
overstock is v_overstock_norm which is.... weird
You can always make a new func similar to it but make it draw specific cards, say from its parameter for example
did you follow the instructions for getting steamodded running?
yeah ive had gotten steammodded running, i have a few mods from nexus installed already
All of the challenge names have a _1 at the end (there are no _2s or _0s)
in context.post_trigger, context.other_retr has the return of the other joker, so you need to check xmult there
now what cause when i had done what you said earlier a file named balatro popped up and when i opened it two more files showed up
not as far as I know, you need to make that yourself
if you're making a mod, here's the general idea:
- try running modded balatro
- make a folder in Mods for your own mod, add the config and some empty lua file
- open your mod's folder in vscode, then add the lovely/dump folder and smods folder to the workspace
(both of which are also within Mods)
Why doesn't the game let me have a $0 buy and sell value consumable?
I set cost = 0 in the code but ingame it showed up as costing and selling for $1
ive made a folder and where do i get the config and the empty lua file
I code it in Notepad++ because I'm cool 😎
the empty lua file you can just create -- there's a "new file" button in the vscode explorer and you name it something.lua
the config is a json file, you can find the format on the smods wiki
ok
is this right before i do anything else
have you tried running steamodded? if it worked, where is your Mods folder?
if it didn't work, i think the mods folder is supposed to be in appdata
ok
like this, ive made a folder and i opened it and then i created the empty lua file
so within the mods folder you have
- smods
- lovely
- your mod
?
you shouldn't have to have anything near the balatro exe open in vscode
you can check that your mod is configured correctly by typing some random gibberish in the main lua file and making sure that it crashes when you run lovely
(there are better ways of doing this)
I have this (took the code for diploplia on function Card:shatter() from jen's almanac and arrenged it to only apply on playing cards). Playing debuffed glass card that have been saved once in a previous blind, and that should be saved once again when debuffed shatter doesnt neither put them in discard pile no in hand; it keeps them in the middle on the screen, disabling consumeables use, boosters card selection and hand playing. Any idea?
local shattered = Card.shatter
function Card:shatter()
if next(SMODS.find_card('j_sdr1_stamp')) and self.playing_card then
if self.area then self.area:remove_card(self) end
if not self.added_to_deck then self:add_to_deck() end
local still_in_playingcard_table = false
for k, v in pairs(G.playing_cards) do
if v == self then
still_in_playingcard_table = true
break
end
end
if not still_in_playingcard_table then
G.playing_card = (G.playing_card and G.playing_card + 1) or 1
table.insert(G.playing_cards, self)
end
local seals = {"Red", "Blue", "Gold", "Purple"}
local random_seal = seals[math.random(#seals)]
self:set_seal(random_seal)
G.hand:emplace(self)
return
else
local sha = shattered(self)
return sha
end
end
in my mods folder its lovely, smods-main then my mod
it is in appdata, when ever i add a new mod i hold the windows key and R and i have %AppData%/Balatro/Mods selected
I mean the dump is the balatro exe unpacked, reformatted and injected tbh
yeah that seems right
do you want me to show a sceenshot of the screen when it crashes
this is what shows when it says it crashed,
I have a thing that returns played cards to hand but idk if to deck requires something else
damn
Is your assets folder capital or lowercase a?
download more ram I suppose
Nah it's a problem with getting the asset
i dont have an assets folder i was told to make an empty lua file and get the smods config
okay if you want to include images it needs to be in assets folder
That should be fine. What's in those? If you're not including images yet
i was told to type gibberish so i did
Uh... send anyway
Accidentally turned off ping
i dont even know where exactly to get the smods config i was told to look at the wiki but idk what to look for exactly
this is my first time trying to make a mod
do i copy and past the first set of code in the empty lus file?
The code goes in the json
The lua file can stay empty
And you don't need the header that would go in the lua
For the metadata I mean
The lua is where your mod will go
ok and where do i get the json
you make it? it's just a text file like a lua file
ohh
the wiki page says what to put in it
do i need the json extension?
or no?
cause i was told to get the lua extension, thats it
does anyone know how to add debuff immunity to a joker's ability? i want to make a joker that makes Diamond cards immune to debuffs
I mean it's just a little metadata file
no need for it to really be open in vscode once you make it
Look at how fluorescent works in Bunco
that applies to the playing card or joker its own itself though
there is a voucher in betmma's that makes wild cards immune to debuffs
so that may be helpful too
I tried to code in a challenge but it crashes whenever I click on it, any idea what I messed up?
j_burglar
what's "thesun"
custom joker added by my mod
in that case the key should be j_[prefix]_thesun
where prefix is the prefix you defined in the mod metadata
is the prefix just the mod id? or is it meant to be something else in the metadata cause its still crashing
oops not meant ot be the same image twice
it's a thing in the json you're supposed to define
it's mod prefix
Yeah I just meant as a starting point. Any effect a card applies to itself it could apply to another card instead
my mod doesnt even have a json so thats probably my first problem @_@ all the settings for stuff is at the top of the lua file but i should know how to give it a json
https://github.com/Steamodded/smods/wiki/Mod-Metadata
it's explained here
and once you do you can erasethe header
yeah, fair
can't get the blueprint compat text to show up right here, i couldn't even find a G.FUNCS.blueprint_compat anywhere which is presumably being called
this happens when you haven't paid your taxes yet this year
function Card:set_debuff(should_debuff)
if #SMODS.find_card('j_jen_dandy') > 0 then
return false
elseif (((self.config or {}).center or {}).debuff_immune or (((self.config or {}).center or {}).rarity or 1) == 6) and should_debuff == true then
card_status_text(self, 'Immune', nil, 0.05*self.T.h, G.C.RED, nil, 0.6, nil, nil, 'bm', 'cancel', 1, 0.9)
return false
else
csdr(self, should_debuff)
end
end```
would somehting like this work for debuff immunity? this is a snipped from Jen's Alamanc/Polterworx
wait i found the issue i think
bump
what if i havent for the last 6 years
isn't it just a bool on the other joker?
{n=G.UIT.C, config={ref_table = card, align = "m", colour = G.C.JOKER_GREY, r = 0.05, padding = 0.06, func = 'blueprint_compat'}, nodes={
the thing called here?
oh you mean the loc text I guess
fair my b
I was thinking you couldn't read the value not that you were looking how to display it
I can't read sometimes
yea i can't display it at all
I mean... couldn't you just use your own loc vars based on the value either being true or false in the joker definition?
there's a good chance I'm missing something of how this works
🔪
honestly same blueprint's code seems really hard to look into, some values seem to just not exist at all somehow
D:
but they said its non taxable..
your life is taxable
how do i file taxes
i think the old jokjer template i used is finally catching up to me but it was working just fine before i did the metadata
i found it
it's also why it wasn't displaying everything, it did stuff that's important for blueprint's display
Someone will need to explain to me why you can't just read the other joker's blueprint_compat value and change a loc var based on it, and be done with it
the other joker might not exist
thst just seems like another case for your loc_var though?
fair yea
@hushed field you're around and a competent modder, maybe you can help explain why it doesn't seem to be the way people do it
seems like the way I'd do it, but there's probably some reason it wouldn't work
vanilla does it that way is because of bp/bs chains
oh i see, so like... it passes through
yeah i forgor that
makes sense
Hmm?
what's the code within blueprint? like for making the compatible/incompatible box
i know vaguely how luchador's works since i've stolen it a few times
all in generate_card_ui iirc
what's the code for making the box though?
nvm
could you screenshot the thing if it's easy to find? i don't currently have access to the game's source code
(phone)
keep an unzipped copy of the game's exe on your phone like i do :P
whoops. sorry
reading code on mobile is inconvenient as hell anyway
i haven't found it too bad as long as i'm using a text editor with find
vscode on mobile when
tru
is anyone able to help with this 🙏
Nah 🔥
Its spelled true
Can you tell me what the problem is?
don't try to code like vanilla
and then what do we do?
tbh I'm not exaclty sure, but I know I should be seeing more smods stuff and you should be testing by the key not the name
card instead of self
are you actually editing the game's code to add your joker...
good luck distributing that
ok i must have misread
If you know how, tell me, and keep your sarcasm to yourself, smartass.

what sarcasm?
ok so
you don't need self.ability.name
In fact, I originally asked what's wrong with it. If I knew, I probably wouldn't have asked.
can someone help me with making ui
what is the card supposed to do and what's not working
I wanted to make a DNA joker, but with my own values.
you don't need to check if self ability.name is Ethan
What's the code for the entire joker
not just calculate function
This page is a good place to start to understand some of what's going on (though admittedly it's a bit confusing)
https://github.com/Steamodded/smods/wiki/Calculate-Functions
This is another good starting place to show you practical examples
https://github.com/Steamodded/examples/blob/master/Mods/ExampleJokersMod/ModdedVanilla.lua
crashing, not sure why
did i mess up context checks
where would i store the total mult score value pre and post all addition triggers in terms of files? so i can track when to trigger an unlock
If so this would not be the first time I saw it done!
If you add a joker, the best way to do it is with steammodded, in those jokers the calculate block is already being processed so you don’t need to check the card name
The card name is how vanilla works but it’s not the right approach to follow for modding
I would recommend you take a peek at extra credit or neato jokers, both are mods that are super easy to understand and you can copy and paste them to have a quick and easy starter template for making a mod
Is erplace a function
That's exactly why I asked about it, I wanted to make a joker like DNA, no luck yet
So you can remove the “if card name ==“ piece and after you fix the typo (erplace, probably should be emplace), you can give it a shot
the unlock in question btw (i can probably do some if var1 - var2 >= 7 then unlock the card or whatever but i dont know if it would get called in the main file, and if it did what would i call it under
loc_txt? Dude, it's SMODS thing
https://github.com/Mills-44/FusionCookbook/releases
Offical Release of 1.0.0 enjoy 🙂 lots more to come
it's a sarcastic joke
I use localization entry all the time
it's a lot easier to manage
Should prolly ask a question here, since Axy's been stuck on this for a bit
Go ahead
yay
Congratz with first contribution
Among many other things, the Joker Axy wants to make wants to replace the cards in the next shop with either a negative Joker or a polychrome 2. SMOD's add_card function wants a key to specify a specific card, but after printing out each card's config table it seems like all base cards share the same key, c_base. Am not sure how to generate the right base card, nor how to add it to the shop with the appropriate buttons for the shop. Assuming it's related to the functions\button_callbacks.lua file, but haven't had a look at buttons yet.
don't use pseudoseed with os.time(), it makes this ckeck inconsistent
how do i get the level/value of chips and mult of a hand?
Here's the list of things this mess of a card is going for. I'm using os.time() because the person who wanted this wants the same percent chance for each item in this list, but also wanted to reload the game and have it act differently, so I can't use seeds like with pseudorandom.

And yes, this also means a lot of back and forth with the requester, refining the requirements since they didn't entirely think this Joker through.
-# legendaries aren't meant to be free wins 😭
Aiko, your mod is an inspiration btw. Amazing coding with the wordle stuff
Axy's been kinda using this channel as a reference for things, with heavy use of Discord's search, and your mod was one of the things Axy read
And yeahhh... this mod is mostly so the people involved can see themselves in Balatro, and isn't balanced at all
that joker is absolutely criminal with oops all 6s
Yuuup
Idk who are you but I love your mindset
lmao xD
...Axy should probably post the Github and our list of stuff, huh
Tony: Create a Negative Spectral if played hand contains an Edition and an Ace
Axy: [Handled by themselves.]
Stick: If played hand contains a Straight, scored cards gain a random enchantment and this joker gains +x0.5 Mult
Bread: Each drawn card has a 1 in 3 chance to permanently double its chip value
Qui: Each scored Seal card creates a random Seal card, get 3$ for every Diamond drawn
Fumi: This Joker is always Negative, Gives a Negative Tarot corresponding to the sum of ranks of hand played
Hanya: Unmodified playing cards... [???]
Ado: Gives 1X Mult for every red character on other Jokers, 1 in 3 chance to retrigger when Hearts are scored
Bentux: All rare items and outcomes become common, and vice versa
Zonathan: [???]```
1 in 2 chance to replace all sound effects to "Travis scott falling off stage in london"
Ado seems interesting
Ado?????????????????????????????????????
how are you handling other languages
Not sure which function will hook into description boxes
✨🧟♀️💃🧟♂️‼️食らっちゃいな‼️🧟♀️💃🧟♂️✨
2023.9.6 Release「唱」
Streaming & Download
https://ado.lnk.to/showID
歌い方呪文
https://89.gigafile.nu/1228-d8ab355f03d56a126c1c1498136fe00ee
ユニバーサル・スタジオ・ジャパン「ゾンビ...
good luck
Ado
is this supposed to be a vanilla+ mod btw
i think you can obviously tell that they aren't meant to be
^mult
Axy's mostly done with Nyala, Tony, Stick, Bread, Qui, and Fumi. Dunno how to handle Ascended hands with Nyala, or like... a way to simulate whether a planet would upgrade a hand, then add that to a dictionary to trigger if that hand is played and that planet is in the consumables list.
Been faking it with a manual list of key-value pairs, like so:
you could look at Blue Seal
But this obviously wouldn't work for any planet, which is bleh.
To generate playing card use create_playing_card, proper buttons will be placed automatically according to card area
how easy is it to modify the base game with a mod?
for example change the wheel of fortune's rates to 1/3 instead of 1/4
take_ownership lets you modify vanilla objects
hm?
Use take_ownership and you'll be fine
anyone know how I can avoid this error?
check v.edition first
v.edition and v.edition.foil
you also don't need the "== true" because of how booleans work
Is there a way to make a joker have a multiplier of chips?
xchips
but how do i edit the description of the wheel of fortune?
can i see how the code looks like now
use a localization file and use wheel of fortune's key
localization/en-us.lua
I saw a list on Reddit of must play mods and Joyous Spring was on it!
did it have cool edited images?
SMODS.Joker{
name = "Midas Prime",
key = "Midas", -- this is the key that we will use to tell the localization what joker to add the text and name to
pos = {x = 0, y = 0}, -- this is the position of what sprite the joker will use, and this is the top left cornor of the sprite sheet
rarity = 4, -- this is what determines the rarity of the joker (1 = common, 2 = uncommon, 3 = rare, and 4 = Legendary)
atlas = "Lead", -- this is the key that determines what atlas the joker will use, this is the same as the key in the atlas function in main.lua
config = { extra = {Xmult = 1.25, {Xchips = 1.25} }, -- the config is used to make basic effects for our jokers
cost = 6, -- this is the cost of the joker in the shop, and its sell value is half of what the cost to buy is, so this joker would sell for 3 dollars
loc_vars = function (self, info_queue, center)
return { vars = { center.ability.extra.Xmult, center.ability.extra.Xchips } }
end,
calculate = function (self, card, context)
if context.individual and context.cardarea == G.hand and not context.end_of_round and SMODS.has_enhancement(context.other_card,'m_gold') then
return {Xmult = card.ability.extra.Xmult, Xchips = card.ability.extra.Xchips}
end
end,
}
}
whoops
hol up
Figured the else would work instead but that fixed it thanks!
like i said, "Xchips" doesn't work for some reason
use "xchips"
thanks!
it should also be config = { extra = {Xmult = 1.25, Xchips = 1.25 } },
'x_chips', 'xchips', 'Xchip_mod', these are the valid xchips keys#
Got it, thank you. I'ma try that rq
like this?
Sorry that I did not pay attention before, was extremely sidetracked with school work
yeah
heres what it looks like, still is crashing
you need to either hard code the 3 by doing #1# in 3 (without #)
or take_ownership of wheel of fortune and change the loc_vars
how do i do that?
whats the crash
Doesn't crash, but doesn't function at all
KITTY
Well... it's getting closer now. create_playing_card seems to make copies behind the current card.
It would be nice if Axy could like... read the decompiled code after all TOML patches and hooks are applied, instead of trying to divine what's happening or how functions execute code when all the mods are layered over each other. Not sure if that's possible using Steamodded/DebugPlus/Balamod, or some other tool.
kibty
does it give xmult at least
Still no, it did work when I tried it with only the mult
You can. Mods/lovely/dump contains code with all patches applied
If you need change base of created card, use Card:set_base
WAIT NVM
did you forget to restart a run
Had to reload the game and resummon the joker
yeah
Yeah
Time to have that open as a workspace instead of these other ones, perfect
how do i find the key of stuff?
game.lua or the localization files
so in this case would it be bl_wheel?
no thats the blind
Check dm
yeah
remove calculate and cost and add loc_vars
and what do i do with loc_vars?
loc_vars = function(self, info_queue, card)
info_queue[#info_queue + 1] = G.P_CENTERS.e_foil
info_queue[#info_queue + 1] = G.P_CENTERS.e_holo
info_queue[#info_queue+1] = G.P_CENTERS.e_polychrome
return { vars = { G.GAME.probabilities.normal, 3 } }
end,
something like that
nice
this is so cursed
Okay this may sound a bit crazy, considering I did just get everything working because of your help specifically. Would there be a way to scale the multiplier?
j_jimbotomy_house_of_cards = {
name = "House of Cards",
text = {
"{X:mult,C:white} x#1# {} Mult,",
"once per {C:attention}Ante{}"
}
},
what context do i need to use in calculate to detect when a new ante is reached
how do you want to scale it
I was thinking based off the money the player has
Like it would gain .1X for each 25
your loc_var thing is a function
you can do whatever in it
calculate the mult inside function and return the said calculated value in that table
hi void
Okay, that makes some sense
hi mr n
How would I check for money?
G.GAME.dollars
api call into the players bank account
not exactly the same but "if G.GAME.blind.boss then" will check for the boss of each ante
Hi N! How are you doing?
So would I create a new line under loc_vars?
ok
so would i like, do context.end_of_round with that?
something vaguely like this
loc_vars = function(whatever)
local xmult = (thing that calculates mult based on money)
return { vars = { xmult, card.ability.extra.othercrap } }
end
Okay, I should be able to do that
sure you could add "and context.end_of_round" to it
I did a mod just like that, but with just lovely, all I had to do was to change the extra, in the config property and the translation worked fine
payload = '''
c_wheel_of_fortune= {order = 11, discovered = false, cost = 3, consumeable = true, name = "The Wheel of Fortune", pos = {x=0,y=1}, set = "Tarot", effect = "Round Bonus", cost_mult = 1.0, config = {extra = 3}},
'''
I agree, what I meant to say that it should only take modifying that field, config.extra, so translation is properly applied. That field is passed as a parameter to the UI
how would i change the 8 ball rates?
anyone know how to make jokers Unique like in Polterworx? I want it so that only 1 copy can exist at a time
My general rule of thumb is to check how the game does it. I recommend you use VS Code if you're not using it already. In it you can use ctrl+shift+f to search for any text on the current open folder. Make the balatro source avaiable in this folder, alongside with your mod folder.
After you find how the game use it, you can alter the behavior with smods hooks or with patching
can someone tell me the parameters of create_playing_card? i dont know the stuff beyond front and center
alrighty
can someone help me with ui stuff
i think you need to be more specific for people to know if they can help you or not
I want to make a button that appears in the bottom right when you start a run
I've tried a bunch of different ways but I don't know whats best
i did look at the code of 8 ball and i honestly still dont know how
there isnt even a 4 in the code there
which i'd expect since it's a 1 in 4 chance
oh its cuz variables individual to jokers arent in their ability scripts
8ball has its own variable in its config called extra
which is the 4 you see in the description
and the one used to make a 1 in 4 chance
not sure where those are stored tho
it would honestly be best if I could figure out how to make a uibox covering the whole screen and place the button in that box
this?
yerp
@daring heron, You actually found it. See the snippet (pseudorandom('8ball') < G.GAME.probabilities.normal/self.ability.extra). This is the same case as wheel of fortune. Take ownership of the object, change the config.extra to the value you want
the Extra is the denominator for the odds
oh my bad
i havent messed with take_ownership much
hm?
Just a sec, I'm gonna show you
alrighty
config = {
extra = {
x_mult = 5,
used = false
}
},
loc_vars = function(self, info_queue, card)
return {
vars = {
card.ability.extra.x_mult,
},
main_end = {
{
n=G.UIT.C,
config={align = "bm", minh = 0.4},
nodes={
{
n=G.UIT.C, config = {
ref_table = self,
align = "m",
colour = G.C.JOKER_GREY,
r = 0.05,
padding = 0.06,
func = 'blueprint_compat'
}, nodes={
{
n=G.UIT.T,
config={
ref_table = self.ability,
ref_value = 'blueprint_compat_ui',
colour = G.C.UI.TEXT_LIGHT,
scale = 0.32*0.8
}
},
}
}
}
}
}
}
end,
how would i go abt making this be like an active/inactive thing
the code in there right now is just copied from blueprint
SMODS.Joker:take_ownership('wheel_of_fortune', -- key of the object
{ -- table of properties to change from the existing object
config = {extra = 3}
},
false -- not silent | adds your mod badge to the object
)
This should do the trick for your first example, to change the wheel of fortune from 4 to 3 and apply proper translation. Likewise, you can do something very similar with 8 ball, since the chance is also in config.extra
not sure how the func key works
anyone know how to make it so that only 1 copy of a joker can exist? kind of like Unique jokers from Polterworx
...check how they did it
@daring heron If you want to take a deeper look: https://github.com/Steamodded/smods/wiki/API-Documentation#taking-ownership
yeah i saw that, but theres barely anything there
you kinda just take owenership and can then edit whichever values in the decelartion you want individually
thats the problem i have no idea what values i can chance and how
it's like making a new joker, but you only define what you're changing
ok @sturdy compass my crash
key = "bighand",
loc_txt = {
name = 'Big Hand',
text = { 'Play up to {C:attention}6{} cards a hand' }
},
atlas = "bighandsatlas",
pos = { x = 4, y = 0 },
redeem = function(self, card)
--Change highlight limit
G.GAME.modifiers.bighand_highlight_limit = 6
G.GAME.pool_flags.bighandsreal = true
-- Make new hands visible
G.GAME.hands.bighands_three_pair.visible = true
G.GAME.hands.bighands_flush_triad.visible = true
G.GAME.hands.bighands_flush_six.visible = true
G.GAME.hands.bighands_6oak.visible = true
end
}```
Yeah, but think in take_ownership when you need to modify something of the original object and don't want to meddle with patches. Notice that where you found the definition on the source code has a long list of objects and their properties? Well, smods provides an interface for that. Think about how you create a new object, such as a Joker, take_ownership has quite similar properties, those reflect the ones you see in this print.
Where are you initializing your bighand_highlight_limit? I'm assuming line 35 in your code is where you're setting that to 6, and if so the reason it's crashing is because that variable doesn't exist
thats in another .lua
line 35 seems to be
G.GAME.hands.bighands_three_pair.visible = true
you definitely do
if i delete the prefix from all of them the crash moves to At Launch and to the 6oak
idk why the 6oak specifically
is it possible to change this to just say "reworked" without making the mod name "reworked"?
i want the mod to still be called Balatro Reworked
actually what are the keys for the handtypes?
add display_name to your manifest
they have the prefix applied automatically
yea i figured
every time you call them after the declaration you need it
like here?
It shouldn't
wasnt sure if that was still the case if they were all in one file, so i tested removing them just to see what happened, then put them back
no, your json file where you put the name
speaking of this, I've noticed ooker hands not localizing a lot
the key likes to print instead
depending on the context
I don't know which mods or which objects
oh, well i want the name to still be "balatro reworked" everywhere else, just only "reworked" on the cards
english langauge word context not the technical meaning
you change the display name in the json, not the name
astra
Does removing the visibility changes at least run without crashing?
Also note that in my original example I used SMODS.Joker:take_ownersip("wheel_of_fortune"), because I copy/pasted, however for wheel of fortune you should probably do SMODS.Tarot:take_ownersip("wheel_of_fortune"), since it's a tarot card and not a joker
yeah
iiiiii will test that actually
If it does you should still be able to play the hands. Try playing one of them cuz I wanna know if it has something to do with the handtypes themselves
full house
i was able to buy it
will report back in a min
ack it doesnt let me select 6 cards 😔
why did you add a yee joker.
What do your patches for hand size look like?
If you don't have any patches for it I can provide one for ya
Is the Perkeo example from the smods example mod outdated?
No, it would be SMODS.Consumable
i think its pretty much exactly your one honestly
I got this crash
i wonder if i didnt Load it properly
version = "1.0.0"
dump_lua = true
priority = 1
# Change highlight limit to be mutable - copied from maximus
[[patches]]
[patches.pattern]
target = "cardarea.lua"
pattern = "self.config.highlighted_limit = config.highlight_limit or 5"
position = "at"
payload = "self.config.highlighted_limit = config.highlight_limit or G.GAME.modifiers.bighand_highlight_limit or 5"
match_indent = true
times = 1
[[patches]]
[patches.pattern]
target = "functions/button_callbacks.lua"
pattern = "if #G.hand.highlighted <= 0 or G.GAME.blind.block_play or #G.hand.highlighted > 5 then "
position = "at"
payload = "if #G.hand.highlighted <= 0 or G.GAME.blind.block_play or #G.hand.highlighted > G.hand.config.highlighted_limit then "
match_indent = true
times = 1```
I cannot for the life of me figure out why this joker isn't scaling, anyone know why?
I usually have problems with double quotes and multiline, most likely a skill issue, however I recommend to use triple single quotes instead
I'll take a look at this. I feel dumb for asking but where can you use the command apply?
not nil evaluates to true
you are checking if v.edition == true which it probably isnt
Oh nvm, the new line was from discord formatting
try v.edition ~= nil
there is a single card in the deck of each edition minus negative
This
I think I know the problem for this part. Since my method is done with a deck, it changes the highlight_limit for the card area before it's created. In your case I think you could forgo the global variable and change G.hand.config.highlight_limit = 6 in your apply instead
Meant to reply to this lol
ah sick ty
You do still need the second patch though
do i still need the patch at- ahh
I dont understand
should i delete that first patch then
Yeah you don't need that anymore
I'm saying you are checking if the v.edition is the boolean value true
you probably want to check whether v.edition is nil or not
two different things
I think I am the one who was confused gimme a sec to try the fix
The second patch is so the play button doesn't prevent you from playing more than 5 cards (because vanilla accounts for that for some reason lol)
v.edition == not nil does not chrck if v.edition exists
it checks if the v.edition value is equal to true
ah lol
I mean, wouldn't just if v.edition then -- not nil do it?
so wait am i doing This in the patch or in my voucher code
voucher code. Replace where you're changing your global variable with what I just provided
i mean... isn't tjat what if v.edition also does? idk how to check if bools exist
ok sick i thought so
👌
I think a false bool and a nonexistant bool might be the same in lua, lol
v.edition isntn a boolean im sure
One step at a time lmao
I mean if something is equal to either true or not then isn't it a bool?
unless it is somehow a boolean then i dont know
a table is not equal to true
a table exists
I just was going off what you said
two differenet things
ok i see
that makes sense ofc
I just assumed because not being nil was being equal to true that it'd be a bool. idk the codebase
sorry
I dunno lua specifics I assumed truthy things would be equal to true but turns out no
then yeah if v.edition might be the way
hmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmm
if something exists it tends to be regarded as true, unless its 0 or false or nil or empty, in which case it tends to be false
still cant seem to select 6 cards
this happens in other languages too
Inch resting
yeah i guess that makes sense
so 0 false nil and empty will be hard to seperate from nonexistent
Imma try to make a version of the voucher on my end to see what the issue may be
you shouldn't really be directly comparing to true anyway
well isn't is if x == true basically a synonym of if x in a lot of cases?
the latter i see a lot
no not really
== true would explicitly check if its a boolean true
if x would just check if thing is truthy enough
Oh my god
it's G.hand.config.highlighted_limit not G.hand.config.highlight_limit
that 'ed' just killed my soul
truthy/falsy values is a wacky concept but I lowkey love it lol
6 cards selected!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
Huuuge
im trying to make a joker that extracts various attributes from two playing cards to make a new one, but im having some weird results which shouldnt be happening and i cant tell why they are happening, im also getting some ghost cards of sorts in my hand/deck after the fact
SMODS.Joker {
key = "splicer",
config = { extra = { complete = false } },
unlocked = true,
discovered = true,
blueprint_compat = true,
eternal_compat = true,
perishable_compat = true,
rarity = 2,
atlas = "SnazzyJokers",
pos = { x = 4, y = 3 },
cost = 6,
calculate = function(self, card, context)
if context.before and #context.full_hand == 2 and G.GAME.current_round.hands_played == 0 and not card.ability.extra.complete then
local card1 = context.full_hand[1]
local card2 = context.full_hand[2]
local newrank = card1.base.id
if newrank == 11 then newrank = "J" end
if newrank == 12 then newrank = "Q" end
if newrank == 13 then newrank = "K" end
local newsuit = card2.base.suit[1]
local newcard = create_playing_card({front = G.P_CARDS[card2.base.suit..'_'..newrank], center = card1.config.center}, G.hand, nil, false, {G.C.SECONDARY_SET.Spectral})
newcard:set_edition(card2.base.edition, true)
card.ability.extra.complete = not card.ability.extra.complete
G.E_MANAGER:add_event(Event({
func = function()
G.hand:emplace(newcard)
return true
end
}))
end
if context.destroying_card and card.ability.extra.complete and context.cardarea == G.play then
for k, v in ipairs(context.full_hand) do
v:start_dissolve()
end
card.ability.extra.complete = not card.ability.extra.complete
end
end
}```
oh dear that script is huger than i thought
its very funny
I hate it so much

apperently not in lua though
reeeeal
Ok so the hand types DO work
Very very weird that you can't touch the visibility
i still cant click play but
im pretty sure empty tables are considered false...
could be wrong tho
it identifies it at least
That's what the second patch should be fixing... hmm
yeah i just googled bools in lua, this is an official manual I think
Do you have a lovely folder that it's in?
yea
i may literally not be calling it tho idk if theres a way im sposed to
given that its empty
I wonder if you have a different lovely master file (outside of the folder) that might take priority
the table itself comes as true because it exists
yeah this is why people use next(table) to see if it actually has an element
or just table[1] if its a general array
if v.edition then
if v.edition.polychrome then
ColXmult = ColXmult + 1
card.ability.extra.Xmult = ColXmult * card.ability.extra.Xmult_mod
elseif v.edition.foil then
Colchips = Colchips + 1
card.ability.extra.chips = Colchips * card.ability.extra.chip_gain
elseif v.edition.holo then
Colmult = Colmult + 1
card.ability.extra.mult = Colmult * card.ability.extra.mult_gain
end
...
return{
xmult = card.ability.extra.Xmult,
chips = card.ability.extra.chips,
mult = card.ability.extra.mult
}
This snippet might help a bit?
bump
uhhh try calling card:start_materialize() on the new card
yeah @turbid maple according to this dude on stack overflow, it really is true if it exists unless it's set to false
i think thats what it was called
in the event? or just in general
in the event
😭
its not a .toml
the order of things happening in the evaluate_play function is very particular and finnicky, let me look back and see how I dealt with this issue when I was writing one of my jokers
BRUH lmao
👍
its dumb but at least i solved it myself
rather than getting the point of someone else needing to look at my whole shit lmao
Lua is very goated for this. Hate the tricks you have to do when you have 0 as truthy value in other languages, which is quite common
Like I said earlier, one step at a time lmfaooooo
ye
still a ways to go to getting it working
theres a whole second voucher i have to figure out at some point
not sure why but "if v.edition then" breaks the joker so it doesn't score and now after changing back and forth between the different versions (back to if v.edition == not nil) only the chips are scaling
here's the effect where I remove cards from the played hand: #💻・modding-dev message
and here's the relevant section in my calculate function
if not context.blueprint and context.before and context.cardarea == G.jokers then
local override = false
if pseudorandom("Frog") < G.GAME.probabilities.normal / card.ability.extra.odds or override then
local unscored_cards = {}
for i=1, #context.full_hand do
if not tableContains(context.scoring_hand, context.full_hand[i]) then
unscored_cards[i] = context.full_hand[i]
end
end
if next(unscored_cards) then
local v, k = pseudorandom_element(unscored_cards, pseudoseed("Frog"))
local _card = copy_card(v, nil, nil, G.playing_card)
v.can_calculate = function () return false end
v.states.visible = false
v.destroyed = true
_card.states.pos_freeze = true
card.ability.extra.cardarea:emplace(_card)
G.E_MANAGER:add_event(Event({
func = function()
_card.states.pos_freeze = nil
v:remove()
return true
end
}))
card_eval_status_text(card, 'extra', nil, nil, nil, { message = "Ribbit", colour = G.C.green })
end
end
end
You're more than welcome to ask if you need help with any of it 
i may do, ty!
Of course of course
Did you change the lower return{...} statement as well? Doesn't look like it from your screenshot.
Can anyone help me with this crash? I made a Perkeo-like joker that copies a consumable at end of shop and I would like to know why it causes an event manager crash
Code?
G.E_MANAGER.add_event(Event({
func = function()
if #G.consumeables.cards < G.consumeables.config.card_limit then
-- consumable type check from AstralightSky
local skills = {}
for i = 1, #G.consumeables.cards do
if G.consumeables.cards[i]:gc().set == "TestSkill" then
skills[#skills + 1] = G.consumeables.cards[i]
end
end
if #skills > 0 then
local card = copy_card(pseudorandom_element(skills, pseudoseed("thefox")),nil)
card:add_to_deck()
G.consumeables:emplace(card)
end
end
return true
end
}))
card_eval_status_text(context.blueprint_card or card, 'extra', nil, nil, nil, { message = localize('k_duplicated_ex') })
end```
mostly the same as the steamodded example for Perkeo, or the Perkeo code in card.lua
are you referring to "Xmult" vs "xmult"
The crash log doesn't suggest anything wrong with anything other than the event related part of this
that is such a cool joker but i think thats pretty distant from what im doing
Normal Perkeo works fine so I doubt it's my game files being fucked
Yes, variable names are case-sensitive. Make sure the left side of the equals sign matches the return keys specified in step 3 of Creating a Calculate Function exactly.
kibty :o
you're doing things to cards during hand calculation and getting ghost cards, right? I was running into those same issues when I was developing that effect because of how/when the evaluate_play function does things like move cards around
i see
G.E_MANAGER:add_event not G.E_MANAGER.add_event
lmao
specifically I was running into an issue where the card would get pulled back into the deck with the rest of the scored hand even though I had emplaced it in the custom cardarea
note that using : on a table function skips the self parameter needing to be specified which is usually the event manager itself
confirmed big straights and big flushes work as intended
i still gotta rename them somehow
3 pair works as intended
so G.E_MANAGER.add_event(G.E_MANAGER) is equivalent to G.E_MANAGER:add_event()
I have been told that
I'm fairly certain as long as you have it as "Xmult" in your config then thats what it should be elsewhere, I have the Xmult in other jokers and that works fine, though to be sure I dide test "xmult" and had the same issues
Yeah now I'm really confused as to why the visibility sets aren't working
Fuller House Just Works 
4:2 split fuller house just reads as 4oak which is fine cause that scores higher anyway
🤨 fuller house you say?
yea my fuller house doesnt bother being a distinct hand
i just made it give more than a 4oak, as adding another pair felt more distinct imo
arguably 4:2 has some benefit but idk it seems not worth scoring any differently to 4oak
Imagine calling your hand a Fuller House
this post was made by House Party gang
heh

we are going to ^7 mult you
petition to call a 3:3 split fuller house a two of a three of a kind
I called it a "Two Three"
That's called a Double Triple in Maximus
double triple is good
it is strange though that a boolean set to false can't be checked for existence like any other variable usually can
like I'm sure there's just another way
i dont have anything for Flushes with six and straights with six
even just using if type(x)
theyre just normal flushes and straights
yea im letting those score as normal
which would actually only return anything if the variable exists
i wanna acknowledge all the 6-card hands with names
but big flush and big straight dont need planets
they Just Work
Oh did you base 'em off of Flush's levelling?
and always do so if it does
big flush is just a flush
Lmao
you can just score Another Card in your flush
which causes some cool combos like this:
err it returns nil if it doesn't
lmao
so yeah lua can be weird
no need for anything special, if you already levelled flush a ton theres no point making it score as a new hand
would make it a waste
i got up to credit card, i will continue this whenever im bored but if anyone wants to help it would be appreciated 🙂 https://github.com/nh6574/VanillaRemade/blob/main/src/jokers.lua
is this cursed or blursed
its like 4 fingers
so i think its blessed
its one of those things where it Just Works ykno
im also working on adding the scrapped demo decks
Could you try ```Lua
SMODS.calculate_effect({Xmult = card.ability.extra.Xmult}, card)
SMODS.calculate_effect({mult = card.ability.extra.mult}, card)
return{
chips = card.ability.extra.chips
}
idk how to rename hands without changing their scoring, like royal flush does
but as soon as i do
check how the game does it
would this be a good unlock for braided deck
here;s the actual unlock: hover,, press 2 key
:P
i tried that it didnt work sob emoji
anyways how would i check the amount of times a hand has been played outside of the game?
like via profile
yea but do i gotta re-make the hand for that
also i made a joker that tetrates your mult to 2 :)
you can take ownership
i call it the "naneinf" generator
does take ownership replace the whole hand tho or just the part i change
just the part you change
same outcome, only the chips scale
Strange...
literally anything over 143 mult goes to naneinf
though it does change the order of the applied affects which is something new I just learned
(143^143) > 1.79e308
so does anybody have any idea on how i'd do this
What's in your G.playing_cards? Is it only foil cards, or are there other card editions in there?
1 foil, 1 poly, and 1 holo
It's probably a target error
reading from left to right top to bottom (as one would read a book) the first card is foil so maybe after find the first card with an edition it ends the loop?
functions/state_events.lua
It'd be easier if we could screenshare and debug that way, if you're willing to do so. Axy will also recreate the code on their end and test it in-game, to see if we can make functioning code.
anyone know how to make it so that only 1 copy of a joker can exist? kind of like Unique jokers from Polterworx. I’ve tried reading Polterworx’s code but I don’t understand this specific part
I'm cool with that, is there a special VC for that?
Put a check in add to deck checking if it already exists then removing it?
No idea! Axy is fine with DMs, if you're okay with that.
i have no idea on how to do that
Oh wait you don't have a pattern 😭
In add to deck ```lua
if next(SMODS.find_card(“key”)) then
card:start_dissolve()
end
I DONT
Where it at
LMFAO
ok there
would i add this inside my joker's code or where? i don't think I have a specific "add to deck"
god im so Not Programming Brained idk how to use this modify_display_text function
sigh
brugh
Look here for add_to_deck: https://github.com/Steamodded/smods/wiki/SMODS.Joker
does it not like the unlock type??
Atp I'm stuck too. Do you have the Even Better TOML extension? That might help with debugging
considering this is my first time patching myself uhhh probably not let me check
Dang
An'other N' ban'ger
well alright then
LMAO
oh do i
literally have to press enter
what do you WANT from me
oh my god those are quotationmarks
damn astra i went to maximus to see how you did the straight flush cause i figured youd have put a royal flush in there
im so mad
but your straight flush is a 4 and a pair?
can you copy the patch here, the font makes it hard to see some things
or is that just outdated text
I think I had flush party and super straight flush swapped at one point 😭
it's like you knew it was gonna crash again
sending
1.0 fixes it I prommy
[[patches]]
[[patches.pattern]]
target = "functions/state_events.lua"
pattern = "check_for_unlock({type = 'chip_score', chips = math.floor(hand_chips*mult)})"
position = "after"
payload = '''
check_for_unlock({type = 'hpfx_7mult', mult = math.floor(mult)})
'''
no royal flush tho so i cant yoink however you used display text
road to 1.0 is so real
Yeah nope, all the 6-card hands are their own hands lol
yea but u can name 6-card royal flush to be super royal flush
lol
[patches.pattern]
match_indent = true
thats what im tryna do w all my variant hands rn but i cant figure out how to use modify_display_text
okay so i'm trying to detect, directly after scoring, whether the blind was cleared, in a joker's calculate
what context would i need for that
cause i am Not a Luahead
Welp time to figure that out modify_hand_text with ya then lol
🌜
🧍
modify_display_text(self, cards, scoring_hand) -> string?
The Luahead
does m6x11 function as a code font ??
i forgot times too...
no <3
I mean there's a monospace version iirc
if not G.STATE == G.STATES.GAME_OVER then
--- code
end
so im like i can just take ownership of full house, evaluate if its actually a double triple
no like
though monospace only really matters for readability or python, lol
but then how do i make that fire modify_display_text(self, cards, scoring_hand) and how do i actually write in what i want that to be
Self-destructs if blind is not cleared in one hand
ohhh
this is the effect i'm trying to get working
i think it would be G.STATE_COMPLETE??
problem is, i tried if context.after and context.cardarea == G.jokers then but G.GAME.chips wasn't set yet
@red flower
:)
ohhh
so i couldn't check if the chips was higher than needed
ahh but how do i make that conditional on the actual evaluated hand
hmmm
What about upgrading the level ups themselves? 
check scoring_hand
what about HOLY SHIT
DUUUUUUDE 







Careful, you're going to end up not PU aligned that way.
so like
oh yeah this too i guess
how do i check this when i need to check it
would scoring_hand be the evaluation?
is this lobcorp crossmod?
context.scoring_hand contains the scoring cards.
im getting my head arnd how to do these things individually but passing them to each other is such a nightmare to understand as a non-luahead
it looks so much like the names of their jokers to me
its my friend on roblos
theyre a huge lobcorp fan tho
"per-level"?
tysmmmmm 🙏
do you mind if i ask a different patch related question
maybe i can kill three birds
Well I figured that out fast
go ahead
It's character.name == "Maggy"!
oh shid
show 👀
The values on planet cards.
I basically took the royal check and tacked a 9 onto it
lol
the key being returned is the localization key
ahhhh
wasnt directed to you sorry
since im taking ownership, if i dont return anything will it leave it as it was?
can someone remind me how level_up_hand() works
I'm honestly not sure but I'd return the base one just for safety
Didn't help me
not normally but for modify_display_text in particular yes
for some reason these others i have* dont work, and it's causing errors with ijiraq (you remember ijiraq right? transformy event guy?)
[[patches]]
[patches.pattern]
target = "card.lua"
pattern = "self.seal = cardTable.seal"
position = "after"
match_indent = true
payload = '''
self.isIjiraq = cardTable.isIjiraq
self.visiblyIjiraq = cardTable.visiblyIjiraq
'''
times = 1
[[patches]]
[patches.pattern]
target = "card.lua"
pattern = "seal = self.seal,"
position = "after"
match_indent = true
payload = '''
isIjiraq = self.isIjiraq,
visiblyIjiraq = self.visiblyIjiraq,
'''
times = 1
[[patches]]
[patches.pattern]
target = "card.lua"
pattern = "self.children.center.atlas = G.ASSET_ATLAS[(_center.atlas or (_center.set == 'Joker' or _center.consumeable or _center.set == 'Voucher') and _center.set) or 'centers']"
position = "at"
payload = '''
if self.isIjiraq then
self.children.center.atlas = G.ASSET_ATLAS['IjiraqJokers']
else
self.children.center.atlas = G.ASSET_ATLAS[(_center.atlas or (_center.set == 'Joker' or _center.consumeable or _center.set == 'Voucher') and _center.set) or 'centers']
end
'''
match_indent = true
times = 1
do you have any idea what the problem could be? (god i hope this doesnt come out huge)
phew
GAH it came out huge
why is there a hyphen
do these crash or do they just not work
just dont work
dont know then, i would have to test it but i dont have your code :p
darnnnnn
Can someone help with writing the DNA joker?
i mean its pseudo-public but i dont wanna ask you all that 😭
It is of a random poker hand each time... you'd have to really work that card out.
can someone help me find where this is actually crashing? i'm commenting out lines over lines of all sorts of mods and it's still just that
sadly, im off to play The Hundred Line: LAST DEFENCE ACADEMY(tm)
ive been thinking about starting it
go play donkey kong
i already did, played every single NES game from A to L
fine the line in the dump and search your mods folder for it?
well... that will only rarely work
but it's worth a shot
yeah that's the problem, the line numbers are fucking wrong 😭
zonkey kong
because it's the thing setting it you want, not the thing indexing it
and you're looking at the most recent dumps?
that's weird
in a lot of cases
yes...atp i'd be happy with the location of it indexing it, just to debug print SOMETHING there but yeah
wonder if how you manually compiled lovely fucked something
in the error handler
or the dump routine
yeah maybe, but then again this is the first case of such
other issues i was able to find the lines easily
hello victin of victin international
im doing my best, hope you are well
apply = function(self)
G.E_MANAGER:add_event(Event({
func = function()
local hand = pseudorandom_element(G.GAME.hands, pseudoseed('YUH'))
level_up_hand(self, hand, true, 3)
return true
end
}))
end
whats wrong with this?? its saying attempt to index a nil value
I'm cooked
dont be cooked =[




