#šŸ’»ćƒ»modding-dev

1 messages Ā· Page 56 of 1

zealous glen
#

As I had explained

night pagoda
#

that confused me greatly

#

let me take a look again then

zealous glen
#

There’s update_*_pack where * can be arcana, spectral, standard, buffoon, and celestial. Presumably Steamodded adds its own

night pagoda
#

yup, I see

zealous glen
#

Actually

#

There may be a simpler way

#

You can try cleaning the CardArea with the pack’s cards and refilling it

#

Arcana does it in create_UIBox_arcana_pack

night pagoda
#

refilling is the part that will break it potentially, especially if mods add their own behaviors

zealous glen
#

That seems simpler and less likely to break things

#

Refilling I mean

night pagoda
#

that's what I originally planned but reopening is much more reliable

zealous glen
#

Because it doesn’t manipulate states

zealous glen
night pagoda
#

lmao what we just said is completely opposite

zealous glen
#

I mean I think refilling is easier and less likely to break

#

Remaking a CardArea seems simpler and more stable than controlling how the state changes

#

I’m being repetitive, sorry

opal spade
#

its real but as i said it'll probably be only a couple jokers at most

#

dont rlly like how the art turned out but idk what to do for it to not be like that

crisp coral
#

danganronpa sleeper agents...

zealous glen
#

Homestuck sleeper agents where are you

glass scaffold
opal spade
# zealous glen Interesting

didnt plan on making that one but when i realized how easy it would be to translate the original effect (pick two players - swap their hands) into balatro and how much value it would actually have i went to it

crisp coral
#

project moon sleeper agents where are you

zealous glen
zealous glen
opal spade
crisp coral
#

no that's type moon

zealous glen
#

Or wait is it the Library of SCP series

#

Ruina of Ligmus

#

L

#

Lobotomy Corporation

opal spade
#

its funny

crisp coral
zealous glen
#

@opal spade self-destruct

#

Oh I didn’t post Ouroboros here

#

I have a Joker that refreshes your Hands, Discards, and deck when sold

#

It’s at least more useful than my original idea for it IMO

opal spade
zealous glen
#

Or tie it to Consumeables

#

Or the first hand or discard or something

#

Or a specific hand or somesuch

opal spade
#

what about making it so the card comes back at the end of the round

#

only if it does the effect though

zealous glen
#

At that point I think it could be a button

tepid egret
#

quick question, i updated my steamodded and now senddebugmessage logs aren't appearing anymore, is there a setting i have to change or smth

opal spade
#

the new steamodded added a setting for how verbose the logs are

#

probably that

zealous glen
#

Yes

#

You can change from the default (info?) to debug

tepid egret
#

where

#

or how

opal spade
#

mods menu settings

tepid egret
#

ahhh

#

interesting

night pagoda
hushed cradle
#
if effects[ii].x_chips then
                            if effects[ii].card then juice_card(effects[ii].card) end
                            hand_chips = mod_chips(hand_chips*effects[ii].x_chips)
                            update_hand_text({delay = 0}, {chips = hand_chips})
                            card_eval_status_text(G.hand.cards[i], 'x_chips', effects[ii].x_chips, percent)
                        end
                        --If hold mult added, do hold mult add event and add the mult to the total
                        
                        --If dollars added, add dollars to total
                        if effects[ii].dollars then 
                            ease_dollars(effects[ii].dollars)
                            card_eval_status_text(G.hand.cards[i], 'dollars', effects[ii].dollars, percent)
                        end

                        if effects[ii].h_chips then
                            mod_percent = true
                            print('yeah im supposed to be giving chips but fuck you')
                            hand_chips = mod_chips(hand_chips + effects[ii].h_chips)
                            update_hand_text({delay = 0}, {chip = hand_chips})
                            card_eval_status_text(G.hand.cards[i], 'h_chips', effects[ii].h_chips, percent)
                        end```
#

is there something obvious im doing wrong here?

#

x_chips works but h_chips doesnt

#

h_mult still works so its not like ive broken the game

#

judging by the eval message not working too its smth wrong with h_chips

#

but it clearly exists as when i print everything in eval it prints h_chips

zealous glen
night pagoda
#

There's something that blocks the button from spamming in the shop

zealous glen
# night pagoda

Hmmm… are you just recreating the pack cards or did you go with your original idea?

night pagoda
#

And I'm not sure what

night pagoda
#

and removed all delays/animations

night pagoda
#

but I still want to know tbh

hushed cradle
#

might be smth to do with button delay?

zealous glen
night pagoda
#

the others what?

zealous glen
zealous glen
#

You said there’s a delay only from the shop

night pagoda
#

no no no, I meant that the reroll button in the shop has a delay, the vanilla button

#

I want to check how to make the button unclickable like that too

zealous glen
#

Ah

#

I think maybe there’s a stop_use

#

I never learned how to use that

hushed cradle
#
if effects[ii].h_chips then
                            mod_percent = true
                            print(effects[ii].h_chips)
                            hand_chips = mod_chips(hand_chips + effects[ii].h_chips)
                            update_hand_text({delay = 0}, {chip = hand_chips})
                            card_eval_status_text(G.hand.cards[i], 'h_chips', effects[ii].h_chips, percent)
                        end```
#

its literally printing 13

#

effects[ii].h_chips is 13

#

it prints 13

#

and then doesnt add it to the total

#

or display the message

#

why

#

it literally exists

#

someone please help

#

im going insane

#

it says 13

#

😭

wintry solar
#

Is h_chips a valid effect?

hushed cradle
#

do i need to put somewhere as a valid effect?

#

ive made it

#

there isnt like a G.valid_effects is there?

#

if by valid you mean it is a thing

#

then yeah

#

i have the message working but im just feeding it a value of 13 chips

#

that was to test

#

because i cant pass it effects.h_chips apparently

zealous glen
hushed cradle
#

quite literally what im doing rn

#

okay so the message works too

#

it just wont add it to the total

