#💻・modding-dev

1 messages · Page 351 of 1

lucid owl
#

thanks!

burnt cairn
#

thank you for minding my denseness

manic rune
#

ive tortured people here with my genius brainfarts before, its fine lol

quartz ravine
#

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

brisk rose
#

What is this site even,

#

Who the hell is mirroring smods updates but not doing it automstically?

burnt cairn
#

ok yeah the smods update fixes it 🫡 thanks

#

were functional lfg

broken rivet
#

i also was trying to make glass cards not shatter earlier so i'm glad to see this in chat lol

burnt cairn
#

happylandeline win

broken rivet
#

happylandeline my beloved

red flower
brisk rose
red flower
#

because of your name

burnt cairn
#

🐈

broken rivet
#

my name has led to so much tomfoolery in the past

#

especially from people typing "@invalid-user"

manic rune
#

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?

brisk rose
manic rune
#

oh sick, thanks

hard needle
azure stone
#

How do I give myself a joker using debug plus?

faint yacht
#

Hold CTRL and press 3 when hovering over one in Collection.

burnt cairn
#

go to the collection, hover over a joker and hit 3

manic rune
#

collection, press 3 as you hover on a joker

hard needle
#

oh my god

brisk rose
#

Huh I just didn't recognize that one screen

brisk rose
#

For reference

azure stone
#

Thank you all

#

Also, how do you set a multiplier value?

tall wharf
#

look at that title holy shit

#

wrong image

#

a lot of patching later

red flower
#

🔥

#

is this broken

#

it might be too strong

hushed field
#

What are you working on N?

red flower
azure stone
#

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

compact linden
#

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

azure stone
#

just playing cards?

compact linden
#

yes

daring fern
red flower
compact linden
#

i asked earlier and the person who had linked a post didnt help really it just confused me more

azure stone
#

tried to switch value, still nun so far

red flower
#

oh it shows up as nil in the description?

azure stone
#

yes, and in fuctionality

red flower
#

it's because loc_vars says mult instead of Xmult

azure stone
#

oh

red flower
manic rune
#

is this what i should do to make it so that negative jokers give one extra slot after a negative joker is sold?

red flower
red flower
manic rune
#

i tried

#

but its creating permanent joker slots even though all the negative jokers are sold, for some reason

red flower
#

yeah thats what change_size does

manic rune
manic rune
compact linden
red flower
manic rune
#

+1 joker slot, somehow??

#

the math aint mathing 😭

red flower
#

thats without change_size?

manic rune
#

it still has the change_size code

red flower
#

i would try without it

manic rune
#

it doesnt update without :change_size

#

i tried earlier

compact linden
#

also what do you recommend to use when writing the code

manic rune
#

visual studio code

compact linden
#

thank you

manic rune
# manic rune

this is without change_size, after selling 3 negative jokers

azure stone
red flower
azure stone
#

ohhhhhh

manic rune
#

like, WHAT

#

HOW DID IT END UP AT 6

#

😭

frigid blaze
#

Where is it located and how to create your own, does anyone know?

manic rune
azure stone
#

tysm

tall wharf
#

wrong colour but you get the point

manic rune
#

i

#

cant be this dumb

red flower
#

maybe the -1 is not removed

manic rune
#

yeah, but how

#

😭

tall wharf
#

ok fixed

manic rune
#

did it straight up ignore the first -1??

frigid blaze
# red flower wdym

I want to create my own effect and I wanted to learn from this example

naive raptor
#

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

manic rune
#

okay, so theory:

having only +1 joker slot somehow makes it so that the joker slots arent reduced by 1, somehow

red flower
tall wharf
#

i love

#

knowing how to code

#

idk what is going on with my code either

#

i forgot font again

red flower
tall wharf
#

n will this break anything

red flower
#

my heart

tall wharf
#

ok fixed the font for real

red flower
#

and localize "name_text" might be weird in tooltips and end of round dollars

manic rune
#

it works properly when you have less than 3 negative jokers??

#

wait

#

do i

#

need to use events?

compact linden
#

