#đŸ’»ăƒ»modding-dev

1 messages · Page 14 of 1

short surge
#

but worked during the session of which i first set it

zealous glen
#

I meant the ability ^^ I’m trying to see if the variables are remembered or not

golden lake
#

discover_tallies

short surge
#

well the ability is basically a table of a few strings, id have to print it to know

zealous glen
#

Because I imagine it’s saved so I think you can get away with hooking load to set the sprite again

golden lake
#
local set_discover_talliesref = set_discover_tallies
function set_discover_tallies()
    set_discover_talliesref()

    G.DISCOVER_TALLIES.aspects = {tally = 0, of = 0}

    for _, v in pairs(G.P_CENTERS) do
        if not v.omit then 
            if v.set and v.consumeable and v.set == 'Aspect' then
                G.DISCOVER_TALLIES.aspects.of = G.DISCOVER_TALLIES.aspects.of+1
                if v.discovered then 
                    G.DISCOVER_TALLIES.aspects.tally = G.DISCOVER_TALLIES.aspects.tally+1
                end
            end
        end
    end
end
#

this

crisp coral
#

including Mobile.

golden lake
#

why is this erroring of all things

frosty dock
#

uh 1.0 does that for you

golden lake
#

yeah

#

how do i fix

short surge
#

i make it print something if that field is not nil, and renewed session does not have anything

narrow pollen
#

yeah, i was about to ask

crisp coral
#

does anyone have a 1.0 mod i can steal the code from 😊

zealous glen
narrow pollen
#

how set sprites plz thx :p

frosty dock
#

are aspects nonconsumable centers?

golden lake
#

they're consumable centers

short surge
frosty dock
#

then you're already covered by making a ConsumableType

golden lake
#

how do i do that

short surge
#

also on another note, is 1.0 mod code gonna be very different?

golden lake
#

its already different

frosty dock
#

yes

golden lake
#

also how do i do that

#

the consumabletype

short surge
#

it would have been a nightmare for me because im 6k line in right now

frosty dock
golden lake
#

there's no documentation for any of this

zealous glen
frosty dock
#

I'll get to docs, dw

short surge
zealous glen
short surge
golden lake
#

its fundamentally different

short surge
golden lake
#

or how do i

zealous glen
#

@short surge by the way, did you manually animate Typhoid Mary’s effect? Or did you reuse the existing animation?

short surge
frosty dock
#

syntax is no different from the other APIs

golden lake
#

what does that mean aure

short surge
frosty dock
#

SMODS.ConsumableType{key='Aspect', yadayadayada}:register()

golden lake
#

yeah but

#

for the individual

#

cards

#

oh god

zealous glen
golden lake
#

does this support soul_pos?

short surge
#

you mean the speeding up part? i basically play two hands and refund one hand

frosty dock
frosty dock
zealous glen
golden lake
#

so i can remove all of the boilerplate that i was using and just register a consumable type?

frosty dock
#

yep

golden lake
#

if so, that rocks

zealous glen
#

Kinda

golden lake
#

also @frosty dock how would i recreate this

    local get_type_colourref = get_type_colour
    function get_type_colour(_c, card)
        local fromRef = get_type_colourref(_c, card)

        if _c.set == "Zodiac" then
            return G.C.SECONDARY_SET.Zodiac
        elseif _c.set == "Aspect" then
            
            if _c.name == 'Breath' then return G.C.BREATH
            elseif _c.name == 'Blood' then return G.C.BLOOD

            elseif _c.name == 'Space' then return G.C.SPACE
            elseif _c.name == 'Time' then return G.C.TIME

            elseif _c.name == 'Light' then return G.C.LIGHT
            elseif _c.name == 'Void' then return G.C.VOID

            elseif _c.name == 'Mind' then return G.C.MIND 
            elseif _c.name == 'Heart' then return G.C.HEART

            elseif _c.name == 'Life' then return G.C.LIFE
            elseif _c.name == 'Doom' then return G.C.DOOM 

            elseif _c.name == 'Hope' then return G.C.HOPE
            elseif _c.name == 'Rage' then return G.C.RAGE

            end
        end

        return fromRef
    end
#

or will this work still

short surge
#

so i wrapped draw_from_play_to_discardso that it draws back the played card, added to hand, highlights and plays them again with one extra hand given

#

that's pretty much all

frosty dock
golden lake
#

but wll it work with all this conditional though

#

i have a different color for each Aspect

frosty dock
#

uh I don't support that

golden lake
#

nooo my gimmick

frosty dock
#

your hook will still work

golden lake
#

aure what is the whole uh

#

"loc_txt" in consumable type for

edgy reef
#

Just a generic thing for game objects iirc

golden lake
#

btw my category name got borked

#

it works fine but its borked

#
SMODS.ConsumableType{
  key = 'Aspect',
  collection_rows = { 3, 2 },
  primary_colour = G.C.SET.Aspect,
  secondary_colour = G.C.SECONDARY_SET.Aspect,
  loc_txt = {},
}:register()
#

very confused

narrow pollen
#

so uh

#

how the hell do i link an object to its atlas

queen scroll
narrow pollen
#

like, why is it that the atlas isn't set to the key by default?

queen scroll
narrow pollen
#

i mean, fair; but you have pos for that

#

and wouldn't you rather have it display the incorrect sprite than crash?

queen scroll
#

yeah but then you’d have to have multiple objects with the same key

narrow pollen
#

i'm just saying if you don't have a separate atlas value

#

just set it to the key as a failsafe

queen scroll
#

or you could just set the atlas

#

it’s usually better to throw errors for these things so it’s easier to find and fix the problem

golden lake
narrow pollen
#

OH

#

so apparently uh

#

the registry process automatically slaps on the first four letters of your mod as a sort of identifier

edgy reef
#

The prefix yea

#

You can define it yourself btw

narrow pollen
#

ahhhhhh, gotcha

edgy reef
#

Through “---PREFIX:”

random sleet
#

enhanceapi for 1.0 real?

narrow pollen
#

ye

#

porting all my mods atm

random sleet
#

sick

#

maybe it'll work this time heh

edgy reef
golden lake
#

no it does

#
        process_loc_text = function(self)
            if not next(self.loc_txt) then return end
            SMODS.process_loc_text(G.localization.misc.dictionary, 'k_' .. string.lower(self.key), self.loc_txt, 'name')
            SMODS.process_loc_text(G.localization.misc.dictionary, 'b_' .. string.lower(self.key) .. '_cards',
                self.loc_txt, 'collection')
            SMODS.process_loc_text(G.localization.misc.labels, string.lower(self.key), self.loc_txt, 'label')
            SMODS.process_loc_text(G.localization.descriptions.Other, 'undiscovered_' .. string.lower(self.key),
                self.loc_txt, 'undiscovered')
        end
edgy reef
#

Huh, nice

golden lake
#

i think it might have been uh

#

me overriding it accidentally