#
if effects[ii].h_chips then
                            mod_percent = true
                            print(effects[ii].h_chips)
                            hand_chips = mod_chips(hand_chips+effects[ii].h_chips)
                            update_hand_text({delay = 0}, {chip = hand_chips})
                            card_eval_status_text(G.hand.cards[i], 'h_chips', effects[ii].h_chips, percent)
                        end```
#

this works apart from the mod_chips bit

#

omg i see it

#

no

#

no

#

no

#

please

#

i hate myself

#

its meant to be chips

#

so it was working

#

but didnt look like it

#

i swear i copy pasted that line

#

no idea how theres a typo

#

well now x chips and h chips and x h chips are all working

#

and so is my custom edition

crisp coral
#

ughhh i hate lua junk

#

how do i modify G.LANG.font without also modifying G.LANGUAGES["en-us"].font

frosty dock
#

aren't those the same table?

crisp coral
#

...yes, self.LANG = self.LANGUAGES[self.SETTINGS.language] or self.LANGUAGES['en-us']

#

that's why i complained about lua junk

frosty dock
#

that's not even lua junk

#

that's just how object references work

crisp coral
#

ugh

#

what would be a good workaround

#

right now i have this at the start of Game:update

#

and uh. the problem is pretty clear

frosty dock
#

make it use copy_table when assigning to G.LANG

static juniper
#

Is there a way to shuffle Jokers before a hand is scored? I tried to use this code from Amber Acorn, but it only takes place after the hand is scored, not before.

    G.E_MANAGER:add_event(Event({ trigger = 'before', delay = 0.2, func = function() 
        G.E_MANAGER:add_event(Event({ func = function() G.jokers:shuffle('aajk'); play_sound('cardSlide1', 0.85);return true end })) 
        delay(0.15)
        G.E_MANAGER:add_event(Event({ func = function() G.jokers:shuffle('aajk'); play_sound('cardSlide1', 1.15);return true end })) 
        delay(0.15)
        G.E_MANAGER:add_event(Event({ func = function() G.jokers:shuffle('aajk'); play_sound('cardSlide1', 1);return true end })) 
        delay(0.5)
    return true end }))
end```
stray warren
#

Confused as to why I'm getting this error for this code:

        -- If boss blind defeated, reset all rank flags and reset x_mult
        if context.end_of_round and G.GAME.blind.boss and not context.blueprint then
            for i=1, #card.ability.extra.ranks do
                card.ability.extra.ranks[i] = false
            end

            card.ability.extra.x_mult = 1

            return {
                message = localize('k_reset'),
                colour = G.C.RED
            }
        end

It only happens when I put the return statement in

#

'for' limit must be a number

frosty dock
maiden phoenix
#

Experimenting with SMOD's consumable type

#

Just goggle'd it and bread isn't a pastry nor is it spelled pastery but otherwise it's neat

stray warren
# stray warren Confused as to why I'm getting this error for this code: ```lua -- If bo...

Just tried it with this code and it calls card_eval_status_text 16 times?!

        -- If boss blind defeated, reset all rank flags and reset x_mult
        if context.end_of_round and G.GAME.blind.boss and not context.blueprint then
            for i=1, #card.ability.extra.ranks do
                card.ability.extra.ranks[i] = false
            end

            card.ability.extra.x_mult = 1

            card_eval_status_text(card, 'extra', nil, nil, nil, { message = localize('k_reset'), colour = G.C.RED})
        end
#

I'm doing something wrong, I just know it

maiden phoenix
#

There are multiple things called in context.end_of_round

maiden phoenix
wintry solar
#

it's calling it on every card you have

#

I think

stray warren
wintry solar
#

I don't think you need the individual one btw

maiden phoenix
#

He does... but usually nothing calls it

stray warren
#

I was referencing Campfire's code for this, and I didn't see Campfire referencing those contexts, so I didn't think to use them

tepid sky
#

what is the best balatro mod? :)

wintry solar
#

I might have missed the individual context I suppose

#

but I'm pretty sure the game never sends a context that has end of round and individual

stray warren
#

Oh, i see, the base game does reference context.repetition, it's just up in it's own elseif so I didn't see it in the breadcrumbs

maiden phoenix
#

Much better

stray warren
#

literally the most useful thing in existence

wintry solar
#

Galdur coming for the crown šŸ‘‘

tepid sky
stray warren
#

I can't really play without it anymore

#

It feels like something that should be in the base game

tepid sky
#

what about the mod that adds colours?

stray warren
#

Not sure which one you are referring to

tepid sky
#

me neither

mellow sable
#

Trance?

zealous glen
#

It's just missing the quick play feature

#

Then Galdur will be on the way to the crown

wintry solar
#

I'm pretty sure I can do that super quick but I'm down a rabbit hole with stake stuff for smods 😢

zinc pelican
#

Anyone know of any example mods that add a custom button to the run area? Like where run info & options button would be

wintry solar
#

Ante 1: 300/300/300
Ante 2: 800/900/1000
Ante 3: 2000/2600/3200
Ante 4: 5000/8000/9000
Ante 5: 11000/20000/25000
Ante 6: 20000/36000/60000
Ante 7: 35000/60000/110000
Ante 8: 50000/100000/200000
ewwww thunk why are these just abritrary numbers

brisk quartz
wintry solar
#

Ante 4 just makes no sense

languid mirage
#

how so

mellow sable
#

Numbers were just picked based on feel by thunk I think

wintry solar
#

I'm not sure how to rationalize this

#

I can go with reasonably close formulas apart from ante 4 I guess

regal wolf
#

It's because they were altered in testing.

#

Initially it was a lot more uniform in its growth AFAIK

wintry solar
#

oh I guess I can just have an equation based system past scaling of 3

#

Ante 1 - 300
Ante 2 - 700 + 100*scaling
Ante 3 - 1400 + 600*scaling
Ante 4 - 2100 + 2900*scaling
Ante 5 - 15000 + 5000*scaling
Ante 6 - 12000 + 8000*(scaling + 1)*(scaling/2)
Ante 7 - 10000 + 25000*(2^scaling-1)
Ante 8 - 50000*(2^scaling-1)

#

thought's on these?

#

I'm not sure if ante 7 and 8 ramp up too fast or not

#

this also doesn't match the ante 4 values from in the game but I only plan on applying this past base game scaling anyway

wintry solar
#

this would be scaling levels 4 and 5 for reference

zealous glen
zealous glen
crisp coral
#

we love ante 4 scaling

zealous glen
# wintry solar Ante 4 just makes no sense

It’s less important that the numbers follow a nice pattern than the game feeling good to play. Thus the game can have difficult spikes and valleys.

Eyeballing it, I get the impression each ante (for the first tier) is on the order of magnitude of twice the previous ante, so I’m guessing thunk started there then adjusted up and down.
The higher tiers are closer to thrice, except it slows down to twice on 7 and 8.

#

6~8
16~20
4~5
10~11
22~20
40~35
70~50

hushed cradle
#
local ben_yes = SMODS.Sound{
    key = 'ben_yes',
    path = 'ben_yes.ogg',
    volume = 0.6,
}

local ben_no = SMODS.Sound{
    key = 'ben_no',
    path = 'ben_no.ogg',
    volume = 0.6,
}```
#

do i have to specify the whole path?

#

ah i havent registered them

#

mb

glass scaffold
#

What's the dimensions for a Joker texture?

young cloud
#

the image as a whole is 71x95

#

the actual texture itself is 69x93

#

so essentially just 71x95 with a 1px invis border

glass scaffold
#

Thanks

#

context.other_card:is_suit('Hearts')

How do I convert this into triggering if it's a 6 or a Stone card?

hushed cradle
#

if context.other_card.ability.name == 'Stone Card' then

#

and

#

if context.other_card:get_id() == 6 or

#

i think

glass scaffold
#

And how do I add to Mult instead of multiplying?

hushed cradle
#

return mult instead of x_mult

#

if thats what you mean

#

are you making a joker that gives mult for 6s and stone cards?

glass scaffold
#

Yes.

hushed cradle
#
if context.individual and context.cardarea == G.play then
  if context.other_card:get_id() == 6 or context.other_card.ability.name == 'Stone Card' then
    return {
      mult = card.ability.extra,
      card = card,
    }
  end
end```
#