ok so i got visual studio code installed now what do i do next exactly

manic rune
#

it got worse

#

what the fuck

red flower
crisp coral
#

WHAT

red flower
#

you dont need to shout

crisp coral
#

my bad

#

what

azure stone
#

so at the moment this isnt crashing, but I accidently broke this and I dont know where to go from here

azure stone
red flower
#

dont do and

#

return { Xmult = value, xchips = value }

manic rune
#

this doesnt look right

red flower
#

oh wait i dont think Xchips works

azure stone
#

its all in the config, just seperate lines

red flower
#

yeah it doesnt work like that either

azure stone
#

ive seen some mods do it, so it might?

#

ah

red flower
#

no i mean Xchips literally

red flower
manic rune
#

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

compact linden
#

im still lost, where do i start on visual studio code

naive raptor
carmine burrow
#

that also lets you look up game code much faster

compact linden
#

ok

red flower
#

inside that context

compact linden
carmine burrow
naive raptor
carmine burrow
brisk rose
brisk rose
shell timber
#

caino

marble flint
#

caino

brisk rose
#

Lol I know that one

shell timber
#

consumeables

brisk rose
#

Yeah that too

#

Is that it?

shell timber
#

ill have a look

marble flint
#

lemme look at the whole localization file rq

shell timber
#

"selzer"

#

"ring master" instead of showman, which is interesting

brisk rose
shell timber
#

heirophant instead of hierophant

placid star
#

@red flower in the next smods update will there be a better way to force draw cards to hand from deck?

compact linden
marble flint
#

when are we getting j_séance

shell timber
#

True...

carmine burrow
#

true...

compact linden
#

what do i do now

maiden phoenix
brisk rose
#

Or maybe be thought it was just his nameplate

marble flint
#

speed tag is tag_skip

brisk rose
placid star
compact linden
#

@carmine burrow what do i do now, ive also gotten the un ziped files for both lovely and smods

marble flint
#

overstock is v_overstock_norm which is.... weird

maiden phoenix
carmine burrow
compact linden
#

yeah ive had gotten steammodded running, i have a few mods from nexus installed already

marble flint
#

All of the challenge names have a _1 at the end (there are no _2s or _0s)

red flower
compact linden
red flower
carmine burrow
#

(both of which are also within Mods)

compact linden
#

ok

#

so i just tried running modded balatro but it crashed

quick kraken
#

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

compact linden
primal terrace
#

I code it in Notepad++ because I'm cool 😎

carmine burrow
compact linden
#

ok

compact linden
carmine burrow
#

if it didn't work, i think the mods folder is supposed to be in appdata

compact linden
#

ok

compact linden
carmine burrow
#

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)

cursive sentinel
#

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
compact linden
#

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

brisk rose
carmine burrow
compact linden
#

do you want me to show a sceenshot of the screen when it crashes

compact linden
turbid maple
#

I have a thing that returns played cards to hand but idk if to deck requires something else

carmine burrow
#

memory allocation failed??

#

wow

#

i have no idea what that's about to be honest

compact linden
#

damn

brisk rose
turbid maple
#

download more ram I suppose

brisk rose
compact linden
#

i dont have an assets folder i was told to make an empty lua file and get the smods config

turbid maple
#

okay if you want to include images it needs to be in assets folder

brisk rose
compact linden
#

i was told to type gibberish so i did

brisk rose
brisk rose
compact linden
#

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

brisk rose
compact linden
#

do i copy and past the first set of code in the empty lus file?

brisk rose
#

The lua file can stay empty

#

And you don't need the header that would go in the lua

brisk rose
#

The lua is where your mod will go

compact linden
#

ok and where do i get the json

brisk rose
compact linden
#

ohh

brisk rose
#

the wiki page says what to put in it

compact linden
#

do i need the json extension?

#

or no?

#

cause i was told to get the lua extension, thats it

split cairn
#

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

brisk rose
#

no need for it to really be open in vscode once you make it

shut crater
brisk rose
#

there is a voucher in betmma's that makes wild cards immune to debuffs

#

so that may be helpful too

