#đŸ’»ăƒ»modding-dev

1 messages · Page 43 of 1

stray warren
#

Different colored outputs?

rough furnace
#

mostly on the handling of different types of logs

#

follow up of a chat we had last night

stray warren
#

I like it

rough furnace
stray warren
#

(Me, only using sendDebugMessage)

#

đŸ€Šâ€â™‚ïž

rough furnace
#

Me only using print balatrojoker

#

well I don't in debug plus cause the console doesn't like when I do

stray warren
#

I honestly didn't think print would work, so I've only been using the debug option

#

don't know why I thought that

rough furnace
#

I mean debug plus doesn't depend on steamodded so I can't use it's logging stuff

#

oh also I forgor to add a info message example

stray warren
#

Btw, DebugPlus is great. I love being able to see my print statements without having to tab out to the console

rough furnace
#

anyways I was thinking I might merge trace and debug, and fatal and error

#

thanks

royal ether
#

this is really bad practice. overwriting a function completely like this will ruin mod compatibility. use hooking if possible, and a patch otherwise

muted pier
#

this was very temporary dw

royal ether
#

ok

stray warren
hushed cradle
#

how do hooks work?

royal ether
#

this is a simple example

#

basically you override a function, then run the function as it was before within the override

#

that way you can tack whatever you want before or after the function happens

#

also you have to return the old return values if the function returns something in its unmodified form

tepid crow
#