edgy reef
#

If you’re going to override it to pass your own loc text you do need to call the object’s base process_loc_text function.

golden lake
#

it was a bit of leftover .9 code

#

wait no ist still aa

#

oh i see whats going on

#

@frosty dock what goes in loc_text of ConsumableType

#

i think i figured it out

#

haha no i dont

random sleet
#

arent example ones registered for tarot/planet/spectral

golden lake
#

they dont have anything in loc_txt

narrow pollen
#

wait

#

why are all my sprites nil type

golden lake
#

oh my god fuck this

narrow pollen
golden lake
#

no

narrow pollen
#

i see

golden lake
#

also thats a horrible way to do it

#

just set up a git repo with branches

narrow pollen
#

i mean, that's the only method i have because i am

golden lake
#

i have all of my 0.9 code intact on a branch

narrow pollen
#

impulsive and unintelligent

#

all i need to figure out is why this is happening

#

is this how sprites are supposed to initialize?

edgy reef
#

I think?

#

Lemme see

#

Sprites don’t have a defined “Set”, which is what the the nil in that print message is

#

Same issue I had for a bit with Challenge API

golden lake
#

yay finally a different goddamn crash

#

just put this because idk what these refer to :)

#

all i know is that these are needed if you want anything to show up

#

and after you fill them all out you get a different crash

#

what does any of this refer to

#

@edgy reef

edgy reef
#

Looks like collection needs to be a table.

golden lake
#

what do i put in it then

edgy reef
#

Although I can’t remember what the game has in G.localization.misc.dictionary

golden lake
#

it still hates me

#

i made it a table

narrow pollen
#

FINALLY

edgy reef
#

Ohh wrong line, sorry

#

It’s mad about undiscovered

#

Not collections

golden lake
#
  loc_txt = {
    name = 'Aspect',
    collection = 'Aspect Cards',
    label = 'Aspect',
    undiscovered = {}
  },
#

i presume undiscovered is for like

#

if its not discovered

#

right

edgy reef
#

Looks like it

#

It’s def a description for an object

golden lake
#

yeee

narrow pollen
#

okay

#

it's not fucking crashing, i'll take it

#

but all my descriptions are blank...?

crisp coral
#

it's ported!!!!!

narrow pollen
#

THERE we go

zealous glen
keen topaz
#

anyone have any good resources for creating mods?

zealous glen
keen topaz
#

like a tutorial

#

im wanting to make my own custom joker mod, and have no clue how to do so

keen topaz
#

ah! ty!

crisp coral
#

what's the way to check if a mod exists in 1.0.0

random sleet
#

oh no

crisp coral
#

wdym by oh no

#

😭

#

actually i can just. comment that line out for now lol

#

oh hm. set_ability is not set_abilitying

random sleet
#

theres a modlist or mod_list somewhere

#

i think

narrow pollen
#

what's the way to keep jokers out of the pools in alpha? anyone around who knows?

crisp coral
#

you need a yes_pool_flag

golden lake
#

this is so silly

crisp coral
#

but i think that needs to be set after the joker is added to pools

golden lake
#