vapid flume
#

I tried to code in a challenge but it crashes whenever I click on it, any idea what I messed up?

vapid flume
carmine burrow
#

where prefix is the prefix you defined in the mod metadata

vapid flume
#

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

brisk rose
shut crater
vapid flume
#

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

brisk rose
#

and once you do you can erasethe header

broken rivet
#

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

hardy viper
#

this happens when you haven't paid your taxes yet this year

split cairn
#
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
broken rivet
#

wait i found the issue i think

modern kindle
brisk rose
broken rivet
brisk rose
#

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

broken rivet
#

yea i can't display it at all

brisk rose
#

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

hardy viper
broken rivet
#

honestly same blueprint's code seems really hard to look into, some values seem to just not exist at all somehow

modern kindle
hardy viper
#

your life is taxable

tall wharf
#

how do i file taxes

vapid flume
#

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

broken rivet
brisk rose
#

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

broken rivet
brisk rose
#

thst just seems like another case for your loc_var though?

broken rivet
#

fair yea

brisk rose
#

@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

crisp coral
#

vanilla does it that way is because of bp/bs chains

brisk rose
#

yeah i forgor that

#

makes sense

hushed field
#

Hmm?

carmine burrow
#

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

crisp coral
#

all in generate_card_ui iirc

carmine burrow
brisk rose
crisp coral
#

actually it's card.generate_uibox something

#

idk im in bed

carmine burrow
#

(phone)

brisk rose
carmine burrow
crisp coral
#

reading code on mobile is inconvenient as hell anyway

brisk rose
modern kindle
#

man youre using a text editor on mobile with find

#

thats too much effort for me

carmine burrow
#

vscode on mobile when

crisp coral
#

tru

vapid flume
formal parrot
formal parrot
frigid blaze
#

Can you tell me what the problem is?

brisk rose
frigid blaze
brisk rose
red flower
#

card instead of self

tall wharf
#

good luck distributing that

#

ok i must have misread

frigid blaze
primal robin
tall wharf
#

ok so

frigid blaze
#

In fact, I originally asked what's wrong with it. If I knew, I probably wouldn't have asked.

obtuse quail
#

can someone help me with making ui

tall wharf
frigid blaze
tall wharf
#

What's the code for the entire joker

#

not just calculate function

shut crater
oblique pond
#

crashing, not sure why
did i mess up context checks

sonic cedar
#

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

quartz ravine
quartz ravine
# frigid blaze Can you tell me what the problem is?

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

vale glen
frigid blaze
quartz ravine
#

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

sonic cedar
primal robin
#

Time for really scary thing: adding localization support

gilded blaze
#

you guys are using loc_txt?

#

what is that

primal robin
#

loc_txt? Dude, it's SMODS thing

high sinew
gilded blaze
#

it's a sarcastic joke

#

I use localization entry all the time

#

it's a lot easier to manage

vale glen
#

Should prolly ask a question here, since Axy's been stuck on this for a bit

primal robin
#

Go ahead

tall wharf
#

yay

primal robin
#

Congratz with first contribution

vale glen
#

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.

primal robin
#

don't use pseudoseed with os.time(), it makes this ckeck inconsistent

celest timber
#

how do i get the level/value of chips and mult of a hand?

vale glen
#

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.

tall wharf
vale glen
#

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.

tall wharf
#

-# legendaries aren't meant to be free wins 😭

vale glen
#

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

shell timber
#

that joker is absolutely criminal with oops all 6s

vale glen
#

Yuuup

primal robin
#

Idk who are you but I love your mindset

vale glen
#