should work

static juniper
#

I'm trying to make a Joker where "On discard, Spade cards held in hand have a 1 in 2 chance to give $1". I've been trying to make this effect for a while and can't figure it out. This is what I have so far, where I've been trying to take code from Reserved Parking and adapting it to work with discards (without the 1 in 2 chance implemented yet), but all this does is juice up the first Spade card in hand and do nothing.

    for k, v in ipairs(G.hand.cards) do
        if v:is_suit('Spades') then
            G.GAME.dollar_buffer = (G.GAME.dollar_buffer or 0) + card.ability.extra.dollars
            G.E_MANAGER:add_event(Event({
                func = (function() 
                    v:juice_up()
                    G.GAME.dollar_buffer = 0
                    return true
                end)}))
            return {
                dollars = card.ability.extra.dollars,
                card = card
            }
        end
    end
end```
glass scaffold
hushed cradle
#

šŸ‘

static juniper
#

It's a pretty advanced effect, but I'm afraid I'm going to have to start understanding these if I want any chance to not completely die while attempting to mod this game

hushed cradle
#

i mean looking at it im not even sure why it wouldnt work

#

maybe

#

ug

#

uh

#

probably because its returning inside the for loop

#

so it only ever checks the first spade card

#

and juices that

#

that would be my best guess

static juniper
#

I don’t really know how to make it give the dollar though

hushed cradle
#

you can call ease_dollars inside the event

crisp coral
#

use ease_dollars and SMODS.eval_this for the message

#

actually eval_this has the dollars arg

#

no it doesnt

#
ease_dollars(card.ability.extra.dollars)
SMODS.eval_this(card, {
  message = localize('$')..card.ability.extra.dollars,
  colour = G.C.MONEY,
})
static juniper
# crisp coral ```lua ease_dollars(card.ability.extra.dollars) SMODS.eval_this(card, { messag...

This is pretty much exactly what I needed, thanks! The only problems I had were that the animation was playing on the Joker (which I fixed by changing card to v), the effect being applied once per discarded card (which I fixed by adding and context.other_card == context.full_hand[#context.full_hand] to the condition) and another issue that I have yet to fix:
The spade cards that are currently being discarded are counted for money, which is not the intention. I'm not sure how to fix that quite yet. Here's what I have right now

    for k, v in ipairs(G.hand.cards) do
        if v:is_suit('Spades') then
            ease_dollars(card.ability.extra.dollars)
            SMODS.eval_this(v, {
                message = localize('$')..card.ability.extra.dollars,
                colour = G.C.MONEY,
            })
        end
    end
end```
crisp coral
#

you can do v ~= context.other_card

static juniper
#

But then if v is anything but the last card, it will still be counted, because context.other_card == context.full_hand[#context.full_hand] makes the block only run on the last card to ensure it's run once. Removing that would apply it to every card individually, meaning, discarding five spade cards, each spade individually would give $1 four times.

#

My first thought was to make an array of all the context.other_cards and check if v is contained within the array, but I don't know if I can get the array to not reset itself between each change in context.

#

My attempt to put the array in config lead to the game crashing, telling me that items cannot be appended to a nil value.

crisp coral
#

que

#

i guess you can check for discarded cards with card.highlighted??

static juniper
# crisp coral i guess you can check for discarded cards with ``card.highlighted``??

I'm not quite sure how to use that right now, but that did lead me to realize I was overcomplicating it and I could just use context.full_hand as my array. Here's the finished code:

            
    local function has_value (tab, val)
        for index, value in ipairs(tab) do
            if value == val then
                return true
            end
        end
        return false
    end
    
    if context.other_card == context.full_hand[#context.full_hand] then
        for k, v in ipairs(G.hand.cards) do
        if v:is_suit('Spades') and not has_value(context.full_hand, v) and pseudorandom('gold_rush') < G.GAME.probabilities.normal/card.ability.extra.odds then
                    ease_dollars(card.ability.extra.dollars)
                SMODS.eval_this(v, {
                    message = localize('$')..card.ability.extra.dollars,
                    colour = G.C.MONEY,
                })
            end
        end
    end
end```
(In case you were wondering, I already had the `has_value` function from something else)  Thanks for the help!
crisp coral
#

thumbs

stray warren
#

Pinkies

static juniper
#

Pointers?

stray warren
#

No, I like safe programming

glass scaffold
#

Can I just rip the code from the Strength tarot card to increase the rank of a card or is there something special for it?

static juniper
glass scaffold
#

So having for i=1, do gives this:

opal spade
glass scaffold
#

h u h

opal spade
#

so like for i = 1, 10 do would loop 10 times

#

you can add a third value to determine how i increments (w/o a third value its +1)

glass scaffold
#

Well, that fixed that issue (Thanks).

And now begins the fun rabbit hole of debugging.

#
                    local card = card,
                    local suit_prefix = string.sub(card.base.suit, 1, 1)..'_'
                    local rank_suffix = card.base.id == 14 and 2 or math.min(card.base.id+1, 14)
                    if rank_suffix < 10 then rank_suffix = tostring(rank_suffix)
                    elseif rank_suffix == 10 then rank_suffix = 'T'
                    elseif rank_suffix == 11 then rank_suffix = 'J'
                    elseif rank_suffix == 12 then rank_suffix = 'Q'
                    elseif rank_suffix == 13 then rank_suffix = 'K'
                    elseif rank_suffix == 14 then rank_suffix = 'A'
                    end
                    card:set_base(G.P_CARDS[suit_prefix..rank_suffix])
                return true end }))```
#

Those 2 dots are literally from the game's source code (line 41), so I got no clue

#

Anyone have an idea?

opal spade
#

remove the ,

wintry solar
#

Which one is line 41?

opal spade
#

it seems like its local card = card,

glass scaffold
opal spade
#

it expects something after the , on line 40

#

what does line 40 do here though?

glass scaffold
glass scaffold
#

Legit copy-pasted Strength's source code and now I'm working backwards from there.

opal spade
#

you're defining a local card by using local card as the definition

glass scaffold
#

Should I move that line outside the calculate function?

opal spade
#

vanilla does ranks differently than smods so it makes sense to look at smods.rank first

wintry solar
#

There’s some more rogue commas

opal spade
glass scaffold
#

Same code as the base game in /lovely/dump.

glass scaffold
#

Nevermind, found them and got rid of them.

#

So that's all good

red flower
#

you should probably look up how to add lua support to your editor so it tells you where the mistakes are in advance

glass scaffold
red flower
#

that's weird then, it usually marks everything red if you have even a single trailing comma

glass scaffold
#

Ok, so I just moved the atlas code above the calculate and it fixed itself.

Now I'm able to launch into the game.

#

Testing time.

#

So I'm able to summon it.

No effect.

#

It's supposed to trigger on all non-scored cards.

#

Issue is: why is it just sitting there like a duck?

wintry solar
#

Your contexts are wrong

crisp coral
#

not even context is wrong

#

you're doing local card = card

#

which means you're trying to upgrade the joker itself

#

use context.other_card

glass scaffold
#

Look good?

#

Nope, that didn't work.

#

where do I need to put context.other_card?

opal spade
#

you need to rename the local card into something else (it conflicts with card of calculate)

glass scaffold
#

Thanks for dropping the resources

glass scaffold
frosty dock
tepid sky
#

i got winrar

#

i even copy pasted balaro into my mods folder for easy acess

#

what do i convert it to?

#

or extract it to?

#

or what do i do ;-;

frosty dock
#

wdym

tepid sky
#

i previously didn't want to use winrar cuz it looked sketchy

#

i am trying to learn how to mod balatro my self

#

but i'd need to extract balatro into a zip iirc?

#

i just don't know if i need to mess with any settings

frosty dock
#

if you're trying to look at the source code, you just extract the executable as if it were a zip file

#

because that's all it is

tepid sky
#

also i already installed lovely and steamodded

frosty dock
#

yeah

frosty dock
hushed cradle
#

might be a really stupid question but i do need a name for my hand?

#

ive got a name inside the loc_txt, but the wiki doesnt explicitly say anything about a name

#

and im getting an error and wondering if thats why

tepid sky
#

oh wait, i can just open things-

hushed cradle
#

nvm it works now , apparently the key i was using just isnt allowed ig

tepid sky
#

oh hey i did it- i got all textures and shaders straight out of the game- xD

#

funny

#

omfg

#

i can make my own talking joker-

#

:OOOO

frosty dock
tepid sky
#

ooh the custom fonts >_>

hushed cradle
#

hand_blackjack

#

apparently it didnt like that

#

whoever wrote this wiki stuff on poker hands im ngl you have probably written it well, but im way too stupid to understand it

opal spade
#

any advice on avoiding creating ghost cards?

crisp coral
#

use events

hushed cradle
#

uh what is the evaluate parameter for SMODS poker hand?

#

is it a function?

#

does anyone know of any mods that have these poker hands in them so i can have a look at them?

#

the example mod isnt enough unfortunately

frosty dock
hushed cradle
#

so does it take a hand argument? tried doing #hand and it threw an error i think

#

lemme check again

frosty dock
#

bj hands too but I think the port's not fully finished?

hushed cradle
#
evaulate = function(parts, hand)
        local ret = {}
        for i = 1, #hand - 1 do
            local next_highest = get_highest(hand)[1]
            local rank = SMODS.Ranks[next_highest.base.value]
            if #ret == 0 then
                if rank.key == 'Ace' then
                    table.insert(ret, next_highest)
                end
            else
                if (rank.key == '10' or rank.face) then
                    table.insert(ret, next_highest)
                    return {ret}
                end
            end
        end
        return {}
    end```
#

at a glance would you be able to tell whats wrong w this?

#

other than the -1

maiden phoenix
#

"evaulate"

hushed cradle
#

šŸ’€

frosty dock
#

the fact that evaluate is misspelt?

hushed cradle
#

yep thatll do it

#

mb lol

#

ah im not removing from hand

frosty dock
#

get_highest returns a table containing a table containing the card

#

also I advise you don't modify hand

hushed cradle
#

probably a good idea yeah

#

god my code is so ass

maiden phoenix
crisp coral
#

omn bread game

maiden phoenix
#

Prob gonna try to replace "use" to "eat" and maybe use SMODS Sound to add a crunch. Tho I'll prob way til calculate is enhanced for consumables

hushed cradle
#
evaluate = function(parts, hand)
        local ret = {}
        local ace = false
        local ten = false
        for i = 1, #hand do
            local rank = SMODS.Ranks[hand[i].base.value]
            if not ace then
                if rank.key == 'Ace' then
                    table.insert(ret, hand[i])
                end
                ace = true
            end
            if not ten then
                if (rank.key == '10' or rank.face) then
                    table.insert(ret, hand[i])
                    ten = true
                end
            end
        end
        if ten and ace then return ret end
        return {}
    end```
#

got no idea what im doing 😭

#

out of interest, is the composite function in the example mod different from evaluate?

#

i would think so because its called smth else

#

but idk how it work if it is

#
SMODS.PokerHandPart{
    key = 'blackjack',
    func = function(hand)
        for i = 1, #hand do
            local rank = SMODS.Ranks[hand[i].base.value]
            if not ace then
                if rank.key == 'Ace' then
                    table.insert(ret, {hand[i]})
                end
                ace = true
            end
            if not ten then
                if (rank.key == '10' or rank.face) then
                    table.insert(ret, {hand[i]})
                    ten = true
                end
            end
        end
        if ten and ace then return {ret} end
        return {}
    end,
}```
#

i give up w hands bruh

hushed cradle
#

no way it my steamodded was outdated

#

damn

primal robin
#

Is it possible add new boss blind with atlas properly without using Steamodded?

night pagoda
lament fjord
#

Double check that self.config has an entry for center

#

Indexing a table with a key it doesn't have gives nil

night pagoda
#

yeah I don't have a config at all

#

but it's optional so something isn't right

#

I should say that the code on the screenshot is from steamodded, pool.toml to be exact

#

also I can't get this crash consistently for some reason

languid mirage
#

this is so sad, can't figure out how to fix the lines from pixelating 😦

zealous glen
#

Unless I’m misremembering

opal spade
zealous glen
#

I’ve updated the text since then, but this is it @dim ice

languid mirage
zealous glen
#

I don’t think so

#

I don’t remember myst working on shaders

#

My next guess was @silent @edgy reef when they were adding dice to tooltips

#

Failure

#

But it could’ve been a third person too

languid mirage
#

the only thing I can find on google is trying to disable mipmap, but because jokers are all in 1 atlas, and textures are reused, it will disable it for everything

#

tho my suspicion it's the vertex shader, somehow

dim ice
#

kk, i might make an exception and draw champions belt early

zealous glen
#

Someone else had that exact issue

languid mirage
#

the issue is also present without pixel smoothing enabled

#

ĀÆ_(惄)_/ĀÆ

#

I tested a lot of things trying to figure this out

zealous glen
languid mirage
#

it does

#

if you disable pixel smoothing

zealous glen
#

It’s a love2D setting not a Balatro setting

#

hmmm

languid mirage
zealous glen
#

Still, have you tried making your squares bigger? So they overlap?

languid mirage
#

huh

#

what squares

languid mirage
#

you mean pixel size

#

and lines still appear with pixel size 2

zealous glen
#

No

languid mirage
#

currently pixel size 10 is used

wintry solar
#

I had this problem

zealous glen
#

You are looking at a 10x10 square and averaging the color

#

But I want you to draw that color in a 11x11 square

#

Bigger than the original

#

So you end up with overlaps

wintry solar
#

that's not how shaders work

languid mirage
#

I tried that too

wintry solar
#

I tried loads of things and couldn't find a solution to the lines

#

I think it's just a consequence of the way love scales it's canvas

languid mirage
#

the only thing I could think of

zealous glen
languid mirage
#

is applying blur shader of this

#

draw what smaller lol

zealous glen
#

What you did but -1 instead

#

So you draw on 9x9

#

After averaging on 10x10

wintry solar
#

is this with the base layer not being drawn?

languid mirage
#

base layer has no effect

zealous glen
#

I mean some people have made pixelation shaders for love2D, so it can’t be impossible šŸ¤”

languid mirage
#

already tried

wintry solar
#

and it still draws the weird lines with pixel smoothing off?

languid mirage
#

high res jimbo balatrojoker

#

was trying smth funny

languid mirage
#

I dont see how it'd have any effect

wintry solar
#

I didn't get the lines with pixel smoothing off iirc

languid mirage
#

background shader has pixelation

#

it's when plane is moved then the lines appear

#

and because lines are always horizontal, I believe it's the vertex shader

#

but I dunno how

dim ice
#

@zealous glen i may have a small issue, i cant really find the repentance shop door, which is needed because champion's belt appears only in shops

stray warren
#

Ooh, are you making an Isaac mod?

dim ice
#

yes (theres alot of art of it in fan-art)

dim ice
stray warren
#

Actually sick. I was thinking of doing this myself, glad someone else thought of it

stray warren
tepid sky
crisp elbow
#

Calling it the Ballad of Jimbo

#

I made like one card idea for a spindown dice where it would go based off the shop collection to go down a joker

#

Is there any way we can all collab on like ideas? šŸ˜›

crisp elbow
zinc pelican
#

Dumb question, new to lua and still very novice at programming, can someone explain what the highlighted hud.nodes[1] etc is doing?

languid mirage
languid mirage
#

but instead of removing, I needed to use linear

#

downside is that mipmap is applied to all atlases

dim ice
hushed cradle
#

is there an easy way to edit this badge?

crisp elbow
dim ice
hushed cradle
#

also any way to change this badge without renaming the joker?

opal spade
crisp elbow
#

if you own Isaac you can dump the sprites yourself using the modding tools

hushed cradle
hushed cradle
#

didnt realise there wa s a function for it

#

i knew how to add to badges but not change

#

can i use that to change the jokers badge too?

languid mirage
opal spade
languid mirage
#

ok nevermind it was a steamodded issue

hushed cradle
stray warren
crisp coral
crisp coral
crisp elbow
#

I mean most quality 4 items would probably be legendaries

languid mirage
crisp coral
#

for some reason that thread was removed from my theads list

languid mirage
#

I am considering adding mipmap as a setting to steamodded

crisp elbow
#

do it

#

mipmaps kekw

crisp coral
#

i need the pixelation shader for the challenge

languid mirage
#

because rn it's just a lovely patch that you can't toggle

stray warren
crisp elbow
#

True..

#

I can make a mod thread, I'm no coder but I'm a concepter / artist

hushed cradle
#

how do i make the colour change with the hand level?

crisp elbow
#

God we should all collab...

stray warren
#

Or... There could be new rarities Quality 1, Quality 2, Quality 3, and Quality 4

crisp elbow
#

Some items I feel would be better as consumables too šŸ¤”

#

Like Spindown dice being a spectral fits

dim ice
#

there are so many possibilities

crisp elbow
#

we should do it real

stray warren
#

And 0

hushed cradle
#

how do i pass a colour variable to loc vars?

#

whats the syntax

dim ice
hushed cradle
#

yeah

#

for a planet card

dim ice
#

you dont put it in loc vars

hushed cradle
#

so the colour has to change

dim ice
#

oh like the color of hand lvl changes when it lvls up?

hushed cradle
#

yeah

dim ice
#

you dont really need to make it accurate to the hand lvl color

regal wolf
#

Check BU-CB — there’s a lot of examples in there

hushed cradle
#

ty šŸ™

regal wolf
#

Np

dim ice
crisp elbow
#

Dude there could be unlock conditions where you have to win with certain decks or something pog

#

I just realized that

regal wolf
# hushed cradle ty šŸ™

G.localization.misc.v_text.ch_c_cm_no_overscoring = { "{C:attention}Blind{} score must not exceed {C:green}#1#%{}" }

#

for example

dim ice
hushed cradle
#

i wanna change the colour tho

regal wolf
hushed cradle
#

sorry i mean like

#

yk how the planet cards

#

the colour of the level changes when you level them up

regal wolf
#

oh yes

hushed cradle
regal wolf
#

update_hand_text({sound = 'button', volume = 0.7, pitch = 0.9, delay = 0}, {level=G.GAME.hands[hand].level})

stray warren
regal wolf
tepid crow
regal wolf
#

i forgot what it is but check in the level_up_hand func

hushed cradle
#

yeah but how lol

#

thats what im tryna get to the bottom of

#

i have to colour

regal wolf
#

?

hushed cradle
#

i have the loc text

#

i just need to put the colour in the loc text

stray warren
#

Don't you do the {C:color} thing?

regal wolf
#

yeah

#

thats what I said initially?

hushed cradle
#

yeah but it needs to be variable

hushed cradle
#

i need to pass in a colour variable to that

#

but that will only ever be attention colour

#

hold on

regal wolf
#

look at the end of it lol

hushed cradle
regal wolf
#

{C:green}#1#%{}

hushed cradle
#

you see how the lvl.x colour changes

languid mirage
#

the game does it this way

regal wolf
hushed cradle
#

i have the colour

#

i need to pass it into the description

hushed cradle
languid mirage
#

you would need to go into localize function

#

and see how it works exactly

regal wolf
#

just look at bu-cb-dev

hushed cradle
#

i understand that i can do {C:red}red{} for red text

#

etc

#

but the colour of a hand level changes depending on level

#

so when it generates the ui box

#

from the localization file

#

it has '{S:0.8}({S:0.8,V:1}lvl.#1#{S:0.8}){} Level up', in it

#

where it passes a colour in for V

#

instead of just being {C:red}lvl{} and then the colour would only ever be red

languid mirage
hushed cradle
#

loc colours

#

right

#

that might work lemme see

languid mirage
#

no

regal wolf
#

😭

languid mirage
#

the part before loc colors

#

loc colors just gets the default colors

#

like CHIPS and whatever

hushed cradle
#

idk what im lookingat then then

#

ah

languid mirage
#

you need to send list of colors

hushed cradle
#

so colours table goes inside vars

languid mirage
#

into vars.colours

hushed cradle
#

i still dont know the syntax tho so i cant get it to work

#

well thats a step in the right direction

#

thank you stupid

languid mirage
#

np

hushed cradle
#

no idea why its white tho 😭

languid mirage
#

maybe value is null

hushed cradle
#

huh

#

no apparently

#

the hand level

#

first colour

#

is actually white

languid mirage
#

oh yea

hushed cradle
#

why lol

#

just gonna have to manually set it to ui text_dark if its level 1 ig

languid mirage
hushed cradle
#

ohh

#

makes sense now

#

yk your name isnt very fitting

languid mirage
#

game also manually overrides it to black

hushed cradle
#

cool to know

static juniper
#

I'm still trying to get this Joker effect to shuffle cards before a hand is scored. This is what I tried to do, using some code from Amber Acorn, but for some reason, it still only shuffles them after the hand is scored.

    G.E_MANAGER:add_event(Event({ trigger = 'before', delay = 0.2, func = function() 
        G.E_MANAGER:add_event(Event({ func = function() G.jokers:shuffle('aajk'); play_sound('cardSlide1', 0.85);return true end })) 
        delay(0.15)
        G.E_MANAGER:add_event(Event({ func = function() G.jokers:shuffle('aajk'); play_sound('cardSlide1', 1.15);return true end })) 
        delay(0.15)
        G.E_MANAGER:add_event(Event({ func = function() G.jokers:shuffle('aajk'); play_sound('cardSlide1', 1);return true end })) 
        delay(0.5)
    return true end }))
end```
hushed cradle
#

if you add an event the events are done until after the round or smth like that

#

i had smth similar trying to add an event for a joker to dissappear

#

but it only went after the cards had scored even if the event was made before that

static juniper
#

Is there a way to get the shuffle to happen before the hand?

hushed cradle
#

probably, but not that i know of

#

sorry

hushed cradle
#

having a bit of trouble making a spectral apply an edition to a card

#
use = function(self, card, area, copier)
        G.E_MANAGER:add_event(Event({trigger = 'after', delay = 0.4, func = function()
            local over = false
            local edition = 'e_sneaky'
            local sneaky_card = G.hand.highlighted[1]
            sneaky_card:set_edition(edition, true)
            card:juice_up(0.3, 0.5)
        return true end }))
    end,```
#

just chaned the key back to e_sneaky but that gives the same error

frosty dock
#

that assertion checks for the key starting with e_

#

so it sohuldn't raise the same error if it's e_sneaky (but shouldn't there be a mod prefix?)

stray warren
#

Should be e_cere_sneaky, right?

hushed cradle
#

ah right

#

i never know when i need mod prefixes, because sometimes it feels like i dont need to use them

#

i tried cere_e_sneaky but that didnt work lol

#

so i ruled out a problem with the prefix

#

but obv not

frosty dock
#

the class prefix is always first

#

so e_cere_sneaky is probably right

stray warren
#

Unless you manually defined a prefix

hushed cradle
#

works perfectly, thank you

stray warren
#

That's a neat idea

hushed cradle
#

i think its quite funny lol

frosty dock
#

you never need mod prefixes when you're passing a key or key-like string (i.e. something that refers to a different object's key, so atlas, shader, etc.) to a smods API constructor

crisp coral
#

would that prevent perma_debuff

hushed cradle
#

it should

crisp coral
#

because i don't think bunco's fluorescent does

frosty dock
#

exceptions are things like requires on vouchers that are expected to also process other mods' objects

hushed cradle
#
local blind_debuff_card_ref = Blind.debuff_card
function Blind:debuff_card(card, from_blind)
    if card.edition and card.edition.type == 'cere_sh_sneaky' then
        card.debuff = false
        return
    else
        blind_debuff_card_ref(self, card, from_blind)
    end
end```
#

this is the code for it lol

crisp coral
#

okay so how do i prevent a debuff prevention

hushed cradle
crisp coral
#

asking for specifically one card

hushed cradle
frosty dock
#

cere_sh_sneaky also looks wrong

hushed cradle
#

oh yeah its not that anymore

#

oops

#

good spot

#

so when im making jokers, consumables etc

#

do i not need to add j_ or c_ at all

#

why did it do that

#

j_, c_

#

steamodded automatically does that?

crisp coral
#

yes

hushed cradle
#

cool

unkempt thicket
#

how does stickers work, implementation wise

tepid sky
#

@shell timber i got a question about the github site, do i just add a pickture called "logo"? or do i need to change a configure somewhere in the index.html? or anywhere else for that matter

cobalt leaf
#

so scale of 1-10 how difficult would it be for a guy that has like one high school class of experience in java to make a mod

zealous glen
#

I mean it depends on the scope

cobalt leaf
#

you know thats fair

#

LMAO

#

let's say like an average sized content mod

#

10 of everything

tepid sky
#

r u entirely new to coding?

cobalt leaf
#

ive diddled around before but i dont exaclty know how to CODE

#

you know?

tepid sky
#

nice cuz i am entirely new :)

cobalt leaf
#

dope

#

i see youre a flush enjoyer

#

im a high card/straights guy

tepid sky
#

nice

cobalt leaf
#

ooh u know what would be funny

tepid sky
#

i liked checkered deck the most as well as plasma :>

tepid sky
zealous glen
#

Also I think 10 of everything is a lot

#

Like that’s about as many planets as there are

#

And half of tarots

cobalt leaf
#

how big of a scope would it be to make 52 custom hands

#

for each card being a high card

#

so u got like 7 of spades and u can level it up

zealous glen
#

I mean if you know how to code that should be very small

cobalt leaf
#

ill diddle around maybe

#

is lua the same thing as the roblox

#

LMAO

zealous glen
cobalt leaf
zealous glen
#

And I’d also recommend the Homestuck mod but it’s not out but

#

Hold on

cobalt leaf
zealous glen
#

Anyways the Homestuck mod allows you to level up ranks

#

Which is similar

cobalt leaf
#

ill check it for sure

zealous glen
tepid sky
zealous glen
#

Steamodded 1.0 isn’t officially out but most people use it

zealous glen
zealous glen
#

???

tepid sky
#

lua, the coding language?

#

nvm, i'll look at coding

#

later

#

once i get some actuall joker and things ready

zealous glen
#

If you have the game you don’t need anything else specific

tepid sky
#

wait fr?

#

huh cool

cobalt leaf
#

so like

#

notepad is a text editor

#

notepad++ is a name ive seen thrown around but that was years ago

tepid sky
#

hmm i'll look into it tmr

zealous glen
#

There’s also Sublime Text and VSCode

cobalt leaf
#

yeah i heard of those too

tepid sky
#

i'll look later

#

as i mentioned

#

i actually need the cards

stray warren
#

Or VSCodium if you don't want Microsoft snooping on you

tepid sky
#

and things already

zealous glen
#

I used Sublime Text for modding Balatro but recently I changed to VSCode

#

Personally I prefer to start with coding because: 1) it’s easier; and 2) if I change my mind I didn’t waste time on an asset

stray warren
tepid sky
zealous glen
# tepid sky i'll try vscode :)

SublimeText might be easier for a beginner. VSCode has a lot of features but, like, that might be a bit much to start with

tepid sky
#

its fine

zealous glen
#

Although the file search feature of SublimeText isn’t as good as other text editors

tepid sky
#

i'll push my self tru it somehow

#

for now i will go on with making jokers/abilities

cobalt leaf
#

so are there any like, tutorials?

tepid sky
#

i'll prob just copy paste some joker templates

#

and hope it works

cobalt leaf
#

so do most mods work by just editing the source code or what?

#

i could probably just LOOK at some

tepid sky
#

i'll just copy the code which adds a joker? change the values?

static juniper
#

I highly recommend extracting the Balatro source code to see how everything works

tepid sky
frosty dock
cobalt leaf
#

+8 mult if played hand contains a pair

stray warren
#

Lovely patches change the source code

cobalt leaf
#

yeah i just changed the name of some hands

#

which is cool

cobalt leaf
zealous glen
#

Oh yeah fish mod :D

#

I heard it was made by some handsomixeled giant golden baby

cobalt leaf
#

it's you...

cobalt leaf
zealous glen
unkempt ridge
#

Slapping a few things together to try and get file loading to work, to better differentiate stuff in our mod.
Error tho, and not sure what we're missing really

mellow sable
#

do you have a return statement at the end of your file?

tepid sky
unkempt ridge
#

Unless you mean a return statement on like, the main file?

mellow sable
#

for some reason the error is being caused by your file not returning anything

#

is there an error message in the lovely console?

unkempt ridge
#

slapped in a senddebugmessage and discovered this
Something's wrong with the g diffuser the main.lua?

cobalt leaf
#

and you can make a ton

#

for every hand

#

so it was easy

tepid sky
#

Lol nice

cobalt leaf
#

now time to rename jokers

cobalt leaf
#

does anyone know how id go about changing the name of already existing jokers?

cobalt leaf
#

is this not in G.localization.descriptions.Joker?

#

OHHHHH I GOT IT

#

YES

zealous glen
cobalt leaf
#

im under the impression that steammodded is for running mods

zealous glen
cobalt leaf
zealous glen
#

like your mods won’t get Thanos snapped if you update the game

#

And there are APIs that make doing stuff easier

cobalt leaf
#

sounds pretty good

#

so how do i access that

#

is it gonna be in the steammodded mod i alr have installed?

#

oh @zealous glen im not actually coding the mod in the source code if thats what you mean im just trying to find the stuff to replace text in there

zealous glen
#

Also if you have Fish that serves as an example, although I don’t think it’s updated to 1.0

cobalt leaf
#

no it works on 1.0

#

should at least

#

unless im in a gaslighting competition and the opponent is myself

cobalt leaf
#

"the source code of the fish" being a solid 1 line of code

unkempt ridge
#

Does anyone have a general 'file loading' guide we could follow?
Trying to figure out what to return, what to have in a different file, etc.

unkempt ridge
stray warren
#

Ok, so I've got this function that creates a custom context for when a Joker is destroyed. The problem is that it is in the start_dissolve function, so Jokers that don't use the dissolve animation will not call this custom context (Gros Michel, Ice Cream, Popcorn, etc...).

-- Add new context for destroying cards of any type (Used for Sacrificial Lamb)
local start_dissolve_ref = Card.start_dissolve
function Card:start_dissolve(dissolve_colours, silent, dissolve_time_fac, no_juice)
    if self.getting_sliced then
        for i=1, #G.jokers.cards do
            G.jokers.cards[i]:calculate_joker({destroying_cards = true, destroyed_card = self})
        end
    end

    start_dissolve_ref(self, dissolve_colours, silent, dissolve_time_fac, no_juice)
end

Another issue is that those Jokers do not count as getting_sliced, so I'm trying to figure out some way to register that action for those Jokers to call my custom context with calculate_joker. Any ideas on what I can do for this? Or a mod that implements a context like this?

#

I guess somehow a way to check in remove_from_deck that it isn't getting removed because it was sold

unkempt nebula
#

If I wanted to change how straights were calculated as a mod how would I overwrite the current straights function with steamodded?

cobalt leaf
#

hey anyone know what the problem is here? i have em in an assets folder. do they need to be named something specific?

#

heres what the folder looks like, theyre just in that assets folder

#

which i imagine is correct

tepid sky
cobalt leaf
#

nvm got it. add ur 1x and 2x everybody

tepid sky
#

1x and 2x?

cobalt leaf
#

every texture has to have a version of it in a different folder that's twice the size it seems

tepid sky
#

hmm

cobalt leaf
#

so for this spritesheet i had to upscale it

tepid sky
#

so you need it 2x but one is big

shell timber
#

yes, this is so it looks crisp at high resolutions

cobalt leaf
#

i have to move the text closer to the middle tho its kinda hanging off

shell timber
cobalt leaf
#

the bulk of my knowledge with lua has come from looking at other mods

opal spade
tepid sky
#

hmm nice

opal spade
#

instead of being rare im thinking of making it an uncommon with a condition to be in pool so it only appears when the deck is already small or something like that

tepid sky
tepid sky
#

jippy

#

its centered

#

just need to make it bigger :>

glass scaffold
#

how do I make a Joker's effect activate when a Booster Pack is opened?

wintry solar
glass scaffold
#

thanks

opal spade
#

i tried 1/3rd but it felt like too much

zealous glen
#

Maybe only in the collection

opal spade
#

its only in the collection, ye

crisp coral
#

mosb synergy pog

opal spade
#

just had a test run (changed the condition to be static 20 cards - so abandoned deck has easier time) and the buffed ult.magician (i changed it to be "sell any card" to swap) is really fun to play around

primal robin
#

Can I spawn voucher outside of game screen?

rain imp
#

Theoretically, yes, if you call the function without calling the UI

primal robin
#

My task: display voucher redeem animation properly on boss blind start

#

But with this code voucher spawns on top center of screen

tepid sky
#

i am still working on getting the logo to show and be in the correct placement

primal robin
tepid sky
#

i got help from in a coding discord :>'

stray warren
wintry solar
#

Hmmm, probably needs some targeted patches to add some sort of label to them in that case

tepid sky
#

@shell timber so uuh, i copied all your code, changed nothing but some picktures doesn't like to show (i've been trying for days doing little configurations), while inspecting the page i could only see j_joker while not being able to see the logo-bg

#

or sticker-bg

#

even tho github says it passed everything

#

do you know by any chance how to fix it? :)

shell timber
#

wait

#

have you been deleting and replacing the files every time you want to change the website???

#

huh????

tepid sky
#

not really

#

i haven't kinda replaced files at all

#

this is the img folder rn

#

i did take you logo background to test if it would work

#

but i did use my own logo

shell timber
#

okay

#

have you touched the html at all

tepid sky
#

rn, no

shell timber
#

well then that would be the reason

#

look. the template is meant to be a bare bones thing which handles the joker display and background. that is all. everything else you have to do yourself

tepid sky
#

hmm ok

#

sorry then

#

i'll try to inspect the page and try it that way

shell timber
#

inspect element does not save your changes you have to actually edit the html

#

look. before you try modding the game or doing anything i would recommend having a basic understanding of programming concepts

#

like. what is a string. what is variable. what is a function

#

if you try to start doing things without knowing what is what you will get lost immediately

tepid sky
#

but the problem rn

#

is that the logo-bg and logo-nobg aren't on the site? but they passed all the checks in github

shell timber
#

github doesn't actually check your code or anything. it just puts the files on the server. the reason they aren't on the page is because they aren't referenced in anything

tepid sky
#

i did put this in the html in the same place you have it
<div class="logostuff">
<img src="assets/logo-bg.png" class="logobg">
<img src="assets/logo-nobg.png" class="logo">
</div>

shell timber
#

okay. what i would recommend is setting up a local development environment so you dont have to keep reuploading your files to github every single time you want to see if your changes went through

tepid sky
#

hmm ok, got any tips for that?

shell timber
#

apparently you already have a live server config file. use live server. it is probably good for this

#

look. what i would recommend is actually learning what you are doing instead of copy pasting magic words. go look up a guide for how to learn what html is, what css is, what anything is

tepid sky
#

ok

cobalt leaf
#

how do i make this use the 2x version?

#

so it doesnt do this

shell timber
#

is the 2x version twice as large as the 1x version?

cobalt leaf
#

yeah

#

wait my exort is wrong

#

why didnt it 2x?!

#

WELL I GOT IT WORKING

#

LMAO

#

now its just gone

#

this is gonna be fun

shell timber
#

whereas if you only learn the magic words that do things you're stuck in one environment

brisk pond
#

guys where are the hand_chips and mult variables stored?

cobalt leaf
#

for jokers?

i think its on game_lua line 368

wintry solar
#

I don’t remember what they’re named exactly, but check out evaluate_play in functions/state_events.lua

#

They might just be hand_chips and mult tbh

rough furnace
#

Gm "developers" I kinda feel like some DebugPlus stuff, what should I do?

stray warren
wintry solar
#

I believe that would work, yes

stray warren
#

Cool. Now I've just got to learn how to do lovely patches

languid mirage
#

I don't think card:getting_sliced = true is valid lua balatrojoker

frosty dock
#

me when I card:getting_sliced() == true

rough furnace
#

has anyone else been getting lag when anywhere with a bunch of cards (like the blind select screen with the deck)?

#

I've been trying to figure out what's causing it and I am at the point where I have no mods and its still happening

#

ok wait the mod I was using to measure peformance was casusing lag

#

this gets a bit harder than

#

ok but something was causing lag

#

I guess it'll remain a mystery

stray warren
languid mirage
rough furnace
#

true, but even for DebugPlus I just added a super simple skeliton mod to add config and the toggle

languid mirage
#

oh yeah

rough furnace
#

maybe it would be good to make a lovely mod to add config pages to the settings like the spectral pack one that cryptid/tailsman does

languid mirage
#

ye that's what I was thinking

#

because right now

#

every non steamodded mod needs nativefs dependency

#

and then also separate config file and somehow fitting settings menu somewhere

rough furnace
#

I don't

languid mirage
#

I mean mods with configs

rough furnace
#

can't you use love.filesystem?

#

it's in the games config dir

#

also I'm working on a config

languid mirage
#

maybe, I kinda assumed it's harder to utilize as steamodded and some other mods mostly use nativefs for configs

rough furnace
#

I think you can just pass the function to render the config ui and do config yourself

languid mirage
#

would be much easier if you didnt have to do configs and localization yourself

frosty dock
#

ugh are we at the point now where steamodded is too universal with mods wanting its functionality without depending on it?

tepid sky
#

i think i should just quit while i am ahead šŸ’€

rough furnace
mellow sable
#

and no I'm not switching any of my lovely mods to steamodded unless they need them

rough furnace
#

yeah but also I've been kinda adding a little support

regal wolf
#

My philosophy currently is where at all possible, try to make it compatable for both steamodded and non steamodded.

languid mirage
#

well if mod has config file and settings, might as well use steamodded 😭 but I get the idea

regal wolf
#

well, not really.

languid mirage
#

yes really

regal wolf
#

It's another dependency.

languid mirage
#

you're just adding something that is already implemented in steamodded

#

for configs

#

that's why I didn't feel like adding settings menu for vanilla in cartomancer

regal wolf
#

thats great

languid mirage
#

it's just too much effort

regal wolf
#

each to our own

rough furnace
#

I've only messed with it a bit but I don't think its much work to render the settings ui in the settings panel if SMODS is absent, otherweise in my SMODS config page

regal wolf
#

have you got anywhere with it?

rough furnace
#

I haven't actually looked at how the game renders a settings tab

#

but I got SMODS to render a ui I told it to and me handle the config writing (I don't actually save it rn)

regal wolf
#

I mean more so with checking if SMODS is present or not.

rough furnace
#

oh just if SMODS then end

regal wolf
#

Yes but I mean more specifically something like

#

Mod = SMODS.current_mod

#

Except if you're injecting in as well, because it has to be compatable without steamodded

rough furnace
#

make a file for steamodded to load and then call a global function/ module to tell the rest of your lovely stuff smods is there

regal wolf
#

then it could be loaded first, before steamodded due to lovely, and it would say that steamodded is not present.

rough furnace
#

although my dev branch may use smods stuff for convience I haven't checked if it works without

#

but before its prompoted to master I will make srue everything works

#

rn I just don't have a config without smods

#

but Imma work on that

#

smods is loaded super early

#

like before the title screen which is where 90% of your code will run

languid mirage
rough furnace
#

not in my case

#

config is optional you can still get the config tab without steamodded handling your config

#

actually let me see if I can get cryptid to do it's config in it's mod tab real quick

regal wolf
rough furnace
#

I use a module

regal wolf
#
function G.FUNCS.DP_config_callback(args)
    print(require('debugplus-util').stringifyTable(args))
end
rough furnace
#

well in this case I assing to a global varibler cause I dont' acutally save config yet

regal wolf
#

this?

rough furnace
#

_RELEASE_MODE

#

cause thats about all mine does

#

but it would just be call your func instead of doign it yourself

rough furnace
#

it's very early WIP

rough furnace
#

uhh the version I have doesn't

#

but it adds to the settings page

frosty dock
#

the spectral pack setting persists but just links to the smods config tab iirc

rough furnace
#

let me update this

#

oh cryptid does have it now

#

tailsman doesn't

#

let me see if I can get it working there than

#

as it works without stemaodded

#

wait this seems to have smods also save its conifg