me when i play a hand when i have 4 hands and 3 discards (i've now placed myself in a situation where I have 3 hands and 3 discards meaning the total difference between them is 0)

crisp coral
#

or maybe you can also overwrite the inject function

narrow pollen
#

hmmmmmm...

#

...should i give runner quadratic scaling, too...?

#

thinking of like

#

having it give +1 chip, and then one more the next time

short surge
#

sorry for being kinda annoying and asking about this a couple times, but what's the major difference going into SMOD 1.0?

#

like what would I have to modify in general

#

is it like wrapping no longer exist? or what is the fundamental difference that prevents pre-1.0 mods to be compatible?

random sleet
worldly sapphire
#

How do i load custom booster pack names before localization initializes?

random sleet
#

you can put literally anything in the constructor tables for 1.0 alpha

#

itll all get dumped to the P_CENTERS entry

short surge
zealous glen
#

Only the ones I know

random sleet
#

same for no_pool_flag, bingus, ahdbiwnwhdkcnals, and sbeve

zealous glen
#

bogos binted?

short surge
#

i was afraid i have to rewrite my mod entirely

crisp coral
#

oh cool

short surge
#

for now i'd stay as a caveman then

crisp coral
#

the way you initialize stuff is also different

short surge
crisp coral
#

it is, if you've been doing it manually

short surge
#

wdym manually

random sleet
short surge
#

i don't think any jokers are written automatically LOL

random sleet
#

my jokers were

short surge
#

smarteyes joker mass production

random sleet
#

ai jokers

short surge
#

I write all my joker with my lovely ctrl c and ctrl v

#

does 1.0 have anything to do with node hell?

crisp coral
#

no

short surge
#

localization stuff?

#

^just want to make sure im not reinventing the wheels

#

currently tackling playing card uis

random sleet
#

localization stuff yes

#

idk anything about it tho GITDtamariPlush

short surge
crisp coral
#

localization stuff very

short surge
#

well if it has better way of dealing with generate_ui then im happy to surrender and convert everything by then

#

for now i do what this guy do

random sleet
#

it does, its called lovely

random sleet
#

yall what if i make the first mod with >100 jokers and its fuckign emoji....

crisp coral
#

actually based

short surge
#

😅

zealous glen
#

Does 1.0 work if I require the files where I define Joker data?

narrow pollen
#

how does this sound for a reworked matador effect?

and $2 for every debuffed card played```
zealous glen
#

I would prefer if the reward for Boss Blind triggers were higher and it were more consistent

narrow pollen
#

well, the problem is there are really two different types of boss blind abilities

#

well, three if you count flips as separate

#

debuffs, flips, and "fuck you"

crisp coral
#

four

#

The Serpent

narrow pollen
#

debuffs and flips are obvious (the game refers to it as "drawn face down")

#

"fuck you" are things that activate at the start of the blind or before a hand is played

#

so my matador idea will still earn 4 dollars from even the water

crisp coral
#

also it's not plausible to check for ability triggers, since some bosses do stuff on set_blind (The Manacle, The Water) but some only set variables (Verdant Leaf iirc?)

narrow pollen
#

that's why the second effect exists

crisp coral
#

and it's impossible to differentiate between these without hardcoding

zealous glen
#

Proposal: hardcode

#

Or make a Boss Blind APi

crisp coral
#

hardcode means it doesn't support modded bosses which is a huge L

narrow pollen
#

the second effect would give you 2 dollars for every debuffed card or joker in the calculation (which wouldn't work if matador itself is debuffed)

crisp coral
#

also example of what i said

zealous glen
#

That's what the API is for

crisp coral
#

according to the joker desc, The Water, The Needle and The Manacle would pay out

narrow pollen
#

yeah, it would give a flat 4 dollars

#

instead of the 0 dollars they give right now

#

because current matador is "gain 8 dollars if you play a debuffed card"

crisp coral
#

but if you just check for set_blind then The Mouth and The Fish would also pay out

narrow pollen
#

essentially

crisp coral
#

it's like. incredibly difficult to implement properly

narrow pollen
#

oh yeah, there's also "not allowed!" to check for

crisp coral
#

Arm, Ox and Flint also procs

narrow pollen
#

that's the idea

#

i want it to proc on as many boss blinds as possible

crisp coral
#

yea you gotta hardcode i think

narrow pollen
#

like the only ones it won't proc on are the wall and violet

crisp coral
#

too many edge cases when considering modded bosses

zealous glen
#

I again think it should just have a large payout of the effect is triggered

#

Which includes hardcoding it

regal shoal
#

Am I stupid. My sprite doesn't apply to my joker for some dark reasons on 1.0. Do I need to do something else than just giving them the same key ?

zealous glen
regal shoal
random sleet
#

still needs j_

#

j_mod_card

regal shoal
#

ty

queen scroll
#

hey, i'm trying to figure out how to add the blueprint compatible/incompatible label to my joker in steamodded, has this been done before and if so where can i find it?

regal shoal
#
self.ability.blueprint_compat_ui = self.ability.blueprint_compat_ui or ''; self.ability.blueprint_compat_check = nil
            main_end = (self.area and self.area == G.jokers) and {
                {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}},
                    }}
                }}
            } or nil

This may help you

maiden phoenix
#

You tried looking at Blueprint loc def code?

queen scroll
regal shoal
#

You put that in generate_UIBox_ability_table ?

queen scroll
#

i put it in steamodded's loc_def function which allows me to add it to main_end

#

right now it's doing nothing, probably because self.ability.blueprint_compat_ui is never defined anywhere

regal shoal
#

Well I can't help you I've no idea

queen scroll
#

ok that's fine

random sleet
#

blueprint might make that in Card:update?

queen scroll
#

oh wait you're right

#

that unfortunately doesn't just fix it immediately :(

surreal marsh
queen scroll
#

what did you do to seed money??????

surreal marsh
#

it's my test challenge and i set start money to $4000

random sleet
#

banish.... 👀

surreal marsh
#

vanishbalatrojoker

frosty dock
surreal marsh
#

after making reserve area I thought adding a vanish button would be easy balatrojoker

#

but cards in shop seems to use a different function to generate UI

zealous glen
#

What do you think of this edit job of the legendary background? I might make my own eventually, I just wanted to whip a quick proof-of-concept

odd dock
#

looks good, pretty saturated but i assume that'd be changed past the proof-of-concept stage. what does the name plate say?

zealous glen
zealous glen
#

Not sure about the neck

tawny perch
maiden phoenix
#

Would you guys write "per sold consumable" or "per consumable sold"?

zealous glen
tawny perch
#

that makes sense

zealous glen
odd dock
#

ahh i see

zealous glen
zealous glen
#

hmmm

#

I can try a more usual legendary angle

surreal marsh
random sleet
#

what the hell are those for

surreal marsh
#

when padding is negative, each empty row node after two buttons moves them down a little bit

random sleet
#

that is so jank

#

hey is it a terrible idea to run this every frame

shell timber
#

why does this need to run every frame

#

i mean computers are powerful enough(?) but why

random sleet
#

it doesn't lol

#

i just need to somehow hook "deck was changed"

#

it is currently running every frame in my game

#

but just because i wanted to make sure that the logic worked lol

#

(notably it causes no noticable fps drops or other issues)

surreal marsh
#

if the game doesn't lag then it's fine balatrojoker

random sleet
maiden phoenix
#

2 sprites left to do

random sleet
#

what are these so-called "sprites" you refer to

maiden phoenix
#

An update for my joker mod

maiden phoenix
random sleet
#

ok but whats a sprite tho

azure wraith
#

emoji jokers...

maiden phoenix
#

So true why haven't I been using emotes

random sleet
#

emojiokers...

maiden phoenix
random sleet
#

(it's because you want to make a mod that's actually good that people will enjoy)

maiden phoenix
#

I'm really trying hard

#

But it ain't JankyJonklers, More Fluff or Bunco

random sleet
#

(meanwhile i'm just making a flaming pile of garbage)

maiden phoenix
#

Naming my forum post mod a "[Content Mod]" was my first mistake lol

maiden phoenix
azure wraith
#

if you think those sprites are bad. get ready for my sprites

maiden phoenix
random sleet
#

these are the Real Sprites i'm going with btw

maiden phoenix
#

I mean that's how SAP did it for a while

azure wraith
maiden phoenix
#

No they're placeholders, they're meant to be ugly looking

azure wraith
#

the treasure chest and maglev (?)

maiden phoenix
#

More like a bullet train but yea they're placeholders art, next one to do on the list. Then the sprite grind will finally be over 💀

random sleet
#

onto the next 10 jokers

maiden phoenix
azure wraith
#

how many jonkers are you planning on

random sleet
#

clearly i should make another 15 jokers right now

maiden phoenix
#

With this update, I'll be at 31 Jokers

random sleet
#

also it occurs to me that 🕛 is basically a 24-sided card

azure wraith
#

that's a lot
im just aiming for 15 atm lol

maiden phoenix
azure wraith
#

tho with my luck as soon as its ready steamodded 1.0 will be released

maiden phoenix
random sleet
#

Played 2s give X2 Mult when scored

maiden phoenix
random sleet
#

gigabrain strat

azure wraith
#

2s dont need another busted synergy

maiden phoenix
#

2s needs to be destroyed

crisp coral
#

played 3s give x3 mult when scored

maiden phoenix
#

đŸšœ : 2s held in hand are destroyed

random sleet
#

X3

maiden phoenix
#

Let's get the full combo baby

azure wraith
#

played aces give x1 mult when scored

frosty dock
#

view deck ui function is 200 lines, my lovely patches on it are like 180

#

should i like

#

just overwrite the function

random sleet
#

lovely patches

frosty dock
#

i mean it was painful enough converting it to lovely, but it seems a little inefficient

random sleet
#

less likely to implode if game updates change things (less likely, not impossible)

azure wraith
#

what are you doing that requires so much patching to view deck

random sleet
#

suit and rank apis i assume

frosty dock
#

yeah

azure wraith
#

oh thats cool

random sleet
#

aure out here being based af

azure wraith
#

i haven't touched anything substantial yet
just silly jokers

frosty dock
#

but yeah the patches on view deck are literally half of the lines of all patches for the playing card API

#

I'll consider changing back to just overwriting the function if I ever happen to worry about optimizing

azure wraith
#

modding this game is so much more enjoyable than any other ive ever tried lol
it just worksâ„ąïž

candid cloak
#

When you mod a new joker do things such as foil, poly and negative have to be added manually (especially the Negative sprite) or does it just flip automatically?

frosty dock
#

(it definitely doesn't just workâ„ąïž in terms of adding suits and ranks)

#

editions are shaders

#

you don't need to worry about them

azure wraith
#

yeah you get editions for free

random sleet
#

oh also

#

thoughts on widening the suit tally display based on # of suits

#

(it looks so jank with even like 10 suits)

frosty dock
#

uh maybe not a terrible idea

azure wraith
#

if you have 10 suits shouldn't you just expect it to be cursed?

frosty dock
#

btw i reorganized patches

#

it's not just one huge 1500 line file anymore

random sleet
#

wait you can do that

frosty dock
#

yeah

#

I'll pretend that there aren't two files in there that make up half the lines of the entire thing

random sleet
#

center and core?

frosty dock
#

core is just the copy patch

maiden phoenix
#

I was thinking language

frosty dock
#

language is tiny

maiden phoenix
#

Huh

crisp coral
#

poker hand and playing card

frosty dock
#

playing_card is literally 500 lines though

random sleet
frosty dock
#

the next largest are center and blind, blind mostly because there's lots of functions used by blinds

crisp coral
#

blind huh

#

didn't expect thwt

random sleet
#

The Blindomancer speaks...

crisp coral
#

omw adding a superboss that's just a self insert as a blind

frosty dock
crisp coral
#

lmao

maiden phoenix
random sleet
#

it's out of my hands, i'm only a clock

mellow sable
#
# Stake modifier API
[[patches]]
[patches.pattern]
target = "game.lua"
pattern = '''
if self.GAME.stake >= 2 then 
    self.GAME.modifiers.no_blind_reward = self.GAME.modifiers.no_blind_reward or {}
    self.GAME.modifiers.no_blind_reward.Small = true
end
if self.GAME.stake >= 3 then self.GAME.modifiers.scaling = 2 end
if self.GAME.stake >= 4 then self.GAME.modifiers.enable_eternals_in_shop = true end
if self.GAME.stake >= 5 then self.GAME.starting_params.discards = self.GAME.starting_params.discards - 1 end
if self.GAME.stake >= 6 then self.GAME.modifiers.scaling = 3 end
if self.GAME.stake >= 7 then self.GAME.modifiers.enable_perishables_in_shop = true end
if self.GAME.stake >= 8 then self.GAME.modifiers.enable_rentals_in_shop = true end
'''
position = "at"
payload = "SMODS.setup_stakes()"
match_indent = true
overwrite = true

How do I do multiline patches in Lovely? This pattern isn't being detected

frosty dock
#

you need to use a regex patch

scenic zenith
#

anyone know how i could forbid a voucher from appearing in ante 8 specifically

frosty dock
#

pattern patches are single line by nature

scenic zenith
#

cause i just noticed my +1 ante voucher breaks the part whree you win the game

mellow sable
#

I'm just going to wrap it in an "if false" for now

frosty dock
#

what if we can make mods be disabled without reloading?

#

game objects can be removed fairly easily with a re-injection by checking if the corresponding mod is enabled

#

that leaves hooks, which could be reverted with a disable function

#

and lovely patches, which... uhhhhhhhh

#

would have to be wrapped in some sort of config check?

#

except that doesn't work for replacements

ruby geyser
#

Strange thing I've noticed - Checking to see if i've configured my make_card for a spectral making joker correct so it can make Soul cards, if you get all the spectrals then try generate one it just starts making Incantations lol

zealous glen
fair inlet
#

yeah incantation is the fallback

zealous glen
zealous glen
frosty dock
#

pretty much same as a pattern patch, except the pattern is a regex

frosty dock
#

maybe post-load patching/unpatching is possible, but idk about that

zealous glen
frosty dock
#

yeah

scenic zenith
#

no pools flag hates me

#

let me add it to my voucher

#

pls

#

this just doesn't work

zealous glen
frosty dock
scenic zenith
#

the checking doesn't seem to be joker only

#

it checks outside of type check

#

but you might be right cause it doesn't work anyway

frosty dock
#

iunno, I'd need to have a closer look at that code to tell

scenic zenith
#

was hoping this would work

#

but it doesn't

crisp coral
#

what's the atlas field for animated sprites

scenic zenith
#
G.P_CENTER_POOLS.Voucher[33] :: { ...["no_pool_flag"] = gondola_ante8,...,["key"] = v_gondola,...}
G.GAME.pool_flags :: { ["gondola_ante8"] = true,}
#

im very coinfused for why this doesn't prevent it

crisp coral
scenic zenith
#

i have chcked and v.no_pool_flag and G.GAME.pool_flags[v.no_pool_flag] is true for my voucher

gaunt thistle
scenic zenith
#

so it must somehow genuinly not apply to vouchers

#

but i have no idea how

frosty dock
#

So maybe I just have to accept that disabling mods means reloading the game

gaunt thistle
#

in certain cases yes, but it also depends on how the patch is written

frosty dock
#

might allow mods to tell the loader if they can be hot reloaded

zealous glen
scenic zenith
#

i think it does use this function

zealous glen
#

I edited this artwork I made during the beta. What do you think? (body horror)

scenic zenith
#

cause this function creates the availabel pool and check things like required vouchers and adds blanks if none are left

#

but also this line just doesn't work so i might be wrong

scenic zenith
#

im pretty sure that is the call

#

again i have no idea why it doesn't works

#

but i have foudn a different solution

zealous glen
scenic zenith
#

i just set the winning ante to 9 if you use the +1 ante in ante 8

golden lake
#

morning balatrogamers

zealous glen
scenic zenith
zealous glen
scenic zenith
#

idk

#

something is weird here

zealous glen
scenic zenith
#

i looked into this for like an hour

#

I definitely tried

#

it just doesn't work

#

and idk why

#

i used a thing in the function it calls, which is called i can confirm that, and it just ignores it

#

maybe i made a mistake somewhere idk

#

the +1 winning ante works so im just gonna give up on it

#

lmao

#

actually i shyould prob check if that changes the final boss thing

#

surely it isn't basd on winning ante how often they appear

zealous glen
scenic zenith
#

thats what i thought

#

but that does call get_current_pool

#

which uses the thing I was trying to use to block my voucher from being valid

#

but it doesn't work

zealous glen
#

Wait, did you try yes_pool_flag?

scenic zenith
#

no i used no_pool_flag

#

i checked if the entire if condition would be true

#

and yes it would be

zealous glen
scenic zenith
#

so add should be set to nil

zealous glen
#

I think that's the one that should disable it

scenic zenith
#

they both can do it

#

based on the code

zealous glen
#

no_pool_flag is the other way around

scenic zenith
#

yes i was using it that way

short surge
#

@zealous glen I figured the card save thing out btw buddy

#

it turns out you have to wrap Card.save and Card.load

#

or you have to put stuff in variables of a lower level for it to be saved, for example, self.ability.whatever

scenic zenith
#

rip my winning ante has an effect on final biosses so im gonna have to look into pool flags again and see if it works

short surge
#

self.whatever won't do unless you wrap

night pagoda
#

how do I use steamodded alpha?
EDIT: figured it out, didn't work because of other mods

calm nova
#

when does the update to the injector happen?

short surge
#

correct me if im wrong but i don't think it's released yet

zealous glen
short surge
#

people are still actively committing

zealous glen
#

People are working in the alpha in advance

#

Like the pilgrims

zealous glen
short surge
#

I think it might be a good idea for SMOD to do the wraping

#

something like self.modded

#

so that people can start using self.modded.whatever

short surge
#

^lmk if i should make a PR

worldly sapphire
#

everytime i try to add a custom name to a booster pack the game crashes and then it says it tried to index "Booster"

golden lake
#

Tangle Buddies rework WIP

honest elbow
#

factorials damn

golden lake
#

(Horror Terrors will only appear in shop if Tangle Buddies have been destroyed)

fair inlet
#

oh god not factorials n!

golden lake
#

(Tangle Buddies don't have a destruction trigger, you have to either destroy them via Ankh, Ceremonial Dagger, Hex or other means)

#

that's what the little bit on the card references

#

Ankh and JXXI (J21 -> Joker with ID 21 -> Ceremonial Dagger)

formal viper
zealous glen
#

Still working on it, but now that I know how to animate I made it so you see the Ace be destroyed even if it's not in hand

frosty dock
#

I'd prefer not to mess with the inner structure of Cards

mellow sable
wooden nexus
mellow sable
#

I'm making an API for it so...

wooden nexus
#

Epic

#

Question: Could someone make a split path of stakes?

mellow sable
#

yes

wooden nexus
#

awesome

mellow sable
#

this way multiple higher-stake mods won't overlap

#

or in your case, reverse stakes

dawn valve
#

can we mix and match stakes now?

mellow sable
#

you'll have to override the stakes but yes

#

since by default even if you say it applies them, it'll still apply all previous stakes

mellow sable
dawn valve
#

or we can make stakes that are just those, but that seems inefficient

mellow sable
#

You can take ownership of things in Steamodded so you can just change the stakes so they don’t apply previous stakes

random sleet
maiden phoenix
#

The spriting is done 🎉

wooden nexus
maiden phoenix
#

Ty!

zealous glen
#

Hand art courtesy of Gappie. Changing the colors of the UI elements makes me happier than it should.

hallow forge
#

does this work for tarots too?

edgy reef
#

It should

hallow forge
#

k ty

wooden nexus
#

Changed both Jimbo Only and Jimboless in the ultimate collection

#

It's basically the exact same as the challenge deck.

maiden phoenix
#

It's jimbover

slow ocean
maiden phoenix
#

Hi Lyman

short surge
worldly sapphire
#

i can't put a custom name in a booster pack, can someone help me?

worthy depot
#

I don't know why but whenever I see Lyman post "It's Joker" I think of Twist by Korn.

Don't know why and I'm not going to explain myself.

hallow forge
#

so from what i understand a bunch of syntac changed in Steammodded, how would i go about figuring out how i'm supposed to change my code?

mellow sable
#

Any SMODS interaction would change, and that’s pretty much it

hallow forge
#

but like, HOW do i change it

mellow sable
#

In general everything is a table now. You can look at the code and projects that are switching to 1.0.0 as a reference but documentation will likely come later

hallow forge
#

do you now of any mods that work in 1.0.0

mellow sable
#

Mine does balatrojoker

hallow forge
#

where is it?

mellow sable
#

Not much yet but it should show some good usage of the API

hallow forge
#

whats with the return statements at the end of all the items folder files

mellow sable
#

that's something specific with my mod

mellow sable
hallow forge
#

yeah im just gonna try to revert to the previous version

#

of Steamodded

#

i managed to get an error with no mods

unkempt thicket
#

what is this error

hoary sand
#

something went wrong :(

edgy reef
#

StackTrace crash?

odd dock
azure wraith
#
if joker_config.gm_shattered_mirror then

        SMODS.Jokers.j_gm_shattered_mirror.calculate = function(self, context)

            if not context.other_joker and context.cardarea == G.jokers and context.after then
                for k, v in ipairs(context.scoring_hand) do
                    if pseudorandom('shattered_mirror') < G.GAME.probabilities.normal/13 and v.config.center ~= G.P_CENTERS.m_glass then
                        G.E_MANAGER:add_event(Event({trigger = 'after', delay = 0.0, func = function()
                            local over = false
                            v:set_ability(G.P_CENTERS.m_glass, nil, true)
                            self:juice_up(0.3, 0.5)
                            G.E_MANAGER:add_event(Event({
                                    func = function()
                                        v:juice_up()
                                        return true
                                    end
                                })) 
                        return true end }))
                        G.E_MANAGER:add_event(Event({trigger = 'after', delay = 0.4, func = function()
                        return true end }))
                    end
                end
            end
        end

        SMODS.Jokers.j_gm_shattered_mirror.loc_def = function(self)
            return {G.GAME.probabilities.normal, 13}
        end
    end

ok this is a strange enough problem that i'm going to ask here
this joker is supposed to turn scored cards into glass cards after the hand is scored with a 1/13 chance. it does this, but you can't actually tell that it changed the cards until you go into your deck menu. how do i get it to turn them into the cards "live" like midas mask does? i thought i was copying the method pretty accurately but i must be missing something

#

also for reference of what i mean by "you can't tell that it changed the cards without going into the deck menu"

random sleet
#

whats the "true" argument in set_ability?

azure wraith
#

apparently something that makes it work better when it's set to false

#

it still isnt juicing the cards tho

random sleet
#

because you arent juicing them

azure wraith
#

G.E_MANAGER:add_event(Event({
func = function()
v:juice_up()
return true
end
}))

#

isnt that what this does?

random sleet
#

oh

#

why is that in another event

azure wraith
#

midas does it like that

random sleet
#

does midas juice cards?

azure wraith
#

i thought it did?

random sleet
#

i dont recall it doing so but i dont use it much

azure wraith
#

it definitely plays sfx

random sleet
#

it might also be something that works differently because you're at context.after timing

azure wraith
#

oh that sorta makes sense

random sleet
#

instead of context.before

azure wraith
random sleet
#

i dont know anything

#

i dont have the source code in front of me im on a bus rn lol

azure wraith
#

lol
well ty

#

moving it out of the event context seems to make it work

#

oh maybe its because midas needs to pause scoring for it to happen but the after scoring doesn't need to be paused?

random sleet
#

not sure. only thunk knows.

#

whats the nothingy event at the end for?

#

oh i guess for the delay

narrow pollen
#

yet again, i am being absolutely cucked by localization

random sleet
#

lets goo

azure wraith
#

yeah i think it makes it stick there for longer

#

i was referencing morefluff for some of how it applied end of hand buffs and they put a delay in there

#

(since idt any joker in vanilla balatro does something to cards after scoring?)

random sleet
#

makes sense, though i wonder if the simple "delay(0.4)" would work just as well

#

but it might need to be an event idk

spice scroll
#

this is just the function for the graphic of the discard ticking down right

random sleet
#

the graphic and also the actual effect

spice scroll
#

huh

random sleet
#

the G.GAME.current_round.discards_left = ... line between the two comments

spice scroll
#

wheres the part that determines how many cards are drawn?

#

actually that might be in draw card

#

trying to tackle these next

short surge
#

slowly but surely...

azure wraith
#

i also checked and the sfx from midas is from the joker, not the buffing

broken vine
#

that's right, the endgame for highcard is to like, have every card be it's own thing instead of being tied to a joker, right?

azure wraith
#

which is sort of weird
it feels like it ought to just be like an enhance tarot but it's not

short surge
broken vine
#

insane.

#

can't wait!

azure wraith
#

are the x cards like, enhancements but with a different effect based on the rank?

short surge
short surge
random sleet
#

its a replacement "base" right

short surge
#

you can have all three on a card at the same time

azure wraith
#

its like an alt deck then?

short surge
random sleet
#

interesting

short surge
#

the deck gives you all 52 x playing cards as a deck to begin with

#

but i want those to be accessible to other decks as well

random sleet
#

this will be huge for playing card modding

broken vine
#

the concept of the highdeck mod as is fun enough to describe, the ultimate version is going to be buck wild lol

short surge
random sleet
#

additional shit on cards means additional shit cards can do

short surge
#

i was trying this like a month ago and gave up, but now i have a much deeper understanding (i think) of how playing cards work, i think i can crack it happen!

random sleet
#

this still on 0.9.8?

short surge
#

yeah...

#

a little awkward timing

#

but from what i heard it might not be too too bad for me to port

#

i hope

azure wraith
#

is 1.0.0 confirmed to actually be soon?

short surge
#

i did however wrapped like 50 functions by now so

random sleet
#

apprently 1.0.0 "stable" is just waiting on lovely 0.5 "stable"

azure wraith
#

i know it's in development but "in development" seems like it can often turn into "5 months later still no idea when it will be ready" lol

#

oh

random sleet
#

but keep in mind 1.0.0 still wont be "feature complete"

#

if that makes sense

short surge
#

well we don't know about lovely 0.5 stable is gonna happen any time soon right?

random sleet
#

idk ask meth

#

i think theres just some fringe case stuff getting ironed out

short surge
#

I guess I will just keep at it, once i sort out everything i look into how to port

azure wraith
#

i assume just jokers won't be too bad to port (clueless)

short surge
#

wellllllllllllllllll

#

localization has been hell

random sleet
#

every api got full rewrite basically

#

and there's new localization functionality

short surge
#

well maybe good thing is i rarely used any api (i think)

azure wraith
short surge
#

other than looking for mods? i guess

azure wraith
#

anything with SMODS is api right

short surge
#

ok i guess only joker definition so far, for me at least

random sleet
#

instead of SMODS.Joker:new(...,...,...,...):register()
you do SMODS.Joker {name=..., key=..., ...}

azure wraith
#

ok that's not really that bad tbh

random sleet
#

yeah

azure wraith
#

i can come up with some stupid regex probably

#

or something

random sleet
#

same goes for sprites and stuff

short surge
#

well 53 manual change for me

#

oh fuck sprites

azure wraith
#

i mean i only have 5 jokers lol

random sleet
#

WHY ARE YOU MANUALLY REGISTERING FIFTY THREE JOKERS AAAA

short surge
#

i thought id have to change every joker definition tho right?

random sleet
#

yeah

azure wraith
#

oh wait actually this is really easy to change i think
i just turn my current joker definitions into a list and then parse the list into the new function

short surge
#

i did it like this

random sleet
#

oh ok

azure wraith
#

which is like a really stupid looking thing but also idrc

random sleet
#

yeah you can just parse that into a new table for the constructor ig

short surge
#

time to write python script to write lua

random sleet
#

you also can just put calculate/loc_def/use/can_use/etc... functions directly in the constructor

azure wraith
#

i mean still idk if i want to bother changing to 1.0 until it's like. released

short surge
#

oh that's neat

random sleet
#

no more 80 lines of SMODS.Jokers.j_*.calculate = function

short surge
#

caveman be like

random sleet
#

yes_pool_flags can also be put straight in

short surge
#

good

azure wraith
#

pool flags are going to be like
food etc right

random sleet
#

as well as no_pool_flag, asdf, random_thing_9000, etc.

short surge
#

but this is not really out for everyday users right?

#

like i think majority people are not git cloning

random sleet
#

lol git clone

narrow pollen
#

i'm so close to just

random sleet
#

me, an intellectual: download zip

azure wraith
#

oh lol

narrow pollen
#

stealing my fake localization code

#

from an old version of enhanceAPI

azure wraith
#

who wants to deal with git if they dont have to tbf

narrow pollen
#

because i am so tired of this localization bullshit

random sleet
#

numbuh what even are you having trouble with

short surge
#

i feel you buddy

#

here's how i learned

random sleet
#

what the fuck is that

short surge
#

wrote a debug function that spits out everything of a card and hack every piece that's hackable

narrow pollen
#

so basically

#

you just did what i did

short surge
#

LOL

narrow pollen
#

in the initial enhanceAPI release

short surge
#

the way how main is is crazy

narrow pollen
#

how fucked is it

random sleet
#

numbuh you're on 1.0 right

narrow pollen
#

that recreating a function in the game

#

is easier than actually utilizing it

random sleet
#

are you actually putting your localization stuff in a process_loc_txt function somewhere

short surge
#

i haven't give up on just wrapping

narrow pollen
#

...wait, what?

random sleet
#

smods has localization support now

short surge
#

but i am now leaning towards making my thing as a info tooltip instead of overwriting main frame

narrow pollen
#

why is this the first i'm hearing of process_loc_txt?

short surge
#

^me too actually lol

#

teach me sensei

random sleet
#

process_loc_txt functions on registered SMODS.GameObject instances put things into localization

narrow pollen
#

yeah, see

random sleet
#

any localization entries defined outside of them get deleted

narrow pollen
#

this is enhanceAPI shit

random sleet
#

so why doesnt enhanceapi extend SMODS.Center for enhancements

narrow pollen
#

...

THAT'S what the problem is

short surge
#

i think the current hacky way is

#

this thing is only ever gonna be used upon hovering, right?

#

just hack the table before hovering

random sleet
#

oh sorry you only read text if its huge and annoying

#

why doesnt enhanceapi extend SMODS.Center

short surge
#

so you "see" what you want

#

but don't actually have to modify it

#

^kind of like "Texture Surprise" in Hunter X Hunter, if anybody gets the reference

random sleet
#

like, look at how SMODS.Joker is defined in smods 1.0 and just do that but enhancementy

iron delta
#

Anybody know how to add text to the new button" I have text="Test" but it doesn't seem to do anything

#

I'm inserting it using

-- Add Undo button
function create_UIBox_buttons()
    local t = original_buttons()
    table.insert(t.nodes, #t.nodes + 1, undo_button)

    return t
end
#

Button itself works fine

mellow sable
#

you'd better be scared (art by Ein13)

random sleet
#

good freaking luck with making an undo button btw (idk how the text works sorry)

iron delta
#

why good luck?

random sleet
#

because theres a million edge cases

iron delta
#

Not if you're just using states lol

random sleet
broken vine
#

it's the only other mod i know that's actually added a new button

short surge
#

I also added a button but it's a new tab when you view the deck

unkempt thicket
#

button on deck view?

#

suit pages?

short surge
#

it's Diamond Queen Balor in my mod

unkempt thicket
#

I need suit pages API

short surge
iron delta
#

Text just doesn't show up

mellow sable
#

most likely

#

but stakes 8/16/24 are the big ones

unkempt thicket
short surge
iron delta
#

here's the full mod

#
local undo_button = {n=G.UIT.C, config={id = 'undo_button', align = "tm", minw = 2.5, padding = 0.3, r = 0.1, hover = true, colour = G.C.PURPLE, button = "undo_move", one_press = true, shadow = true, func = 'can_undo'}, nodes={
    {n=G.UIT.R, config={align = "bcm", padding = 0}, nodes={
      {n=G.UIT.T, config={text = "Undo", scale = text_scale, colour = G.C.UI.TEXT_LIGHT, focus_args = {button = 'x', orientation = 'bm'}, func = 'set_button_pip'}}
    }},
  }}

local original_play = G.FUNCS.play_cards_from_highlighted
local original_buttons = create_UIBox_buttons

G.FUNCS.play_cards_from_highlighted = function(e)
    -- Save State
    compress_and_save(G.SETTINGS.profile .. '/' .. 'undo.jkr', G.ARGS.save_run)
    original_play(e)
end

G.FUNCS.can_undo = function(e)
    if G.GAME.current_round.hands_played == 0 then 
        e.config.colour = G.C.UI.BACKGROUND_INACTIVE
        e.config.button = nil
    else
        e.config.colour = G.C.ORANGE
        e.config.button = 'undo_move'
    end
  end

G.FUNCS.undo_move = function(e) 
    G:delete_run()  --  Can double as a faster reset key if slot is empty due to avoiding loading anims
    G.SAVED_GAME = get_compressed(G.SETTINGS.profile .. '/' .. 'undo.jkr')
    if G.SAVED_GAME ~= nil then
        G.SAVED_GAME = STR_UNPACK(G.SAVED_GAME)
    end
    G:start_run({savetext = G.SAVED_GAME})
end

-- Add Undo button
function create_UIBox_buttons()
    local t = original_buttons()
    table.insert(t.nodes, undo_button)
    return t
end
gaunt thistle
#

0.5.0 will be "released" for realsies when I'm a bit more confident in the new patch implementations

#

I'm like 85% of the way there

odd dock
#

meth would it be trouble to include a version number in crashes? i haven't crashed 0.5.0 yet but i don't remember it being there previously

gaunt thistle
#

I overhauled how the pattern patch worked in 0.5.0 and I reeeeeallly want to make sure that there aren't any weird new edge cases

#

not a bad idea

odd dock
#

a single person said "no i have the latest version" when i told them to update and i am forever mad about it

royal ether
#

it was the latest when i downloaded so therefore its the latest version

odd dock
#

aren't you on vacation

queen scroll
#

hey, does anyone know if it’s possible to make a joker give multiple different abilities in the same context? i’m trying to make a joker that copies adjacent jokers, but each joker can only have one return value per context. has anyone tried something like this before?

nimble sequoia
#

If it "copies" adjacent jokers, couldn't you trigger calculate_joker on them like blueprint/brainstorm does?

unkempt thicket
queen scroll
nimble sequoia
#

Interesting... what are you returning?

queen scroll
#

the return value from calculate_joker e.g. {chips = 100, colour = G.C.CHIPS}

royal ether
#

mildly off topic sry

odd dock
#

lmao awesome

unkempt thicket
nimble sequoia
queen scroll
#

i would ideally like to return them seperately so i don’t have to account individually for all return keys

#

i think i saw someone made a joker that retriggered itself, that’s the sort of technology i need

unkempt thicket
#

oh, I think I do something of getting other jokers thing with probability, i need to make a few adjustments because certain jokers. Is this kind of what you are looking for?

queen scroll
#

what blueprint does is runs calculate joker on the targeted joker and then returns it, but i can’t do that for two jokers

frosty dock
# short surge does playing card have this as well?

for playing cards, you should put any additional properties you need on the suit or rank objects or override their populate function to add the information you need to the card, though you may also need to change Card:set_base() for that

nimble sequoia
short surge
#

btw guys can you remember any tool tip on playing card that is more than one line?

queen scroll
#

glass card?

short surge
#

I mean like the hanging ones

queen scroll
#

?

short surge
#

i want to make it wrap

#

but i couldn't get the format right, i was hoping maybe there's stuff i can refer to

queen scroll
#

does glass card not have one? sorry that was mandela effect on my part

short surge
#

it's within the box

queen scroll
#

is there a reason it has to be a playing card one?

#

surely you can just look at any

spice scroll
unkempt thicket
#

why is this working anymore? it was earlier and now it just won't apply to the deck

mellow sable
#

final boss of Balatro

short surge
#

oh right right seals

#

you are genius autumn love ya

queen scroll
near ivy
mellow sable
near ivy
#

no thanks

#

but it does seem intersting

short surge
#

muhahaha

queen scroll
spice scroll
#

i just wanna create a custom tooltip on a joker and im not sure how lol

short surge
#

oh i believe it would have been much easier than playing card actually

#

check alchemy mod

spice scroll
#

im looking at it but the format seems quite different than normal, ill try to make more sense of it again

random sleet
#

also tooltips are tooltips, same on any card

#

you dont get automatic line wrapping anywhere in the game thats all on you

spice scroll
#

if this works i will be shocked

short surge
#

For the love of jesus!!!

#

holy moly

frosty dock
#

and I see used_tarot in there

spice scroll
#

gonna have to look at midas mask

#

i more mean the random seal thing

spice scroll
#

wow this actually worked i coded something successfully

#

that wasnt just copying the main game

narrow pollen
#

✹ P R O G R E S S ✹

#

(removing my custom badge code fixed the garbage badges)

random sleet
#

are you extending SMODS.Center now

narrow pollen
#

yes

#

and once again

#

once a-fucking-gain

#

this line is the BANE OF MY EXISTENCE

random sleet
#

you know you might get some help if people actually knew what you were trying to do

#

cuz like, i know i dont know what that line means. or what you're complaining about it doing or not doing.

zealous glen
#

It's just an empty event that only takes up time

narrow pollen
#

oh, THAT'S the problem?

#

the loc_def isn't working?

#

oh, i seeeeeeeee

zealous glen
zealous glen
zealous glen
zealous glen
zealous glen
# short surge i couldn't stop bragging about this

That's such an awesome idea
 I had had an idea for a Joker that allows you to see the deck, but my original idea was to just flip the cards in the deck face-up. This is such a better implementation lol ;_;

zealous glen
zealous glen
#

The control parts are all the {LETTER:value} that are written in localization files to grant special attributes to text

#

So if there's a {V:?} it uses the V control to select color, otherwise it uses {C:?} or nil

short surge
# zealous glen Can you share that? I have a `dump` function for tables I found online but somet...
function sendNestedMessage(message, logger)
    if client then
        level = "INFO "
        logger = logger or "DefaultLogger"
        message = message or "Default log message"
        message = tableToString(message)
        -- naive way to separate the logs if the console receive multiple logs at the same time
        client:send(os.date('%Y-%m-%d %H:%M:%S') .. " :: " .. level .. " :: " .. logger .. " :: " .. message .. "ENDOFLOG")
    end
end

function tableToString(t, seen)
    if type(t) ~= "table" then
        return tostring(t)
    end
    
    seen = seen or {}
    if seen[t] then
        return "..."  -- Handle cyclic references
    end
    seen[t] = true

    local parts = {}
    for key, value in pairs(t) do
        local keyString = tostring(key)
        local valueString
        if type(value) == "table" then
            valueString = tableToString(value)
        else
            valueString = tostring(value)
        end
        table.insert(parts, keyString .. "=" .. valueString)
    end
    return "{" .. table.concat(parts, ", ") .. "}"
end
zealous glen
#

Thank you

short surge
zealous glen
short surge
#

mostly just reference to the series, it was not fully released yet so i created a few

short surge
#

High Card

#

smarteyes there's a series called high card

zealous glen
random sleet
#

x-playing card api
.... i wanna make silly stuff for my suits/ranks even if its incomplete af lol

short surge
#

i will leave the actual mechanisms to tomorrow i guess

honest elbow
#

now I want to catch up on high card

keen topaz
#

is there a mod that adds devtools for testing mods?

frosty dock
keen topaz
#

thank you!

narrow pollen
#

so i'm an idiot

#

and the problem was that i wasn't properly passing variables

#

đŸ€Ą

golden lake
#

I think it's safe to say that Balatro has probably one of the most well structured modding communities out there

random sleet
#

definitely one of the quickest

crisp coral
#

localization

random sleet
#

is that how localization works asking for a friend

crisp coral
#

yea

#

you can do something like this

maiden phoenix
#

Damn ok..

crisp coral
#

(legally this is a joke)

random sleet
#

i see

#

i think im cookin up a way to support this in my registration method

#

(emojiokers is actually just modified thac code lmao)

crisp coral
#

incredible

maiden phoenix
crisp coral
#

mystblinds is modified mystjokers code

#

smh

random sleet
#

and then thac for 1.0 will be modified emojiokers code

#

ouroboros cycle

maiden phoenix
#

Are you emojiokers because you're thac? Or are you thac because you're emojiokers?

random sleet
spice scroll
crisp coral
#

i'm putting the other nickname back on

spice scroll
#

sorry lmao

random sleet
#

oddityapi will come when smods has innate consumable rarity support

spice scroll
#

i forgor 💀

random sleet
#

which i guess is planned, judging from comments in smods

zealous glen
#

How do people write credits for Jokers/etc. which had external collaboration in their mods?

#

As in, what format do people use, not how to code it

#

I was thinking about adding it to main_end in grey, but maybe other people had better ideas

random sleet
#

also stuff for putting consumables in shop and rarity pools i think? idk the comments are a bit vague and mysterious to anyone but aure

zealous glen
#

Maybe a custom tooltip đŸ€”

random sleet
#

tooltip sounds solid

zealous glen
random sleet
#

i know its different for jokers

zealous glen
#

Because at least in 0.9.8 I only know of it being capable of asking the center pools to add to the info queue

random sleet
#

you can add localization entries for it to call on in the "Other" category iirc

zealous glen
#

hmmm

random sleet
zealous glen
#

👍

random sleet
#

in 1.0 you'll need to put those in a process_loc_txt function somewhere

#

probably of the joker in question

zealous glen
#

Localizations are a bit inconsistent to me. For the most part I can edit them directly or add new ones, but there’s a specific localization which I can’t seem to edit

random sleet
#

again i know tooltips are different for jokers i just dont know exactly how, that's for a planet

zealous glen
zealous glen
#

I succeeded but I have no idea how. I added a new localization entry outside of Init. Didn't work. Tried inside. Nope. Both. Nuh-uh. I created a hook for localize just to print the output. Suddenly I have a tooltip. I delete the new localization entry inside Init and the hook. It continues working.

hallow forge
random sleet
zealous glen
#

Actually I should fix that bug

wild gyro
#

who's already a legend

hallow forge
zealous glen
#

@grand violet @tawny perch What do you think of this for credits in the appropriate Jokers?

#

Also other people if they have opinions

tawny perch
grand violet
#

I like that it's a separate box but that's a biiiiiig box

night pagoda
#

If G.GAME.hand[NAME].mult is for current hand's mult, what do I use to get base mult/mult of first level?
EDIT: s_mult!

random sleet
#

i have a dumb idea that would require me to take ownership of nearly every vanilla joker.... and would not have innate support for modded jokers.... this would be so dumb lol....

what if i made ||something where when <thing>, trigger the joker on the right or similar, but i do it with its own "compat" flag and it works by running a function from the other joker's center obj....||

zealous glen
mellow sable
#

you should be scared

zealous glen
mellow sable
#

oh we have factorial scaling too

zealous glen
mellow sable
#

you'll need it for this stake

frosty dock
#

does it protect against inf loops?

#

like what does it do if A stake applies B stake, and B applies A?

mellow sable
#

Stack overflow

#

This also happens if a stake applies itself

zealous glen
#

Like thunk did with the recent update

dim ice
#

hey i tried to use // on #G.deck.cards but for some reason it crashes the game, example :
self.ability.extra.mult = #G.deck.cards // 5

zealous glen
#

What’s //?

mellow sable
#

This last one is meant to be cruel but most of the stake ideas are less unfun

dim ice
zealous glen
#

Is Euclidean division a thing in Lua?

dim ice
#

no idea

zealous glen
#

I think that’s the issue then 😅

crisp coral
#

why can't you just math.floor(#G.deck.cards / 5)

dim ice
#

oh, thanks

zealous glen
#

Apparently Lua 5.3 onwards has Euclidean division

edgy reef
#

Has what?

zealous glen
dim ice
#

well this does fix it

zealous glen
# edgy reef Has what?

It’s the largest integer q such that divisor*q <= dividend (assuming everything’s positive)