...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: [???]```
hard needle
#

1 in 2 chance to replace all sound effects to "Travis scott falling off stage in london"

shell timber
#

Ado seems interesting

tall wharf
#

Ado?????????????????????????????????????

shell timber
#

how are you handling other languages

vale glen
#

Not sure which function will hook into description boxes

tall wharf
shell timber
#

good luck

tall wharf
#

Ado

hard needle
shell timber
#

i think you can obviously tell that they aren't meant to be

tall wharf
#

^mult

vale glen
#

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:

shell timber
#

you could look at Blue Seal

vale glen
#

But this obviously wouldn't work for any planet, which is bleh.

primal robin
daring heron
#

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

shell timber
#

take_ownership lets you modify vanilla objects

primal robin
#

Or, one patch

daring heron
#

hm?

primal robin
#

Use take_ownership and you'll be fine

daring heron
#

alright

#

how would i go abt changing the wheel of fortune rate?

spiral crown
#

anyone know how I can avoid this error?

tall wharf
daring heron
#

how would i change the desciption for example?

#

of wheel of fortune*

carmine burrow
#

you also don't need the "== true" because of how booleans work

azure stone
#

Is there a way to make a joker have a multiplier of chips?

maiden phoenix
#

xchips

azure stone
#

Yeah

#

Just trying to get that to function and having trouble

daring heron
#

but how do i edit the description of the wheel of fortune?

red flower
red flower
carmine burrow
quartz ravine
#

I saw a list on Reddit of must play mods and Joyous Spring was on it!

red flower
#

did it have cool edited images?

azure stone
# red flower can i see how the code looks like now

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

spiral crown
red flower
red flower
#

it should also be config = { extra = {Xmult = 1.25, Xchips = 1.25 } },

wintry solar
#

'x_chips', 'xchips', 'Xchip_mod', these are the valid xchips keys#

azure stone
daring heron
#

like this?

azure stone
#

Sorry that I did not pay attention before, was extremely sidetracked with school work

red flower
daring heron
#

didnt work

#

should be 1 in 3

azure stone
#

heres what it looks like, still is crashing

red flower
# daring heron didnt work

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

daring heron
#

how do i do that?

red flower
azure stone
#

Doesn't crash, but doesn't function at all

red flower
vale glen
# primal robin To generate playing card use `create_playing_card`, proper buttons will be place...

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.

daring heron
#

i love the kitty each time

#

keeps me fueled to keep goin

vale glen
#

kibty

red flower
azure stone
#

Still no, it did work when I tried it with only the mult

primal robin
#

If you need change base of created card, use Card:set_base

azure stone
#

WAIT NVM

red flower
#

did you forget to restart a run

azure stone
#

Had to reload the game and resummon the joker

red flower
#

yeah

azure stone
#

Yeah

vale glen
azure stone
#

Did not know you had to do that

#

But hey, it works, I'm happy

daring heron
#

how do i find the key of stuff?

red flower
#

game.lua or the localization files

daring heron
#

so in this case would it be bl_wheel?

red flower
#

no thats the blind

daring heron
#

oh pft

#

c_wheel_of_fortune?

red flower
#

yeah

daring heron
#

okay and then how do i change the loc_vars

red flower
#

remove calculate and cost and add loc_vars

daring heron
#

and what do i do with loc_vars?

red flower
#
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

daring heron
#

nice

tranquil gull
#

this is so cursed

azure stone
tranquil gull
#
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

azure stone
#

I was thinking based off the money the player has

#

Like it would gain .1X for each 25

turbid maple
#

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

red flower
#

hi void

azure stone
#

Okay, that makes some sense

turbid maple
#

hi mr n

azure stone
#

How would I check for money?

red flower
#

G.GAME.dollars

turbid maple
#

api call into the players bank account

spiral crown
onyx sonnet
#

Hi N! How are you doing?

azure stone
#

So would I create a new line under loc_vars?

red flower
tranquil gull
turbid maple
azure stone
#

Okay, I should be able to do that

spiral crown
tawdry rain
# red flower ```lua loc_vars = function(self, info_queue, card) info_queue[#info_queu...

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}},
'''
red flower
#

i mean yeah

#

take_ownership is cleaner

tawdry rain
#

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

daring heron
#

how would i change the 8 ball rates?

split cairn
#

anyone know how to make jokers Unique like in Polterworx? I want it so that only 1 copy can exist at a time

tawdry rain
# daring heron how would i change the 8 ball rates?

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

onyx sonnet
#

can someone tell me the parameters of create_playing_card? i dont know the stuff beyond front and center

obtuse quail
#

can someone help me with ui stuff

onyx sonnet
#

i think you need to be more specific for people to know if they can help you or not

obtuse quail
#

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

daring heron
#

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

onyx sonnet
#

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

obtuse quail
daring heron
onyx sonnet
tawdry rain
#

@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

onyx sonnet
#

the Extra is the denominator for the odds

#

oh my bad

#

i havent messed with take_ownership much

tawdry rain
#

Just a sec, I'm gonna show you

daring heron
#

alrighty

tranquil gull
#
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

tawdry rain
# daring heron hm?
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

tranquil gull
split cairn
#

anyone know how to make it so that only 1 copy of a joker can exist? kind of like Unique jokers from Polterworx

tranquil gull
#

...check how they did it

tawdry rain
daring heron
#

yeah i saw that, but theres barely anything there

brisk rose
daring heron
#

thats the problem i have no idea what values i can chance and how

brisk rose
#

it's like making a new joker, but you only define what you're changing

weary haven
#

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
}```
tawdry rain
# daring heron this?

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.

sturdy compass
# weary haven

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

weary haven
#

thats in another .lua

#

line 35 seems to be
G.GAME.hands.bighands_three_pair.visible = true

sturdy compass
#

Ah ok that's something

#

I assume bighands is your mod prefix?

weary haven
#

yea

#

i was playing around w whether or not i needed that prefix

sturdy compass
#

you definitely do

weary haven
#

if i delete the prefix from all of them the crash moves to At Launch and to the 6oak

#

idk why the 6oak specifically

daring heron
#

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

sturdy compass
weary haven
#

the keys dont have bighands_

#
SMODS.PokerHand {
    key = 'three_pair',```
#

for example

wintry solar
sturdy compass
#

fascinating

#

I'm surprised those are coming back as nil then

weary haven
#

ftr everythings in one .lua cause its pretty small

#

if that makes a difference

brisk rose
weary haven
#

yea i figured

brisk rose
#

every time you call them after the declaration you need it

daring heron
sturdy compass
weary haven
#

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

wintry solar
brisk rose
#

the key likes to print instead

#

depending on the context

#

I don't know which mods or which objects

daring heron
brisk rose
zealous glen
tall wharf
#

astra

sturdy compass
tawdry rain
# daring heron like here?

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

daring heron
#

yeah

weary haven
#

iiiiii will test that actually

sturdy compass
#

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

weary haven
#

yea

#

inchresting

tall wharf
#

full house

weary haven
#

i was able to buy it

#

will report back in a min

#

ack it doesnt let me select 6 cards 😔

turbid maple
sturdy compass
#

What do your patches for hand size look like?

#

If you don't have any patches for it I can provide one for ya

quick kraken
#

Is the Perkeo example from the smods example mod outdated?

daring fern
weary haven
#

i think its pretty much exactly your one honestly

quick kraken
weary haven
#

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```
spiral crown
#

I cannot for the life of me figure out why this joker isn't scaling, anyone know why?

tawdry rain
polar tulip
turbid maple
tawdry rain
#

Oh nvm, the new line was from discord formatting

turbid maple
#

try v.edition ~= nil

spiral crown
polar tulip
sturdy compass
#

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

sturdy compass
weary haven
#

ah sick ty

sturdy compass
#

You do still need the second patch though

weary haven
#

do i still need the patch at- ahh

weary haven
#

should i delete that first patch then

sturdy compass
#

Yeah you don't need that anymore

turbid maple
#

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

spiral crown
weary haven
#

ig so if im not using it

#

yea

sturdy compass
#

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)

turbid maple
#

v.edition == not nil does not chrck if v.edition exists
it checks if the v.edition value is equal to true

weary haven
#

ah lol

tawdry rain
#

I mean, wouldn't just if v.edition then -- not nil do it?

weary haven
sturdy compass
#

voucher code. Replace where you're changing your global variable with what I just provided

brisk rose
weary haven
#

ok sick i thought so

sturdy compass
#

👌

brisk rose
#

I think a false bool and a nonexistant bool might be the same in lua, lol

turbid maple
sturdy compass
#

One step at a time lmao

brisk rose
turbid maple
#

unless it is somehow a boolean then i dont know

#

a table is not equal to true

#

a table exists

brisk rose
#

I just was going off what you said

turbid maple
#

two differenet things

brisk rose
#

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

turbid maple
#

I dunno lua specifics I assumed truthy things would be equal to true but turns out no

brisk rose
#

then yeah if v.edition might be the way

weary haven
#

hmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmm

onyx sonnet
#

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

weary haven
#

still cant seem to select 6 cards

onyx sonnet
#

this happens in other languages too

sturdy compass
brisk rose
#

yeah i guess that makes sense

#

so 0 false nil and empty will be hard to seperate from nonexistent

sturdy compass
#

Imma try to make a version of the voucher on my end to see what the issue may be

unborn bay
#

you shouldn't really be directly comparing to true anyway

brisk rose
#

the latter i see a lot

turbid maple
#

no not really

#

== true would explicitly check if its a boolean true

#

if x would just check if thing is truthy enough

sturdy compass
#

that 'ed' just killed my soul

weary haven
#

oh lmaooo

#

ty tho

sturdy compass
weary haven
#

6 cards selected!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!

sturdy compass
#

Huuuge

onyx sonnet
#

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

weary haven
weary haven
#

reeeeal

sturdy compass
#

Very very weird that you can't touch the visibility

weary haven
#

i still cant click play but

onyx sonnet
#

could be wrong tho

weary haven
#

it identifies it at least

sturdy compass
brisk rose
weary haven
#

not sure if im loading the patch tbh

#

its the only thing in a seperate file

sturdy compass
#

Do you have a lovely folder that it's in?

weary haven
#

yea

onyx sonnet
#

oh nevermind i just double checked

#

elements of an empty table are considered false

weary haven
#

i may literally not be calling it tho idk if theres a way im sposed to

onyx sonnet
#

given that its empty

sturdy compass
#

I wonder if you have a different lovely master file (outside of the folder) that might take priority

onyx sonnet
#

the table itself comes as true because it exists

unborn bay
#

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

vale glen
# spiral crown I cannot for the life of me figure out why this joker isn't scaling, anyone know...
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?

unborn bay
brisk rose
unborn bay
#

i think thats what it was called

onyx sonnet
weary haven
#

oh im a fucken

#

idiote

unborn bay
#

in the event

sturdy compass
#

😭

weary haven
#

its not a .toml

shut crater
# onyx sonnet bump

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

sturdy compass
#

BRUH lmao

weary haven
#

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

tawdry rain
sturdy compass
weary haven
#

ye

#

still a ways to go to getting it working

#

theres a whole second voucher i have to figure out at some point

spiral crown
shut crater
# onyx sonnet 👍

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
sturdy compass
weary haven
#

i may do, ty!

sturdy compass
#

Of course of course

vale glen
# spiral crown

Did you change the lower return{...} statement as well? Doesn't look like it from your screenshot.

quick kraken
#

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

quick kraken
#
            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

spiral crown
quick kraken
onyx sonnet
quick kraken
#

Normal Perkeo works fine so I doubt it's my game files being fucked

vale glen
#

kibty :o

shut crater
onyx sonnet
#

i see

unborn bay
#

lmao

quick kraken
#

How

#

the

#

fuck

#

I wanna scream

#

Well thanks at least

shut crater
# onyx sonnet i see

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

unborn bay
#

note that using : on a table function skips the self parameter needing to be specified which is usually the event manager itself

weary haven
#

confirmed big straights and big flushes work as intended

#

i still gotta rename them somehow

#

3 pair works as intended

unborn bay
quick kraken
#

I have been told that

spiral crown
sturdy compass
weary haven
#

Fuller House Just Works yrrpacha

#

4:2 split fuller house just reads as 4oak which is fine cause that scores higher anyway

gusty iron
weary haven
#

yea my fuller house doesnt bother being a distinct hand

gusty iron
#

i just made it give more than a 4oak, as adding another pair felt more distinct imo

weary haven
#

arguably 4:2 has some benefit but idk it seems not worth scoring any differently to 4oak

sturdy compass
#

Imagine calling your hand a Fuller House
this post was made by House Party gang

weary haven
#

heh

sturdy compass
shut crater
#

petition to call a 3:3 split fuller house a two of a three of a kind

weary haven
#

i joked abt calling flush six "clogged bog"

#

its a six flusher

gusty iron
sturdy compass
shut crater
#

that's a much more reasonable name

#

nevertheless I like the insanity of the other

weary haven
#

double triple is good

brisk rose
#

it is strange though that a boolean set to false can't be checked for existence like any other variable usually can

weary haven
#

i want 3:3 to just be a rename

#

it scores as full house just fine

brisk rose
gusty iron
#

i dont have anything for Flushes with six and straights with six

brisk rose
#

even just using if type(x)

gusty iron
#

theyre just normal flushes and straights

weary haven
#

yea im letting those score as normal

brisk rose
weary haven
#

i wanna acknowledge all the 6-card hands with names

#

but big flush and big straight dont need planets

#

they Just Work

sturdy compass
#

Oh did you base 'em off of Flush's levelling?

brisk rose
weary haven
#

big flush is just a flush

sturdy compass
#

Lmao

weary haven
#

you can just score Another Card in your flush

gusty iron
brisk rose
#

lmao

#

so yeah lua can be weird

weary haven
#

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

red flower
gusty iron
weary haven
#

its like 4 fingers

#

so i think its blessed

#

its one of those things where it Just Works ykno

gusty iron
#

im also working on adding the scrapped demo decks

vale glen
weary haven
#

idk how to rename hands without changing their scoring, like royal flush does

#

but as soon as i do

gusty iron
#

check how the game does it

red flower
gusty iron
#

would this be a good unlock for braided deck

brisk rose
#

:P

gusty iron
#

anyways how would i check the amount of times a hand has been played outside of the game?

#

like via profile

weary haven
gusty iron
#

also i made a joker that tetrates your mult to 2 :)

red flower
gusty iron
#

i call it the "naneinf" generator

weary haven
#

does take ownership replace the whole hand tho or just the part i change

red flower
#

just the part you change

weary haven
#

epic

#

ty

spiral crown
vale glen
#

Strange...

gusty iron
spiral crown
#

though it does change the order of the applied affects which is something new I just learned

gusty iron
#

(143^143) > 1.79e308

gusty iron
vale glen
sonic cedar
#

anyone know how i can fix this?

#

trying to patch for an unlock

sturdy compass
#

It's probably a target error

sonic cedar
spiral crown
sturdy compass
#

functions/state_events.lua

sonic cedar
#

ohhhh

#

fixing

vale glen
split cairn
#

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

spiral crown
daring fern
vale glen
split cairn
sonic cedar
sturdy compass
#

Oh wait you don't have a pattern 😭

sonic cedar
#

wh

#

what do you mean i dnot

daring fern
sonic cedar
#

I DONT

sturdy compass
sonic cedar
#

GDI

#

😭

sturdy compass
#

LMFAO

sonic cedar
#

ok there

split cairn
weary haven
#

god im so Not Programming Brained idk how to use this modify_display_text function

sonic cedar
sturdy compass
#

brugh

daring fern
sonic cedar
sturdy compass
#

Atp I'm stuck too. Do you have the Even Better TOML extension? That might help with debugging

sonic cedar
#

considering this is my first time patching myself uhhh probably not let me check

sturdy compass
#

LMAO

sonic cedar
#

oh do i

#

literally have to press enter

#

what do you WANT from me

#

oh my god those are quotationmarks

sturdy compass
#

LMFAO

#

God I hate when that happens

weary haven
#

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

sonic cedar
#

im so mad

weary haven
#

but your straight flush is a 4 and a pair?

red flower
weary haven
#

or is that just outdated text

sturdy compass
sonic cedar
#

sending

weary haven
#

oh you did indeed

#

wild

sturdy compass
#

1.0 fixes it I prommy

sonic cedar
#
[[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)})
'''
weary haven
#