(it's sometimes also called function wrapping)

royal ether
#

the reason you do this instead of just copy pasting the function when you override is so that other mods can wrap the same function

tepid crow
#

Which of the 2 is generally considered better practice btw, hooking/wrapping, or lovely patching? Assuming both are non-overwriting.

edgy reef
tepid crow
#

Yeah, that was my thought too. Hooking is probably preferred, but there are cases where lovely patching is better.

zealous glen
#

What do you think of the following Boss Blinds (not Showdown):

  1. Hearts and Clubs are debuffed.
  2. Forces 1 card to always be selected.
  3. Forces 1 Face card to always be selected.
  4. (Showdown) [Most common Suit] are debuffed
languid mirage
#

2 is already a showdown boss blind tho

zealous glen
languid mirage
#

vv is larger

zealous glen
#

But both are big

#

I could make Cerulean Bell 2 cards

#

Although I didn’t want to rebalance vanilla

tepid crow
#

I presume these are harder than the vanilla game's bosses on purpose?

languid mirage
#

maybe like if you discard it will force 1 card to be selected

zealous glen
#

I don’t think Cerulean Bell is that big of a deal as a normal Boss

#

I think it would be fun

languid mirage
#

using discard forces 1 card to be selected

zealous glen
zealous glen
tepid crow
#

đŸ€Ł

languid mirage
#

can't 2 just be like numbered cards only

#

opposite of 3

zealous glen
#

I thought of 1 because I just had a good name and icon for it

#

The Eclipse

zealous glen
tepid crow
#

boss 1 might be a bit harsh if it comes early, and boss 2 can be a pain depending on the hands the player goes for

surreal marsh
#

cards in my area aren't saved đŸ€” they disappear after loading a game. How to fix

muted pier
#

i tried to wrap it, but didnt have any luck

zealous glen
zealous glen
royal ether
#

thats when you lovely patch

royal ether
muted pier
#

ah gotcha, haven't ever messed with lovely so no clue how that works

zealous glen
royal ether
#

theres plenty of mods that use lovely, you can study 'em

surreal marsh
wintry solar
#

Is your card area stored in G?

surreal marsh
languid mirage
#

Maybe CardArea:save() does not know how to serialize your abilities

#

Not at pc to check how it works tho

#

Or maybe the area is serialized, but isn't deserialized (or fails to)

tepid crow
#

didnt mean to tag you btw, my bad

solid salmon
#

2 questions

languid mirage
#

Ye that's what I meant kinda, or it doesn't deserialize properly

languid mirage
solid salmon
#

do these look to jokery and which is the best looking one (excluding blue and red because that art wasn't made by me

tepid crow
surreal marsh
tepid crow
#

You mean CardArea's? It's in the cardarea.lua file

#

but if that's what you're asking I feel like I'm missing something

languid mirage
#

Check where it's being called from

surreal marsh
languid mirage
#

Oh that logic is pretty confusing, I didn't look too much into it with how load_ in G is handled

#

Well actually I think it makes sense, like the serialized data is stored to load after CardArea is added

tepid crow
#

it seems that about 800 lines later all the load_ stuff gets handled individually (e.g. if G.load_shop_jokers then )

#

but there might be some dynamic stuff I'm missing too

languid mirage
#

Ohh right, that error always pops up when you load save while in shop

surreal marsh
#

I found this

languid mirage
#

So maybe you'd need to add something similar

surreal marsh
#

oh i know

#

loading G.betmma_abilities happens in Game_start_run_ref so my code overrides loaded cardareađŸ€”

crisp coral
#

i think you just have to call the ref later

tepid crow
#

sounds like you just need to instantiate before calling the ref yeah

#

instead of after

surreal marsh
#

đŸ€Ș

solid salmon
#

On a scale of delete this now to good how would you rate this?

surreal marsh
solid salmon
#

what's that ability?

surreal marsh
solid salmon
#

ok

languid mirage
#

Glitched seed is kinda confusing for non modding people

surreal marsh
#

yeah

#

i'll change the text and it's effect later

languid mirage
#

Makes sense

tepid crow
#

is GIL a python reference or just generic programming

languid mirage
#

Cool concept tho

shell timber
#

next 3 random effects always pick the first option / yes

#

GIL is a python thing iirc

surreal marsh
#

when you open a pack pseudorandom is called a few times but if return values of these calls are set to 0 nothing special happens

#

for lucky cards and glass cards the effect is huge

muted pier
#

gonna try make a "Solitare" themed joker, which when you discard your first single card, if its the next card in the straight (A-K), it'll just destroy it. Then it just spits out a new deck with a huge mult on it.

#

when you finish your deck*

#

another joker i programmed in just earlier too

#

im very proud of the art haha

crisp coral
#

...flush pair of aces????

muted pier
#

pair of aces with the same suit

tepid crow
#

art is nice! the card ability is gibberish to me though 😂

muted pier
#

like Oops! All 6s, but instead of doubling all odds, it multiplies all of them by its value

#

so you can end up with always active Lucky Cards

#

but always breaking Glass Cards

#

i thought about just halving the odds, but didn't like it ig

tepid crow
#

ahhhh, so OA6s but with variable luck changes instead of just 2x

muted pier
#

ye

#

and if its sold it just resets all odds

solid salmon
#

should the background change based of the potions color scheme

#

or keep the background like this

muted pier
#

maybe add a soft gradient?

#

between all the colors

tepid crow
solid salmon
#

mayhaps

#

also i accidently made a shadow

crisp coral
muted pier
#

Flush Pair makes sense no?

crisp coral
#

i'd assume "flush pair of aces" means hand contains a pair of Aces that also makes a flush

muted pier
#

oh

tepid crow
#

only if flush pair is implemented properly as a poker hand, otherwise I wouldn't do that

muted pier
#

fair enough

tepid crow
#

would you be interested in any other feedback?

muted pier
#

sure

tepid crow
#

feels like the text is quite long yet still doesn't describe the joker's base effect very explicitly

#

could you do something similar to DNA?

muted pier
#

yeah formatting is kinda tricky, thats a good example for it actually

tepid crow
#

you could start with something like this

If first hand of round is a pair of same-suited aces increase all odds by 0.05

#

maybe then you'll also have space to spare to describe Snake Eyes!'s probability multiplier effect more

solid salmon
#

like this?

#

ok

#

Also does anyone have the balatro alphabet

muted pier
#

like? the fonts?

solid salmon
#

ye

muted pier
#

just open the exe in winrar and get them from resources/fonts

tepid crow
#

😬

crisp elbow
# solid salmon ye

If you're looking for like tarot fonts it's in the modding thread somewhere

muted pier
#

if it helps make sense, im a Magic: the Gathering player lmao

#

also a silly little deck

crisp elbow
tepid crow
tawny perch
muted pier
#

its fun tho

brisk quartz
solid salmon
#

tada

crisp elbow
#

Is there a function already built into Balatro that is called whenever a pack is opened? I tried checking for pack_open and the only thing I found is context.open_booster, which I think is only used for Hallucination

#

tldr; just trying to see if there is a vanilla way to open a booster without writing a new function for it

#

spawning and then opening

muted pier
muted pier
brisk quartz
muted pier
#

really? okay

brisk quartz
#

it just seems like worse than nebula deck

muted pier
#

i feel like 5 extra aces or 5 extra kings is pretty strong...

brisk quartz
#

it probably is since you can go for early 5oaks/full houses but i don't think it's that strong

crisp elbow
wintry solar
zealous glen
zealous glen
zealous glen
# muted pier very wordy 😭

I wouldn’t say “same-suited” but “with the same suit”. Also, I’d use the green probability color for the “5%” and “X1”. Finally, you should decide between “5%” and “100%” or “X1.05” and “X1”, but not both.

By the way, I imagine this kind of effect doesn’t work with O!A6s and other modded probability changing mods

zealous glen
tepid crow
#

By the way, I imagine this kind of effect doesn’t work with O!A6s and other modded probability changing mods
I'm just wondering, why wouldn't it?

#

isn't it just oa6s with a variable instead of 2?

muted pier
languid mirage
#

Does anyone know where I can see how vanilla objects are being registered in steamodded?

#

cuz there's an issue with seal spectrals

zealous glen
languid mirage
#

they don't show tooltips for seals with steamodded

muted pier
tepid crow
zealous glen
muted pier
#

which isnt an ideal design but would technically require a bit of a rewrite

zealous glen
#

Oh wait I forgot O!A6s was also multiplicative

#

If both are multiplicative it works

#

It’s just additive and multiplicative effects that won’t mix well

muted pier
#

when its bought it just multiplies the base probabilities

tepid crow
#

yeah they're both multiplicative

muted pier
#

and when its sold it divides it

zealous glen
#

Some vanilla effects are only additive or only multiplicative

#

So you can’t do the other without breaking or refactoring vanilla

#

And refactoring will break compatibility with other mods

#

(Breaking will break vanilla and other mods)

muted pier
#

snake eyes actually originally multiplied all probabilities by 150% when i first designed it haha

#

so 1 in 3 became 3 in 6

tepid crow
muted pier
#

and 1 in 15 became 3 in 30

#

but that became super broken super quick with lucky cat

languid mirage
muted pier
frosty dock
#

hm that's surely not supposed to happen

languid mirage
#

wait where do I even find seal prototypes

#

nevermind

#

found them

regal wolf
#

what is the issue ur getting?

languid mirage
#

steamodded removes seal tooltips from spectrals

#

that's the issue

iron sphinx
#

why are you in modding-dev not anywhere else

languid mirage
#

holy shit

#

how did I not see that line

#

should be a simple fix

#

actually no idea where that line comes from, definitely not steamodded

#

probably cryptid đŸ€”

#

ya

mellow sable
#

Guess that’s not a good place to inject it balatrojoker

languid mirage
#

ye I made a PR with fix

#

have to wait until steamodded merges the tooltip fix for enhancements tho

sly forge
#

I am taking a look at this. commenting on Github

sly forge
languid mirage
#

you mean like vanilla enhancements?

#

I just copied code for process_loc_text from seals, didn't give too much thought, it worked for my use case so I just left it as is

sly forge
#

yes, I believe seals are special in that they're never actually stored in cards

#

they're weird

languid mirage
#

Is it like G. P_CENTERS['enhancement_key']

#

To access the tooltip

#

Or something along the lines

sly forge
#

yeah

languid mirage
#

To cryptid

mellow sable
#

Can you make this also work for like jokers too

#

That way I don’t have to do some weird workaround to make them localize properly

mellow sable
sly forge
mellow sable
#

I will when I get a change

#

I know before what happened was the loc_vars didn’t work

solid salmon
#

Totally balanced lemonade

stray warren
#

If i'm looping through the scoring_hand, is there a way to check if v is a stone card? Something like this:

        for k, v in pairs(scoring_hand) do
            if v:is_stone() then
                
            end
        end

I don't have access to context in this scope

zealous glen
#

You can check the name

#

Like the game does

#

But there’s no built-in function AFAIK. Thunk just does it manually each time

solid salmon
mellow sable
#

although this might also be my fault

sly forge
#

bit hard to say. localize() might need patching by Steamodded, if it relies on the center's name field? wild guess

#

if you can find the bug, that'd be great!

mellow sable
#
local eclipse = {
    object_type = "Consumable",
    set = "Tarot",
    name = "cry-Eclipse",
    key = "eclipse",
    pos = {x=0,y=0},
    config = {mod_conv = 'm_cry_echo', max_highlighted = 1, enhancement = {retriggers = 2, extra = 2}},
    loc_txt = {
        name = 'The Eclipse',
        text = {
            "Enhances {C:attention}#1#{} selected card",
            "into an {C:attention}Echo Card"
        }
    },
    atlas = "eclipse_atlas",
    loc_vars = function(self, info_queue)
        info_queue[#info_queue+1] = G.P_CENTERS.m_cry_echo
        return {vars = {self.config.max_highlighted}}
    end,
}
#

relevant code section

#

going to see if removing my info queue lovely patches fixes it

frosty dock
#

if the thing you put in info_queue needs vars, you need to specify them

mellow sable
#

ok but how

frosty dock
#

I'd imagine something along the lines of

info_queue[#info_queue+1] = { set = 'Enhanced', key = 'm_cry_echo', vars = G.P_CENTERS.m_cry_echo:loc_vars(info_queue).vars }
mellow sable
#

alr

zealous glen
#

Should this be an argument to localize?

wintry solar
#

This is also how I did it for seals

#

I believe

mellow sable
#

going to try it out

zealous glen
#

Because Negative Consumables have an argument which is passed to localize I think

mellow sable
#

issue might have been just because of the set being wrong

zealous glen
#

I’m not sure what the argument is for

frosty dock
#

actually it bypasses generate_ui and just goes through the default code for the Enhanced set which falls back to an empty table loc_vars

#

so it might actually need some more patching

mellow sable
#

yeah can't get past this even with a few different things

#
info_queue[#info_queue+1] = {
            set = 'Enhanced',
            key = 'm_cry_echo',
            vars = { self.config.enhancement.retriggers, G.GAME.probabilities.normal, self.config.enhancement.extra }
        }

tried this with vars and my own patch to get loc vars and ... nothing

edgy reef
#

I do know that tooltips are sometimes really weird.

long gust
#

m

edgy reef
#

I have D6 Sides set up to create a 2nd version of their desc with Other as the set for displaying tooltips.

royal smelt
#

i'm making like a laughably simple mod that replaces a single joker texture, but i'm for whatever reason unable to get steamodded to actually see the mod and load it

#

the entire mod's code is just this

--- STEAMODDED HEADER
--- MOD_NAME: bornana
--- MOD_ID: bornana
--- MOD_AUTHOR: [mackwell, kat]
--- MOD DESCRIPTION: Replaces the Cavendish Joker sprite with a far cooler one.

----------------------------------------------
------------MOD CODE -------------------------
sendDebugMessage("Bornana!")
    
SMODS.Atlas(key = "Joker", path = "Jokers.png", px = 71, py = 95, prefix_config = {key = false})
----------------------------------------------
------------MOD CODE END----------------------
#

and this is my file structure

maiden phoenix
#

Folder should be named "assets" not "textures"

frosty dock
#

You should spot the error looking at the error message

royal smelt
#

oh right

royal smelt
frosty dock
#

folder name is wrong

maiden phoenix
royal smelt
#

also

#

the folder name is changed in my actual Balatro/Mods folder

#

still doesn't get loaded

frosty dock
#

oh didn't spot that actually

#

your syntax is off

#

the table passed to SMODS.Atlas needs to be in a table constructor (wrapped in {}, not ())

royal smelt
#

ah i am blind

frosty dock
#

I'm even more blind apparently

maiden phoenix
#

We all are

frosty dock
#

--- MOD DESCRIPTION:

royal smelt
#

IT SHOULD HAVE AN UNDERSCORE

frosty dock
#

needs to have an underscore instead of a space

royal smelt
#

man

#

there we go now im actually getting an error message

#

lmao

#
[string "--- STEAMODDED HEADER..."]:14: attempt to call field 'Atlas' (a nil value)                                                                         Stack Traceback                                                                                                                                             ===============                                                                                                                                             (1) Lua local 'handler' at file 'main.lua:6002'                                                                                                                     Local variables:                                                                                                                                             msg = string: "[string \"--- STEAMODDED HEADER...\"]:14: attempt to call field 'Atlas' (a nil value)"
long gust
#

m

frosty dock
#

the main branch on github is the WIP/alpha 1.0 version of the loader

royal smelt
#

i installed through git and checked out 0.9.8
is that not the most recent release?

frosty dock
#

1.0 is a complete rewrite

#

example mods on the main branch are updated to it, breaking compatibility with 0.9.8

royal smelt
#

ah that would do it

frosty dock
#

you probably shouldn't start with 0.9.8 now since it's getting more outdated by the minute

royal smelt
#

so i should look at the 0.9.8 branch version of the example

#

oh

#

nevermind then i will just checkout the main branch

frosty dock
#

you'll end up updating anyways, it doesn't make a lot of sense to start making new mods on 0.9.8

solid salmon
#

very balanced

#

Im using my mod and betmma's vouchers

willow quiver
#

Is there a way to look at the decompiled code post-injection?

mellow sable
#

Mods/lovely/dump

willow quiver
#

thanks, taking a look at a crash while my mod was disabled. might be a different mod's issue

rough furnace
edgy reef
#

YIPPEE

mellow sable
#

pog

rough furnace
#

anyways I need some good debug commands

#

probably commands to set basic values

#

money

#

ante

#

round

#

eval

edgy reef
#

Set rank of a card (can't remember if there's a rank change button)

#

I'll go ahead and play with it a little for D6 Jokers.

rough furnace
#

oh yeah I was going to make a change rank button but forgor

edgy reef
#

btw if you're going to do support for other mods to make commands may I suggest a shorthand matching the mod prefix that has to be typed out before the command (like "dsix echo text" instead of "echo text")? This would avoid making commands that have the same ID conflict with each other whilst also not requiring them to have a shorthand built into the command key itself.

rough furnace
#

yeah I alreayd got a id system

#

I've messed with minecraft servers before

#

it just chooses the first it finds that matches

mellow sable
#

Command to spawn or remove an item by id

edgy reef
#

Also can it print multiple lines? Pretty important for a command like "help"

#

Free Plague Die spoilers for the fun of it balatrojoker

limpid flint
#

||HELP||

rough furnace
hushed cradle
#

anyone know how i can skip a blind?

languid mirage
limpid flint
#

What do you mean skip a blind? Specify it

hushed cradle
#

sorry i mean like

#

when you have the option to skip for a double tag or smth

#

is there a function to skip the blind that i can put in a mod?

tepid crow
#

like a custom/modded tag?

muted pier
# hushed cradle is there a function to skip the blind that i can put in a mod?
-- code recycled from: "functions/button_callbacks.lua#2711"

function skip_current_blind()
  G.GAME.skips = (G.GAME.skips or 0) + 1
  
  local skipped, skip_to = G.GAME.blind_on_deck or 'Small', 
    G.GAME.blind_on_deck == 'Small' and 'Big' or G.GAME.blind_on_deck == 'Big' and 'Boss' or 'Boss'

  G.GAME.round_resets.blind_states[skipped] = 'Skipped'
  G.GAME.round_resets.blind_states[skip_to] = 'Select'
  G.GAME.blind_on_deck = skip_to
  
  G.E_MANAGER:add_event(Event({
    trigger = 'immediate',
    func = function()
      delay(0.3)
      for i=1,#G.jokers.cards do
        G.jokers.cards[i]:calculate_joker({skip_blind=true})
      end
      save_run()
      for i=1,#G.GAME.tags do
        G.GAME.tags[i]:apply_to_run({type='immediate'})
      end
      for i=1,#G.GAME.tags do
        if G.GAME.tags[i]:apply_to_run({type='new_blind_choice'}) then break end
      end
      return true
    end
  }))
end
frosty dock
#

love the 'Boss' or 'Boss' in there ngl

languid mirage
#

đŸ˜č

languid mirage
# sly forge yeah

~~Hey, so I did some digging and found out that approach you suggested would only work if the tooltip doesn't use any game-specific values. ~~

Using P_CENTERS instance only works if the prototype has specific_vars, which doesnt even exist in vanilla prototypes, the game generates loc_vars dynamically in generate_card_ui (so stuff like probabilities is up to date), and then uses those as specific_vars

I'm not entirely sure if process_loc_text suggested by me is the easiest approach here tho, I'll do some thinking
managed to figure it out below

#

okay nevermind

#

so apparently even if you initialize empty specific_vars game would automatically update them already đŸ€”

frosty dock
languid mirage
#

well, somehow

frosty dock
#

_c.specific_vars is never used, so of course it does nothing

languid mirage
#

if I dont add specific_vars and try to use prototype for tooltip the game would crash when hovering on the item

#

which is why I tried adding specific_vars to the prototype in the first place

#

but I guess I should've checked what exactly happens in the main.lua there

#

so just a null check there

frosty dock
#

oh well

languid mirage
#

ye 2 null checks for specific_vars and it does not crash anymore

#

yay

gilded narwhal
#

Thoughts?

#

This is part of the cookie clicker mod btw

opal spade
#

very nice, although i feel like this needs some white (maybe white outline for the hands to make them pop?)

#

also stray pixels at the bottom oof

gilded narwhal
#

Very good suggestion

#

Also for coders how does one use the function create_card()

rough furnace
#

What are you creating?

gilded narwhal
#

I just wanna have this spectral create a specific card

rough furnace
#

I don't think I have a code example with me rn but check out the fool's code

gilded narwhal
#

Ty 👍

hushed cradle
#

its for a specific legendary joker tho so idk if its what you need

gilded narwhal
#

Although

hushed cradle
#
    key = 'first_seal',
    set = 'seal',
    loc_txt = {
        name = 'First Seal',
        text = { 
            'Summon the first',
            'of the 4 Horsemen,',
            '{C:red}Conquest',
            '{C:inactive}(Must have room)',
        },
    },
    raw_atlas_key = 'Tarot',
    cost = 0,
    pos = {
        x = 0,
        y = 0,
    },
    unlocked = true,
    discovered = true,
    hidden = true,
    soul_rate = 1,
    soul_set = 'Spectral',
    can_repeat_soul = false,

    can_use = function(self, card)
        if #G.jokers.cards + G.GAME.joker_buffer < G.jokers.config.card_limit then
            return true
        end
    end,

    use = function(self, card, area, copier)
        local card = create_card('Joker', G.jokers, nil, nil, nil, nil, 'j_horsemen_conquest', nil)
        card:add_to_deck()
        G.jokers:emplace(card)
    end,
}

local conquest = SMODS.Joker{
    key = 'conquest',
    loc_txt = {
        name = 'Conquest',
        text = {
            'probably does something'
        },
    },
    config = {},
    rarity = 4,
    pos = {
        x = 0,
        y = 0,
    },
    raw_atlas_key = 'Joker',
    cost = 20,
    unlocked = true,
    discovered = false,
    blueprint_compat = false,
    eternal_compat = false,
    perishable_compat = false,

    in_pool = function(self)
        return false
    end
}```
#

not sure how to make it coloured

#

its mainly the can use and use in the top bit tho

gilded narwhal
#

Hold on lemme remove cryptid and try again

hushed cradle
#

are you spawning a joker?

gilded narwhal
#

No

hushed cradle
#

tbh my code is kinda ass

#

and looking back i dont understand it fully lol

#

you might need your mod prefix before the 'wrath_cookie'

edgy reef
#

The key needs to be the actual key, so it needs both the mod and object prefix

hushed cradle
#

prefix_c_wrath_cookie

edgy reef
#

Isn’t it c_prefix_wrath_cookie?

hushed cradle
#

i have no idea lol

zealous glen
#

Here's part of a Joker that creates Black Holes

bitter sand
#

guys ? how do i change required chip amount of a blind mid run in the blind choosing menu ?

gilded narwhal
zealous glen
gilded narwhal
#

Got it

zealous glen
#

It probably only matters in that it could influence another random generation if you used the same seed, but I think nil might be a valid input

gilded narwhal
#

And where does the prefix come from?

#

Is it this or something different?

zealous glen
#

Something like this should work

bitter sand
#

i have this code rn and i get an error at the first chips (i guess it's the first one)

#

just looks at line 232-233 the rest is the same

zealous glen
#

Rather you want to change the variable stored in the game referring to the actual Blind's chips, or change something else so that value is changed when the Blind is created

zealous glen
# zealous glen Something like this should work

Maybe G.GAME.blind doesn't exist while you're choosing Blinds, but outside of the UI update, I don't think there's much of a difference between doing it when you begin a Blind or before you choose it

bitter sand
gilded narwhal
#

I also keep getting this

zealous glen
gilded narwhal
bitter sand
#

(including itself)

gilded narwhal
#

Hey this reminds me is there a way to change the base of a whole ante?

zealous glen
#

Alternatively you could double the value of the Ante, which would naturally scale

gilded narwhal
#

Like I have a consumable in mind that decreases the base of this ante, but increases the base of next ante

zealous glen
#

I don't know exactly how the game handles it but there's a function to compute the Ante Base Chips value, you could hook or inject into it maybe

gilded narwhal
#

I have everything else right

gilded narwhal
#

Nvm I got it

shell tangle
#

Where would I look to find the code for how The Soul uses two separate atlases?

rough furnace
#

I believe the card just has a property called soul_pos which let's you know

#

Steammodded supports it iirc

gilded narwhal
#

I'm definitely doing this wrong

gilded narwhal
#

Okay so this doesn't crash but it also doesn't spawn the golden cookie

frosty dock
#

your else block is on the card limit check

#

So it'll spawn the golden cookie if there's no room

gilded narwhal
#

Ohhhhh

#

I see

shell tangle
gilded narwhal
rough furnace
#

Did I ever tell you all about the time I loaded steammodded using the settings file?

fallen tendon
#

The hell?

shell tangle
#

Here's the soul after taking ownership with just some extra colors thrown on as an example, the yellow part is what the soul_pos loads. The soul egg thing is not on the custom atlas.

mellow sable
#

It uses shared_soul or something weird like that

shell tangle
#

Thanks, I'll try searching around the code for it.

hushed cradle
#

the art is insane

#

did you do it?

gilded narwhal
#

I did everything except the actual cookie part of golden cookie

#

And I guess the hands in Fate is from michaelangelo but yeah

hushed cradle
#

damnn

#

i suck at pixel art and stuff lol

gilded narwhal
#

Hey is card:set_sticker a thing

stray warren
#

You'd probably be able to find out by CTRL + F in the card.lua file

edgy reef
#

Don’t think so

#

The game has stickers use their own set function

muted pier
hushed cradle
#

thanks

#

do you know if theres anyway to skip the a pack opening?

#

like the long ass animation when a booster pack opens

muted pier
#

you could find the code for opening a pack and mess with it

#

see if you can maybe hook it

hushed cradle
#

true

#

if i just up the game speed and then back to normal that might do it lol

gilded narwhal
#

Do you think there's a way I can get this monkey brain strategy to work

crisp coral
#

are you overriding it??

gilded narwhal
#

I'm altering card.lua

#

I'm not using lovely because I'm just testing

hushed cradle
#

i was testing a thing to auto reroll for specific legendaries and editions

#

and as a test i wanted to look for any legendary with foil

#

cos i thought that would be easiest

#

and i rolled past a negative perkeo

#

and like 5 polys and holos before i found 1 foil

mellow sable
#

Lmao

#

Did you make the auto reroll allow for any edition to pass?

hushed cradle
#

nope lol

#

atm its just a specific one

mellow sable
#

Ah

hushed cradle
#

do you have any idea if its possible to tell what legendaries and editions youre gonna get from the seeds

#

like brainstorm does

mellow sable
#

Definitely

hushed cradle
#

cos atm im getting it to open the pack and check

#

damn

mellow sable
#

I was the one who wrote the seed searcher and brainstorm autoreroll so I have some experience haha

hushed cradle
#

oh damn

#

i knew you made immolate

#

didnt know you made the brainstorm reroll tho

#

im gonna have a look at it but i literally dont get any of it

#

which is why i went with the easier version

mellow sable
#

The long-term plan is to make an easy filter system that both Immolate and Brainstorm can use

#

But I’ve been doing a lot of other projects so haven’t had much time for it yet

hushed cradle
#

fair enough

#

i thought about adding a ui thing into what im doing

#

but its literally just built on top of brainstorm

#

so ill be the only one using it so i cba

#

cos i dont think i can share stuff that is mostly not mine

mellow sable
#

You can always contribute to Brainstorm and make a pull request with your additions

hushed cradle
#

my code is so scuffed tho

mellow sable
#

oh

hushed cradle
#

i have so many checks cos otherwise the events go crazy

#

and i used events because if i did it without them it was too quick

mellow sable
#

yeah the way I do it doesn’t even need a full game instance really

hushed cradle
#

or smth

#

im not quite that smart

mellow sable
#

although I plan to refactor it to account for eg. Modded deck abilities that wouldn’t quite work with how it’s a bit hardcoded

hushed cradle
#

right yeah

#

make it search for gateways lol

mellow sable
#

lol

#

the benefit of not hardcoding it is that becomes possible

#

And with the Immolate-linked filter system it would be as easy as just checking for “Gateway” instead of “The Soul”

#

At least that’s the plan

hushed cradle
#

that would be super cool

mellow sable
#

My plan is to work on that after finishing Ankh (mod used for replays and security checking world record runs)

#

And then I also procrastinate by working on Cryptid

#

And I have other responsibilities too

hushed cradle
#

yeah i get you

#

ankh is cool

mellow sable
#

ty

hushed cradle
#

i dont even speedrun i just like having a timer

#

is there a way to make it continue into endless?

mellow sable
#

I plan to add that

hushed cradle
#

cool

#

look forward to it

mellow sable
#

For now the only workaround would be something scuffed like setting the category to 3 deck wins

#

But I’ll add a setting to have no category so the timer never splits or stops

#

Which is even more important since I’m also expanding the scope more towards not just speedruns

#

But also things like long ante 39 world record runs

hushed cradle
#

maybe one day ill make it that far

#

trance is also really good btw

#

i always use the simple blue

#

kinda because when i tried using my own colours it looked awful but the blue is really nice

mellow sable
#

ty

hushed cradle
#

nws

hushed cradle
#

for safety

hushed cradle
#

damn it acc works

#

left to grab a bowl of cereal and came back to this

mellow sable
#

nice

hushed cradle
#

trying to reach ante 39

crisp coral
#

not here

hushed cradle
#

sorry

shell tangle
#

After an hour or two, maybe three at this point, of messing around with the code, I have concluded I am too dumb to figure out how the shared_soul sprite works, or at least, any way to work with it without crashing. If anyone can manage to replace the Soul's soul thing, please show me the code and maybe walk me through it if I'm not able to understand it.

  • raw_key does not replace the soul, but it does still replace decks and enhancements.
  • Taking ownership as a consumable and setting a custom soul_pos does not work.
  • Attempting to take ownership of it as a back like Trans Spectrals doesn't work, and Trans Spectrals does not replace the soul thing either.
  • Writing to G.shared_soul may work, but I have no idea how to make it read a different atlas without crashing.
languid mirage
#

in card.lua if you search for if self.ability.name == 'The Soul' and (self.config.center.discovered or self.bypass_discovery_center) then

#

you can see how the game handles it

shell tangle
#

I'll give it a shot later, I did attempt use a lovely patch, but I was trying to change the G.shared_soul atlas in game.lua, thanks.

languid mirage
#

below it you can see how soul_pos is used as well, maybe that will be more helpful

#

also if you want to see the code after steamodded applied itself, you should check Mods/lovely/dump and find the respective file there

#

also you can find an example of how Gateway is created in Cryptid mod

#

it has 3 total layers

#

but you can just remove 1

#

basically the same as soul, but instead of G.shared_soul it uses the child sprite

shell tangle
#

Ah, that. Did check out Gateway, but only the .Lua, not the .toml for it. Do recognize the code from soul, was kind of hoping I wouldn't have to mess with it, because anything with shaders simply haven't clicked for me at all, but I'll make another attempt.

Do you know off hand which function deals with setting children, by the way?

languid mirage
#

pretty sure it's in lua file

#

for it

hushed cradle
#

anyone know the exact score limit?

languid mirage
#

2^1024 in vanilla

#

around 1.8e308

hushed cradle
#

cool thank you

languid mirage
#

that's the easiest way to see where it's defined

shell tangle
#

Thanks for the help.

languid mirage
#

You're welcome

wintry solar
#

Are you just trying to modify soul or are you making a new card with a floating sprite?

edgy reef
#

I think allowing cards to have custom args for drawing their sprites would be pretty nice.

#

Don’t think that’s a thing Steamodded supports yet.

#

Or just custom handling of it

wintry solar
edgy reef
#

Just some Card:draw() function probably

#

Shouldn’t need much else than that

oblique gust
#

eventually there has to be two rows or even more for these dots

wintry solar
#

Is this deck selection? I have a reformat of it on my list of things to take a look at

dim nimbus
#

ive done spriting and pixel art before, but those were mostly small scale for minecraft mods. im surprisingly pleased at how this one is turning out
wip but it looks like something for sure!!!

shell timber
#

are the middle lines meant to curve like that?

dim nimbus
#

i was tweaking up and around with that pathway for longer than id like to admit.....

#

im sure when the finer details get put in it'll look better though lol

languid mirage
dim nimbus
#

got it thank you!!

shell tangle
fallen tendon
hushed cradle
#

i was just trying to see how high i could score without naneinf for my stats

crisp coral
hushed cradle
#

sorry

#

wont happen again

austere schooner
#

So, is there an easy way to double check if another mod is loaded

languid mirage
#

I think you can't really check it on startup reliably because other mod might load after yours

#

But after all mods are loaded you can probably use the same list that is displayed when you click mods in main menu

austere schooner
#

aha, SMODS.findModByID

zealous glen
#

Yes some mods had compatibility in 0.9.8

#

But you’ll want to make sure your mod is loaded after by changing your priority

wintry solar
zealous glen
#

Not sure how co-compatibility would work

gilded narwhal
#

Whenever I hover over a cadr

#

Specifically on antimatter deck

lusty epoch
shell tangle
# wintry solar It’s already supported in alt textures, but you’re looking to modify the centers...

If you're saying right now, as in current main branch Steamodded Alpha, replacing centers using a raw_key = true atlas affects decks and enhancements, but does nothing to the floating soul sprite.
Also, replacing "Tarot" with raw_key only seems to modify Tarots, and after looking through the code, attempting to use what Palette does and replace "Spectral" and "Planet" with both raw_key = true and false, doesn't seem to replace anything. Still works by taking ownership, though.

Overall, though. if the current method is going to be depreciated soon, don't think there's a reason to bother to fix it, basically anything except the Soul with it's third sprite layer can be changed through Steamodded API, whether that's Atlas directly or taking ownership.

wintry solar
opal spade
#

any idea on how to make the sticker and the color match the stake?

#

testing code to swap stakes around, rn the only code is iterating through G.P_CENTER_POOLS['Stake'][2] swapping it with [8] (so red and gold stake respectively) + manually fixing up the .shiny

grand violet
#

Hey modders, I'll be on a trip for the next week or so, so I won't be around
Ping some other mods if you want stuff pinned in your modding threads
Thanks

~ egg

opal spade
#

trying to do lovely injection, but it seems im doing something wrong because my patch doesnt appear in the dump

#
version = "1.0.0"
dump_lua = true
priority = 0

[[patches]]
[patches.pattern]
target = "functions/UI_definitions.lua"
pattern = 'G.GAME.stake > 1'
position = "at"
payload = 'G.P_CENTER_POOLS.["Stake"][G.GAME.stake].applied_stakes ~= {}'
match_indent = true``` lovely.toml at my mod's folder
languid mirage
opal spade
#

thank you

mellow sable
wintry solar
#

is there a way to disable consumables being moved to the center when they expire?

opal spade
zealous glen
#

Is there a way to check for the current localization?

#

I guess I could just localize it—I'm returning

number > 1 and 's' or ''

as a localization variable

opal spade
mellow sable
opal spade
#

ye i've taken a look at it

opal spade
mellow sable
#

Stake numbers are defined dynamically though I think

#

I wrote stake api like two months ago lol

#

It might be possible if you take ownership of all the stakes to change the dependencies and how they load

opal spade
mellow sable
#

Hmm that could still be an issue for modded stakes that don’t apply any other stakes

#

Or it might just be blank

opal spade
#

ye white stake past stake one is blank, red stake past stake 2 has "also applies" be blank

#

i've already written a lovely patch for the stakes button for my thing, but im still brainstorming the other one

#
[patches.pattern]
target = "functions/UI_definitions.lua"
pattern = 'G.GAME.stake > 1 and {'
position = "at"
payload = "#G.P_CENTER_POOLS['Stake'][G.GAME.stake].applied_stakes ~= 0 and {"
match_indent = true```
mellow sable
#

If you change the order that stakes register it might help?

mellow sable
opal spade
#

i can make a commit rn

mellow sable
#

Once it’s stable feel free to make a PR and I can review it

languid mirage
#

G.SETTINGS.language

#

I assume

#

Idk what's the value but probably en-us

zealous glen
#

This feels
 too strong

mellow sable
#

why are the created cards not linked with the shop?

local epic_tag = {
    object_type = "Tag",
    atlas = "tag_cry",
    pos = {x=3, y=0},
    config = {type = 'store_joker_create'},
    key = "epic",
    loc_txt = {
        name = "Epic Tag",
        text = {
            "Shop has a half-price",
            "{C:cry_epic}Epic Joker"
        }
    },
    apply = function(tag, context)
        if context.type == 'store_joker_create' then
            local rares_in_posession = {0}
                for k, v in ipairs(G.jokers.cards) do
                    if v.config.center.rarity == "cry_epic" and not rares_in_posession[v.config.center.key] then
                        rares_in_posession[1] = rares_in_posession[1] + 1 
                        rares_in_posession[v.config.center.key] = true
                    end
                end

                if #G.P_JOKER_RARITY_POOLS.cry_epic > rares_in_posession[1] then 
                    local card = create_card('Joker', context.area, nil, 1, nil, nil, nil, 'cry_eta')
                    create_shop_card_ui(card, 'Joker', context.area)
                    card.states.visible = false
                    tag:yep('+', G.C.RARITY.cry_epic,function() 
                        card:start_materialize()
                        card.misprint_cost_fac = 0.5
                        card:set_cost()
                        return true
                    end)
                else
                    tag:nope()
                end
                tag.triggered = true
                return card
        end
    end
}
#

been banging my head at this for a bit and can't figur eit out

zealous glen
#

what's context.area during runtime?

#

also maybe you can try create_card_for_shop from UI_definitions?

#

also I don't see an emplace

stray warren
mellow sable
#

if I add emplace it gets added to the shop but doesn't replace the current shop item

zealous glen
#

That's what I did for Cows

mellow sable
#

Yeah that’s probably the play

zealous glen
# mellow sable Yeah that’s probably the play
function create_card(_type, area, legendary, _rarity, skip_materialize, soulable, forced_key, key_append)
    local has_cow = false

    if area == G.shop_jokers and _type == 'Joker' and forced_key == nil and key_append == 'sho' then
        for i = 1, #G.jokers.cards do
            if G.jokers.cards[i].ability.name == "Cow" then
                has_cow = true
                break
            end
        end
        if has_cow and pseudorandom(pseudoseed('cow_'..key_append)) < 1/12 then
            return create_card_post(_type, area, legendary, _rarity, skip_materialize, soulable, 'j_cow', key_append)
        end
    end

    return create_card_post(_type, area, legendary, _rarity, skip_materialize, soulable, forced_key, key_append)
end
opal spade
opal spade
#

sent a pull request

regal wolf
mellow sable
#

most cryptic error I've seen

#

oh my god it's because talisman somehow invaded this

formal viper
#

)_)

mellow sable
#

lmao it's because nativefs lib code uses math.max and I override it

edgy reef
#

...what

#

HOW

mellow sable
#

talisman dev

edgy reef
#

Spaghetti UI moment

mellow sable
#

for some reason I think it's turning many more things into Bigs that shouldn't

#

and the UI doesn't like that

#

because for some reason I made math.max and math.min freak out

narrow pollen
#

i swear to god

#

some jokers have non-table extra values and it's such a pain to edit them

zealous glen
crisp coral
#

what are consumables' SET and SECONDARY_SET colors based on?

#

oh vsc is dumb and forces alpha to be at the front to show the correct color

languid mirage
#

flippin jimbo

brisk pond
#

if context.other_joker and self ~= context.other_joker and context.other_joker.ability.set == "Joker" then is there a shorter way for this?

#

if I remove the last part it scores for consumeables too

crisp coral
#

no not really

#

context.other_joker checks for nil
self ~= context.other_joker checks for other cards

brisk pond
#

ok thanks

frosty dock
languid mirage
#

Oh ye

#

X is not flipped

#

I'll fix later balatrojoker

crisp coral
#

thanks spaghetti monster

frosty dock
#

Lmao

maiden phoenix
#

Flip the description too balatrojoker

languid mirage
#

Flip the entire screen

#

That would be funny

maiden phoenix
#

Wouldn't that mean the flipped card is no longer flipped? đŸ€”

zealous glen
#

Is this how you make a Joker that changes hand size?

#

Because my Joker worked normally in the first Blind then in the second Blind it set my hand size to 1

#

I don't explicitly change the hand size anywhere else, so either this is wrong or something else is creating issues, but I'm inclined to think it's not something else

frosty dock
#

you can just put h_size in config iirc, but it'll do the exact same thing

zealous glen
#

Do you know why it would be applying multiple times, though?

languid mirage
#

Probably because you already have h_size in config?

zealous glen
#

oh wait, maybe I know what's happening

#

It was a different Joker, possibly

#

yeah, I forgot to add a check to see if it granted extra hand size


#

😅

#

What do you think of the UI for these cards? (Sidequestion: how can I change the text or size of my mod's badge?)

languid mirage
#

Two pair color is kinda ugly

zealous glen
#

I don't think I'll adjust them since they come directly from Homestuck, but there might be some alternatives

languid mirage
#

Small info text is kinda too small, Idk how it looks in game tho but I feel like not too readable

zealous glen
#

Good

#

hmmm, maybe i can increase it a bit

iron sphinx
#

just make the text gray

zealous glen
#

Better?

zealous glen
narrow pollen
#

...okay, this is really fuckin irritating.

zealous glen
#

What is?

narrow pollen
#

so i had this idea for to the moon, where i was gonna make it give a very small amount of xMult every time you gained any amount of money

#

turns out, that even though the money is visually added during calculation, calculation is finalized before the money is added

iron sphinx
#

its in every(?) scaling joker

zealous glen
zealous glen
narrow pollen
#

ahhhh... so if i have the value increment when the dollar_buffer is greater than 0, it should work?

zealous glen
#

Look at how the game uses it

#

it'll end up something like dollars + (dollar_buffer or 0)

narrow pollen
#

oooooooooooooh

solid salmon
#

How do you collab with other mods?

narrow pollen
#

i see now

#

so what i need to do

#

is have the joker check dollar_buffer at every stage

#

and if it's greater than a variable that is set at the start

#

set that variable to the dollar_buffer and increment the counter

zealous glen
zealous glen
iron sphinx
#

i think its too small, looks good tho

narrow pollen
#

might bump the increase up, idk yet

#

bc that's from playing a rough gem diamond flush

#

maybe make it also lose mult if money is spent

brisk pond
#

help, I added this piece into the Joker but it continues to come in the shop

zealous glen
#

I made it slightly more compact

zealous glen
#

There are two flags to control if Jokers show up or not

#

See Cavendish or Stone Joker depending on what you want to do

brisk pond
#

I want to set it to always false

#

never to come up in the shop

zealous glen
#

Just do what Cavendish does

wintry solar
#

I think it just needs to return false

#

And rename to in_pool

zealous glen
#

Ah, I did find in_pool in the wiki

brisk pond
#

well, i already changed it for all the jokers to use a new pool_flag, so I'm not coming back

frosty dock
#

you can use pool flags where appropriate, but if you need to keep updating them or have more advanced logic, you should use in_pool

brisk pond
#

thanks for the info

#

it has to stay false for the whole game

frosty dock
#

in_pool = function() return false end,

wintry solar
#

Does the function not need self?

languid mirage
frosty dock
zealous glen
#

Notice anything different?

frosty dock
#

:o

zealous glen
#

:o

languid mirage
#

lvl 13 being white seems different

zealous glen
#

It is different!

#

No the colors loop, and I also changed the colors

#

I hope it doesn't get confusing with each Poker Hand having its own color


regal wolf
#

in my experience with UI, its a big mistake to add lots of different colours

#

what im doing with Saturn is just creating a pallet from colours that already exist in the game.

#

but again, it depends if you want the UI to feel like and integrated or not

quasi kettle
#

Where are the boss blinds stored? (I'm trying to see how some of the ante 8 boss blind effects work)

hallow forge
#

blind.lua

quasi kettle
#

thanks

quasi kettle
#

is there a way to act before the hand scores? I'm running into the issue that because I'm working in calculate the jokers calculate positions are locked in before the shuffle

languid mirage
#

You would probably need to find where context = before is being run from and add a lovely patch for extra calculate_joker call before jokers lock in

solid salmon
frosty dock
#

0629b huh

lament fjord
#

I'm investigating the crash issues that I'm experiencing with BU-CB, and the issue seems to be that... dofile doesn't exist? Is that a thing in Balatro's lua runtime environment?

lament fjord
#

That's even after I rename the folder to what it expects it

regal wolf
#

i REALLY need to write a guide to how to install it.

#

the reason there isnt a guide is bc its in development

#

its technically not released yet

regal wolf
lament fjord
#

Before renaming the folder, I get "file not found" stuff like you'd expect, after renaming it I get the error I described

regal wolf
#

can you send a pic of the error?

lament fjord
#

Okay so... what gives here

regal wolf
#

try verifying ur game files maybe i honestly dont know

#

if ur sure that the folder is named correctly, then i dont know what else to suggest.

#

the error is that it cant find the file to "do"

#

what version did you download

solemn coral
#

How do you get a playing card to display its xMult, even without an edition being applied to it?

#
[[patches]]
[patches.pattern]
target = "functions/common_events.lua"
pattern = '''if specific_vars.bonus_chips then'''
position = "before"
payload = '''
if card.ability.x_mult then
    #localize{type = 'variable', key = 'a_xmult', nodes = desc_nodes, vars = {card.ability.x_mult}}
    localize{type = 'other', key = 'card_extra_chips', nodes = desc_nodes, vars = {card.ability.x_mult}}
end
'''
match_indent = false
#

This code here "works", in that it displays a card's x_mult value as its extra chips value

rough furnace
#

IIRC the edition is one of those popup bubbles

#

It might be easier to add one of them

#

Otherwise you'll probably have to make a new localisation field to show it

solemn coral
#

I'd prefer it to display it in the regular bubble if possible. Theoretically there already exists a localization field for xmult, and I should just be able to use that one?

rough furnace
#

I'm not familiar with the localization system enough for that, sorry

solemn coral
#

Hopefully someone who is sees this request. In the meantime, I'll make an attempt at seeing if I can get the popup bubble to work

sonic mortar
languid mirage
#

yeah

#

was fixing the example in steamodded

sonic mortar
#

i need to get my hands on it

hallow forge
#

why's part of the sprite transparent?

languid mirage
#

?

#

where do you see transparency

hallow forge
#

nvm

languid mirage
#

I just needed tons of time to figure out what all values mean

hallow forge
#

make a guide, would be ultra helpful

sonic mortar
#

i could also use a shader that flips the sprite right-to-left

hallow forge
#

imagine a misprint shader

languid mirage
#

I planned that balatrojoker

hallow forge
#

the guide or misprint shader

hallow forge
#

nice ty

sonic mortar
#

i'm too lazy to learn shaders unfortunately but thanks so much

languid mirage
#

it sounds like a fun project, I just need to think of how am I going to fill the gap

#

thats why I had an idea why flipping didnt work

#

I was checking the shader code and it didnt make sense

hallow forge
#

Misprint Misprint

sonic mortar
#

there's just one problem, if you apply this edition to most playing cards, it would hardly change much if anything, right?

languid mirage
#

playing cards? probably

#

maybe seal position

sonic mortar
#

which is why i want a version which flips the sprite horizontally instead of just rotating 180

languid mirage
#

that's kinda hard

#

how do you fill the gaps

#

or like

hallow forge
#

what gaps?

#

r u thinking of rotation?

languid mirage
#

oh yea

#

uhm

#

you can remove newY part

#

and replace it with texture_coords.y

#

that should only flip horizontally

sonic mortar
#

i'll try

languid mirage
#

which might also work for you

#

for that you remove newX and replace it with texture_coords.x

zealous glen
#

An easy Blind concept. It feels a bit too easy to be challenging, maybe it needs an extra oomph

#

The Spin
First hand is discarded face down

#

That said, with 4 hands and 3 discards, you can dig through all but the last card of your deck
 except who knows if the cards you want are there or not đŸ€”

#

Actually, it should be all but the bottom 6 since the last hand
 is the last hand

#

What do you think?

hallow forge
#

efficiare or whatever it’s called:

zealous glen
#

what

hallow forge
#

Cryptid’s joker which makes you draw the whole deck

#

Absolutely evil on this blind

zealous glen
#

Ahh

stray warren
lament fjord
sly forge
#

recently discovered another math bug with UI, spacing on scaled text is wrong.
the second Black badge is supposed to be shrunk to 1/4 the width of the Common badge but the spaces between the letters have not been shrunk with the text

#

hey are most people mostly ignoring UI stuff? I could go correct all the UI math with what I've learned

crisp coral
#

ui too convoluted 😔

languid mirage
wintry solar
languid mirage
#

Was figuring it out so thought might as well

wintry solar
#

Yeah they’re not too bad once you understand how they work

#

I’ll take a look over your changes later today

languid mirage
#

It's mostly cleanup, I tested all of them to make sure nothing broke

surreal marsh
languid mirage
zealous glen
zealous glen
zealous glen
olive shoal
#

myki card

#

not sure how i feel about those background line things

zealous glen
#

They look interesting but the inconsistency width makes them look a bit worse

#

Not the width of different lines, the width of individual lines

regal wolf
languid mirage
#

This one is a toss of a coin if you auto discard useless cards or useful cards

zealous glen
#

I mean, unless you need 5 specific cards to win, I think this is less luck-reliant since you can dig deeper for face-up cards

languid mirage
#

Dig deeper is kind of a weird way to put it, since whatever you might be looking for could've been discarded

#

So you dig the same amount, technically

lament fjord
wooden nexus
regal wolf
#

What mod are you trying to install again???

frosty dock
wooden nexus
#

That doesn't answer my question lol

frosty dock
#

the game doesn't tell you what discarded face-down cards were

shell timber
hallow forge
#

you can still win with that

#

you can't win if you have no cards

zealous glen
wooden nexus
#

so i legit don't remember

zealous glen
#

I see

lament fjord
regal wolf
#

honestly i dont know what the issue is, i imagine it could be compatability. BU-CB is technically designed for drSpectred, so the compatibility is not tested.

mellow sable
#

this is such a goofy way to do what I want but hopefully it works

sage nacelle
#

Hey I just gotta ask but have secret modded hands been made that use Haumea or Makemake for their planets

sage nacelle
#

I know that mods which add a 5th and 6th suit include a hand called a "Spectrum" but I haven't used those and do not know what their planet is

regal wolf
#

math is buzz lightyear

mellow sable
#

We’re past break_infinity already

regal wolf
#

to break_infinity and beyond.

mellow sable
#

Mathguy ported OmegaNum so we’re already at e10##1000

regal wolf
#

to break_infinity and beyond beyond.

languid quiver
mellow sable
languid quiver
#

ahh okay

#

tyty

#

.....wait how do i write a lovely patch-

gilded narwhal
#

First do you know what lovely patches actually do

languid quiver
gilded narwhal
#

Mhm

languid quiver
#

ive never written one before though. i know how to code in lua though, just not sure exactly on the process of patching

gilded narwhal
#

This is the simplest example I could find

languid quiver
#

ohhh

#

hmmm interesting

regal wolf
#

Does it have to be a deck?

#

Nvm

#

Was reading one thing

#

If u wanna add custom challenges have a look at BU-CB-DEV, it’s a mod I made for balatro university. It’s got a custom challenge api.

languid quiver
#

where can i get my hands on this?

regal wolf
#

If you don’t know how to create mods it might be good to do

languid quiver
#

oh i found it

regal wolf
languid quiver
#

tyty

regal wolf
#

Take a look at the wiki

#

It will explain a bit about creating a challenge.

languid quiver
#

alrighty

mellow sable
#

could also look at steamodded api, which is used in eg. cryptid

gilded narwhal
#

You guys think I can come up with effects for all of them

hallow forge
#

eventually

gilded narwhal
#

Could I come up with effects for all 142 cookies

hallow forge
#

eventually

gilded narwhal
#

Yup

crisp elbow
#

inb4 stock market joker that works like the minigame kekw

olive shoal
#

flushmaxxing

solemn coral
#

Oh that looks like a fun card

#

Temporary cards are such a cool design space and I'm glad more people are messing around with those ideas

#

Is this mod out yet? Definitely want to play with that card if it is

olive shoal
solemn coral
#

Excited to see what further progress you make on it, then!

#

Love the art too - very cartoony Joker font and it looks good in pixel art

olive shoal
#

ty ty!

gilded narwhal
#

This is gonna be pretty tricky to implement

#

I imagine it's gonna involve a lot of lovely

crisp coral
#

it's pretty much impossible to have mod compat

gilded narwhal
#

I just have to manually program in what happens for every single modded spectral that's all!

#

Question does lovely work with other mods

#

Like could I change the code of a different mod

royal ether
#

considering almost every mod uses lovely, yes

#

oh

#

uh depends

#

you can change their lovely patches but i dont think you can directly change their lua file

gilded narwhal
#

Interesting

surreal marsh
gilded narwhal
#

Wait why

surreal marsh
#

because vanilla downsides are mainly reduce hand size and destroy all jokers

placid frigate
#

hey, i'm starting to work on a Joker mod but where do I start? i know their is a "templete" to follower for making the .lau file but how do i start?

surreal marsh
#

this is just my thought maybe dealing with each spectral card is better

gilded narwhal
#

I think just altering each spectral card is easier

#

Because I'm bad at this 😭

#

I'll do it later

rough furnace
#

anyways its programming time

mellow sable
# gilded narwhal

Cryptid compat balatrojoker
(there's a joker which does this for all spectrals planned, and then a system to do it for every item in the game for one custom consumable)

gilded narwhal
#

Damn

#

I guess I'm not allowed to make it :(

mellow sable
#

no you can make it

#

lol

gilded narwhal
#

I know I was joking lmao

placid frigate
rough furnace
slow ocean
#

hows smods doing folks

languid mirage
placid frigate
languid mirage
#

yes

#

also looking through the game's source code

#

for the context stuff

placid frigate
languid mirage
#

just look through other jokers code first

placid frigate
#

ok thank you

#

where would i find the jokers file in the game's source code?

languid mirage
#

Most of them are in card. lua, function calculate_jokers