no royal flush tho so i cant yoink however you used display text

sonic cedar
#

road to 1.0 is so real

sturdy compass
#

Yeah nope, all the 6-card hands are their own hands lol

weary haven
#

yea but u can name 6-card royal flush to be super royal flush

sturdy compass
#

Oh tru

#

I didn't even think of that

weary haven
#

lol

red flower
weary haven
#

thats what im tryna do w all my variant hands rn but i cant figure out how to use modify_display_text

tranquil gull
#

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

weary haven
#

cause i am Not a Luahead

sturdy compass
#

Welp time to figure that out modify_hand_text with ya then lol

zealous glen
#

🌜
🧍

weary haven
#

modify_display_text(self, cards, scoring_hand) -> string?

zealous glen
carmine burrow
sonic cedar
sonic cedar
brisk rose
gusty iron
weary haven
#

so im like i can just take ownership of full house, evaluate if its actually a double triple

brisk rose
weary haven
#

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

tranquil gull
tranquil gull
#

this is the effect i'm trying to get working

gusty iron
#

i think it would be G.STATE_COMPLETE??

tranquil gull
#

problem is, i tried if context.after and context.cardarea == G.jokers then but G.GAME.chips wasn't set yet

sonic cedar
#

@red flower

red flower
#

only

gusty iron
sonic cedar
#

ohhh

tranquil gull
weary haven
#

ahh but how do i make that conditional on the actual evaluated hand

zealous glen
faint yacht
#

What about upgrading the level ups themselves? blueprint

sonic cedar
#

DUUUUUUDE FINALLYFINALLYFINALLYFINALLYFINALLYFINALLYFINALLYFINALLY

faint yacht
gusty iron
#

oh yeah this too i guess

tranquil gull
#

how do i check this when i need to check it

weary haven
#

would scoring_hand be the evaluation?

brisk rose
faint yacht
#

context.scoring_hand contains the scoring cards.

weary haven
#

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

brisk rose
red flower
#

scoring_hand is a list of cards in the scored hand

#

dont use context in that

gusty iron
#

theyre a huge lobcorp fan tho

brisk rose
#

yeah they have an anomoly type name

#

i think

#

idk anything about lobcorp

sonic cedar
sturdy compass
zealous glen
weary haven
#

oh shid

weary haven
faint yacht
tranquil gull
#

then how would i get the score?

sturdy compass
#

I basically took the royal check and tacked a 9 onto it

weary haven
#

lol

sturdy compass
#

the key being returned is the localization key

faint yacht
weary haven
#

ahhhh

red flower
weary haven
#

since im taking ownership, if i dont return anything will it leave it as it was?

gusty iron
#

can someone remind me how level_up_hand() works

sturdy compass
#

I'm honestly not sure but I'd return the base one just for safety

zealous glen
red flower
sonic cedar
# red flower go ahead

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)

weary haven
#

phew

sonic cedar
#

GAH it came out huge

zealous glen
#

why is there a hyphen

red flower
sonic cedar
#

just dont work

red flower
#

dont know then, i would have to test it but i dont have your code :p

sonic cedar
#

darnnnnn

frigid blaze
#

Can someone help with writing the DNA joker?

sonic cedar
faint yacht
willow plinth
#

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

red flower
sonic cedar
#

ive been thinking about starting it

modern kindle
red flower
brisk rose
#

well... that will only rarely work

#

but it's worth a shot

willow plinth
sonic cedar
brisk rose
brisk rose
#

that's weird

willow plinth
brisk rose
#

in the error handler

#

or the dump routine

willow plinth
#

yeah maybe, but then again this is the first case of such

#

other issues i was able to find the lines easily

zealous glen
#

how are you dillying

modern kindle
#

im doing my best, hope you are well

gusty iron
#
    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

zealous glen
modern kindle
#

dont be cooked =[

zealous glen
#

I sure hope so

#

I wouldn't taste good