#💻・modding-dev

1 messages · Page 101 of 1

rough furnace
#

I know how to regenerate the entire blind thing

autumn coral
#

oh

rough furnace
#

But it's not pretty

autumn coral
#

fr?

#

sighs

#

whatever

rough furnace
#

Well I was using it to change blinds

autumn coral
#

that makes sense

#

i'm using it to reroll tags

rough furnace
autumn coral
#

hol yp

#

up*

#

LMFAO???

#

that was NOT what i expected

#

ok

#

yeah i can fuck with this

rough furnace
#

This is nadicslly the entirety of reroll blind code

autumn coral
#

hey wait

#
if _element and _element.config and _element.config.tag then
        local _tag = _element.config.tag
        if key == "2" then
            G.P_TAGS[_tag.key].unlocked = true
            G.P_TAGS[_tag.key].discovered = true
            G.P_TAGS[_tag.key].alerted = true
            _tag.hide_ability = false
            set_discover_tallies()
            G:save_progress()
            _element:set_sprite_pos(_tag.pos)
        end
        if key == "3" then
            if G.STAGE == G.STAGES.RUN then
                add_tag(Tag(_tag.key, false, 'Big'))
            end
        end
    end
``` is this not like
#

exactly what i'm tryin gto do on the last part

#

if i just changed it to G.STATE == G.STATES.BLIND_SELECT

rough furnace
#

No that just gives you the tag as if you skipped the blond for it

autumn coral
#

oh

#

oop

#

alr

#

ok let's see if it works

#

@rough furnace not sure why this wouldn't work, any thoughts?

local par_small = G.blind_select_opts.small.parent
    local par_big = G.blind_select_opts.big.parent
    
    G.blind_select_opts.big:remove()
    G.blind_select_opts.big = create_UIBox_blind_tag('Big', true)
    par_big.config.object = G.blind_select_opts.big

    G.blind_select_opts.small:remove()
    G.blind_select_opts.small = create_UIBox_blind_tag('Small', true)
    par_small.config.object = G.blind_select_opts.small
    G.blind_select_opts.small.parent = par_small
#

do i actually have to 1:1 write out the ui programming for each tag or can I just do it the way the game handles it

rough furnace
#

¯_(ツ)_/¯

#

You might be able to hijack the get next tag function and tell the game to regenerate the first 2 blinds

autumn coral
#

🤷‍♀️

#

how does it refresh the tags once you complete a blind?

rough furnace
#

¯_(ツ)_/¯

autumn coral
#

alr

#

guess i gotta find out

#

LOL

rough furnace
#

Probably magic

autumn coral
#

💀

#

wait i think i'm editing the wrong thing

#

either that or um

thick panther
#

What do you think would be a good pro to give to a deck that starts with a eternal joker like this?

Wrath Joker Adds/Subtracts mult or chips each played hand in the range of -20 to +20. Doesnt go below 0 chips or 1 mult
autumn coral
#

@rough furnace ```lua
G.blind_select = UIBox{
definition = create_UIBox_blind_select(),
config = {align="bmi", offset = {x=0,y=G.ROOM.T.y + 29},major = G.hand, bond = 'Weak'}
}
G.blind_select.alignment.offset.y = 0.8-(G.hand.T.y - G.jokers.T.y) + G.blind_select.T.h
G.blind_select.alignment.offset.x = 0

#

this does it

#

i went digging for what these functions connected to and found in game.lua where it uses it

#

so uh if anyone asks for some reason how to regenerate the blind select ui

#

this is how

hardy viper
thick panther
hardy viper
thick panther
#

oh wait youre right

hardy viper
thick panther
#

If I wanted to subtract chips, would I just return a negative number to chip_mod?

fallen tendon
#

its always so funny whenever i forget to put return true at the end of an event

hardy viper
#

god i hate event manager

autumn coral
#

how do i initialize all joker config values on r key because for whatever reason it isn't doing that already

#

scratch that it is literally whenever a new run starts

#

bruh

#

hm

#

ok wait nvm

hardy viper
#

you can't get a jokers center without it's config so

autumn coral
#

nevermind i fixed it

cinder elk
#

i wonder; how easy is it to mod this game

autumn coral
#

depends on what you're doing

#

just don't do what i'm doing and it'll be fine 👍

balmy stump
#

what are you doign rn

thick panther
#

Anyone know why my math.random isnt working right? I have a max set in the config to 20, but it able to go above that, to stuff like 24.

local amount = math.random(hand_chips - 1, card.ability.extra.aMax)
autumn coral
#

(i am in hell)

balmy stump
#

im trying to create a tab in a specific area of the game and i have no idea how to specify that area

autumn coral
#

i have no idea how to help i'm sorry

#

😭

wintry solar
gilded narwhal
#

Tattered Ghost Deck effect: adds a modifier based on a spectral card to all blinds. Beating the blind grants that spectral.

red flower
#

hi a bit late but I think this won't work because jokers that are not vanilla are not loaded yet when jokerdisplay loads those values
I'd recommend using a fixed color or using style_function to change it instead

autumn coral
#

god.

thick panther
#

Is this range too big?

violet void
young dew
#

where can i get the total score of the played hand?

balmy stump
#

does the steamodded ui guide give any info on how to insert a button into a already existing uibox, or does it just tell you how to make ui boxes because ive been looking through it multiple times and i cant find anything that is useful to me rn

balmy stump
# thick panther Is this range too big?

so, there is a 1/8 chance that wrath will give you +10-20 Mult, and a 7/8 chance that its effect will be essentially negligible to damaging, if anything the range should be higher since its a worse version of misprint (For reference misprints range is 0-23)

thick panther
wintry solar
#

the guide does not explain this, you just have to look at examples in the game files and work it out

autumn coral
#

how do i make it so my rarity can't show up in a shop if it's in hand already (for some reason it's doing this???)

red flower
split creek
#

Is there any way to change the rarity of consumables in packs?

#

i.e. to have a consumable set with different internal rarities

fallen tendon
#

should i remake this art from the original ro-balatro or is it fine as is?

thick panther
#

Does G.hand.highlighted still contain the cards you have selected when you play your poker hand and the game reaches context.joker_main?

wintry solar
#

I don't believe so

thick panther
#

Okay, which one would be the played poker hand?

wintry solar
#

context.scoring_hand is the scored cards, context.full_hand is all played cards, G.play.cards is all played cards

autumn coral
#

weird bug i just got not sure why

thick panther
#

Is there a way to poll all jokers in the game? (Can be just vanilla jokers, but modded would be good too)

autumn coral
#

oh wait

#

dude i totally just figured it out

wooden nexus
#

Get beaned

#

I hope that isn't a bad thing to say

#

lol

frosty dock
#

get 🫘ed

wooden nexus
#

But yeah, this is part of my unbalanced mod

frosty dock
#

i should fix enhancement names looking like this

wooden nexus
#

Aka the "Crimson's learning everything" mod

#

Make it so that we can pick the color

#

pls

balmy stump
thick panther
wooden nexus
#

This is me learning to do whatever

balmy stump
#

might as well just give yourself the entire deck as your hand size

wooden nexus
#

never said Shinku's cards are balanced

violet void
# red flower If you do it inside the style_function the center is "card". So instead of setti...

It actually works now 🤔
No crash or anything, weird

I kept it like this


jd_def["j_my_enamored_joker"] = {
    text = {
        { text = "+" },
        { ref_table = "card.joker_display_values", ref_value = "mult", retrigger_type = "mult" }
    },
    text_config = { colour = G.C.MULT },
    reminder_text = {
        { text = "(" },
        {
            ref_table = "card.joker_display_values",
            ref_value = "localized_text",
            colour = lighten(loc_colour(G.P_CENTERS["j_lusty_joker"].config.extra.suit:lower()), 0.35)
        },
        { text = ")", colour = G.C.UI.TEXT_INACTIVE },
    },
    calc_function = function(card)
        local mult = 0
        local text, _, scoring_hand = JokerDisplay.evaluate_hand()
        if text ~= 'Unknown' then
            for _, scoring_card in pairs(scoring_hand) do
                if scoring_card:is_suit(card.ability.extra.suit) then
                    mult = mult +
                        card.ability.extra.s_mult *
                        JokerDisplay.calculate_card_triggers(scoring_card, scoring_hand)
                end
            end
        end
        card.joker_display_values.mult = mult
        card.joker_display_values.localized_text = localize(card.ability.extra.suit, 'suits_plural')
    end
}```
wintry solar
wooden nexus
#

oh

thick panther
#

Does card:get_id() work on jokers?

frosty dock
wintry solar
#

oh true

#

wait no

#

it already doesnt appear for replace_base_card cases

autumn coral
#

note to everyone in chat: having a function in config.extra will crash the game

frosty dock
#

isn't it supposed to?

autumn coral
#

no clue but i found out the hard way

wintry solar
autumn coral
#

god

#

ok my shit's finally done

edgy reef
autumn coral
#

i'm done for the day idc

frosty dock
#

card config values need to be serializable

autumn coral
#

yeah i see that

frosty dock
#

or generally anything the game tries to save

frosty dock
balmy stump
#

how does the game determine what the next playing card swill be

#

where in the sc

#

the next card drawn to hand from your deck

autumn coral
#

Ow my head 😭😭😭

frosty dock
#

also is it just me or does holding m to restart just not work anymore

thick panther
#

Does G.jokers house all jokers in the game? Would pseudorandom_element be able to get a random joker out of it?

frosty dock
#

pseudorandom_element on G.jokers.cards would give you a random joker that you own

thick panther
#

I need to get a random joker to spawn at start of a run

frosty dock
#

using SMODS.create_card is preferable to vanilla create_card for cleaner syntax

#

or can you tell me what that second nil is doing without looking it up?

wintry solar
#

but I have also modified my key to [ now and it works

frosty dock
#

oh i never took a closer look at that

#

SMODS.Center:take_ownership() seems bad because it's more of an abstract parent class to different types of centers

#

but c_base isn't any particular type of center

#

it's a special type of center technically

edgy reef
#

It doesn't even have anything iirc

#

it's just the white part of cards

frosty dock
#

it has the set 'Default' which is used to special case it in certain places including generate_card_ui, making it an SMODS.Center type object can break its control flow

#

at least that's what I assume would happen if there were no atlas issues

tidal ice
frosty dock
#

yeah base cards aren't right then, you'd be excluding all enhanced cards

thick panther
edgy reef
#

Playing cards are the one thing I've avoided trying to comprehend due to local thunk spaghetti nonsense.

#

Best start would be telling us what you're trying to do (in case you don't even need to use take_ownership).

frosty dock
#

I just tried to get around it by embedding the tooltip into the playing_card loc entry, but it doesn't work unfortunately

#

the only way I see then is to lovely patch into generate_card_ui, which is not great

#

cards can only have one center

#

actual playing card info isn't even part of any center, they're their own thing

#

centers and cards aren't the same thing

split creek
#
    if v.key == 'm_stone' then
        return v
    end
end```this feels... suboptimal (trying to get the stone enhancement for create_playing_card)
frosty dock
#

it does go in a Card object's base table, but that's not part of what a center controls of a card

frosty dock
edgy reef
#

Looking at suit and rank implementation I don't see anything that would suggest that adding a tooltip onto a card of X rank or suit is doable (at least directly).

#

With the power of lovely injection this is easy to solve but I'm still wondering if you can get away with not doing that.

frosty dock
#

it's probably best solved with steamodded providing an API function on suits and ranks for tooltips (a pseudo loc_vars function i guess)

edgy reef
#

Center info doesn't add anything other than specific info tied to playing card, no other properties (such as loc_vars)

frosty dock
#

we're not reliant on center info as we're always passing the card

#

this has lots of potential for patch conflicts if multiple mods need it

#

it should probably still just be <Suit|Rank>.loc_vars(self, info_queue, card) but toss the return value

fallen tendon
#

how do i stop these particles from always showing up on my cards in booster packs?

#

in normal packs they only do 1 explosion when its opened

#

also i cant really show this in a photo

#

but when the pack is opened you can see them move to their positions from somewhere in the top right corner

frosty dock
#

🪲 ?

#

yep got this working

fallen tendon
#

is there anything wrong?

edgy reef
#

I wonder is this thought can be extended to more than just adding tooltips

fallen tendon
edgy reef
#

SMODS.Suit and SMODS.Rank is designed for basic cards which is typically fine but for making them "special" in some regard requires more work than it probably should.

fallen tendon
#

cuz idk why the particles on the card physically will not go away

frosty dock
#

no clue

fallen tendon
#

what could be happpening?

#

could it be that keep on use is on?

frosty dock
#

still working on it to see if I can get it fully featured

fallen tendon
#

no it is not keep_on_use

frosty dock
#

tho there's a split path between enhanced and base cards that I'd have to work around

#

thinking I'll just leave it as it is for now, having suits or ranks change descriptions might not work that well with all the other moving parts

#

like you might have an enhancement that gets rid of your base chips but still keeps your suit unlike stone cards

#

in which case the suit and enhancement would conflict when trying to replace the description

#

yep

frosty dock
#

you just shove a loc_vars function in your suit/rank definition

#
SMODS.Suit {
  ...,
  ...,
  loc_vars = function(self, info_queue, card)
    info_queue[#info_queue+1] = ...
  end,
}
#

yeah card is the playing card as a Card

#

that's a lot of cards in one sentence

#

the tooltips are in a format where you can directly shove a center into it and it'll happily pass it through generate_card_ui to find the correct localization for it

#

(this will also call loc_vars on that center if it has one)

#

all it needs is a set and a key and it'll try to take the localization entry from G.localization.descriptions[set][key]

#

as well as any additional variables if they're needed

#

(there's some issues if you try to tooltip a vanilla joker because it won't be able to find the variables, so you'd need to pass them yourself)

#

usually for extra descriptions that don't inherently belong to an object, you want the description to go in the Other set

exotic hedge
#

What's ur guys' opinions on this joker? the sprite on it's own

frosty dock
#

i like it, looks kind of like an alternate blueprint

exotic hedge
#

Indded it kinda is

#

what do yall think of this one, too?

frosty dock
#

reminds me of code joker

tidal ice
#

you may have forgotten a bit of subpixeling on the lips, but it looks neat

exotic hedge
#

Do they feel vanilla?

#

that's my main concern

mellow sable
#

This one uses pitch black right?

#

Pitch black doesn’t really feel vanilla

mellow sable
#

It could maybe work better with the vanilla palette

#

besides that I’m probably gonna be biased because there’s a Cryptid joker with similar design

exotic hedge
#

That did NOT work 🙏 😭

mellow sable
#

Yeah

mellow sable
frosty dock
#

yeah, with the second one in the correct place within descriptions.Other, of course

gritty valley
#

Ya love to see it

elder vapor
#

i'm surprised nobody had made a balatro palette image with every single color used in the base game

stiff locust
#

they have done that

elder vapor
#

unless i'm blind

stiff locust
#

you are small blind

elder vapor
#

oh so i am

#

thats neat

frosty dock
#

yep, can i see?

willow quiver
wooden nexus
willow quiver
#

problem is the cards don't actually have a consistent palette

frosty dock
#

the loc_vars and the localization file

autumn coral
#

anyone who's actually good at. pixel art want to help with jimbo or do i need to keep making dogshit 😭

#

i'm trying an

#

man*

#

i hate this so much though that i'm like about to delete it

#

:(((

thick panther
#

What exactly is G.GAME.probabilities.normal/self.ability.extra doing? I get the G.GAME.probabilities.normal part, but whats the /self.ability.extra part for?

frosty dock
#

the localization file should go in localization/en-us.lua relative to your mod

#

yup

crisp coral
fallen tendon
#

i was calling SMODS.create card

#

but i never specified a ton of things

#

like the literal area

#

which made the cards very jank

frosty dock
#

oh that makes sense

#

nvm I wasn't paying attention

#

the loc file isn't set up right

#

needs to be { descriptions = { Other = { ... } } }

fallen tendon
#

what is the base game weighting for spectral packs?

fallen tendon
#

or are they simply rarer by virtue of there being less versions of them

wooden nexus
#

Stars?

edgy reef
#

You can find this in the declaration of booster packs in Game:init_item_prototypes

frosty dock
#

xd it's not the first star suit we have

#

suits were actually the first thing I dabbled with in modding this game when it first released, that sure was something

#

smeared still has some problems with modded suits because we've just kind of collectively ignored it, but that's the tip of the iceberg

edgy reef
#

Lovely wasn't introduced until later so imagine having to hook every function to make them work.

thick panther
#

Any of you like to spin the wheel with the Wheel or Fortune tarot cards? Heres a joker like that. Are the benefits it gives too much or are they just right? (Its a 1/4, but i have a Oops! All 6 joker)

frosty dock
#

this is what it looked like

#

needless to say that was completely unmaintainable and has seen at least 3 full refactors to get to the current state of the API

elder vapor
#

#1#

#

you can use loc_vars and return a table as { vars = {} } and in the description have variables as #1#, #2#, and so on

frosty dock
#

change the text to be like #1# in #2# and #1# in #3# chance, then add the variables as vars (i think? might be specific_vars) to the info_queue table

#

lemme check the impl on that

#

it's specific_vars, i don't remember why

#

so like

#
info_queue[#info_queue+1] = {
  set = 'Other',
  key = 'stars_jack',
  specific_vars = { G.GAME.probabilities.normal, 10, 5 }
}

or wherever you're storing these as config values instead of hardcoding them

edgy reef
#

Can you add them into the card?

frosty dock
#

that's fine, you don't really want to store it on the front

elder vapor
#

are there any existing mods that add a new page in the shop menu? had a mod idea but it needs a new UI to work

wooden nexus
#

have fun

frosty dock
#

:eyes:

thick panther
wooden nexus
#

That's an enhancement

#

Btw I make my art in paintdotnet and aseprite

thick panther
frosty dock
#

me when deck skins

edgy reef
frosty dock
#

yeah for sure

#

of course you wouldn't, the whole suit API thing exists because of me

#

xd

cinder elk
#

wait there's a mod that acts like "what mod is this from?" awesome

frosty dock
#

it's just steamodded doing this

cinder elk
#

that's so cool.

frosty dock
#

ty

gritty valley
#

I need this on a t-shirt

frosty dock
#

lmao

autumn coral
gritty valley
frosty dock
#

there was no bug

autumn coral
#

the bug is the friends we made along the way

gritty valley
#

We were talking about it here when aure closed it

wintry solar
#

Aure fixed the bug with his no

gritty valley
#

So true

frosty dock
#

anyhow it's getting late

#

maybe we get some more progress in on docs tmrw

#

when all is documented, we should be more than ready for beta

#

for still missing we have

  • Sticker
  • Seal
  • Challenge
  • DeckSkin
  • something for per-mod functions
#

I'm sure I missed something, feel free to spam ping the hell out of me or something idk

#

(one ping's enough, i check them all)

edgy reef
#

That reminds me I need to revisit the SMODS beta suggestions doc I made for documenting stuff to add.

autumn coral
#

should i add pills like isaac

#

like a whole new consumable system with seeded values for what they do and then also phd

#

why is it every time i think of something for my mod it's "should i do something that will cost 2 fucking painkillers for my head"

frosty dock
#

that one?

edgy reef
#

Yup

frosty dock
#

oh right achievements also lack docs

#

or did you make these too and i just forgot about adding them?

tepid crow
#
  • Art for Pinned (LocalThunk please make Pinned sprite)
    was there actually a decision made on whether this should be done by steamodded or not?
frosty dock
#

k added

edgy reef
#

I remember it being brought up at some point (the possibility of using Cryptid's art as temp)

frosty dock
#

yeah i remember that too

wooden nexus
#

I can't figure out how to get joker to recognize custom hand

tepid crow
frosty dock
tepid crow
#

"I can't"? do we need steamo?

edgy reef
#

Not sure on discussion since idk what it is but Github Projects would be fire.

wooden nexus
#

My prefix is SCB btw

thick panther
wooden nexus
#

Problem is that i don't want ERROR, i want it to be the hand

frosty dock
#

projects I might be able to add, but discussions needs to be enabled by the repo owner

tepid crow
# wooden nexus

you might need an entry in the localization file to be able to localize it?

wooden nexus
#

what if i have it localized in loc_txt already

tepid crow
#

that doesn't sound like a localization file to me

frosty dock
#

localize('prefix_test', 'poker_hands')?

wooden nexus
#

ugh, i'll just put the loc_txt stuff in the localization ig

#

oh wait

frosty dock
#

loc_txt vs loc file doesn't matter here

wooden nexus
#

card.ability.type, duh

#

that could work

#

ok this worked

#

now i gotta test if the joker works with hand

tepid crow
frosty dock
#

all loc_txt does

tepid crow
#

Huh. Guess I never tried.

#

mb

exotic hedge
wooden nexus
#

name is not final obviously

#

Should i put my prefix in?

#

oh it works

balmy stump
wooden nexus
balmy stump
#

where does the game shuffle cards using pseudorandom?

hardy viper
wooden nexus
#

Okay, now that stuff is working, no more previews on that

orchid thunder
#

WHY

hardy viper
#

what in gods name am i looking at

exotic hedge
orchid thunder
#

A UI

orchid thunder
hardy viper
#

no clue

#

dunno what the issue is

cinder elk
#

if i were to get into modding i'd probably have too many ideas and i'd make multiple mods

arctic lion
cinder elk
#

ah.

arctic lion
#

balatro is so simple that less is more most of the time

#

very few people want to play with a joker that comes with an essay of a description

autumn coral
#

but even then

#

even with the overengineering

#

i still make them easy to understand

#

...

#

somehow

arctic lion
#

worst one is when you implement something that sounds cool in your head and you play it and you go "god damn it this is boring"

autumn coral
#

hasn't happened to me yet

arctic lion
#

maybe i've just got some really stupid ideas rattling about in here lol

autumn coral
#

me whjen i remember. remember this is official isaac balatro art that i can totally use as a base for a joker

autumn coral
#

polyphemus?

rigid pebble
# cinder elk if i were to get into modding i'd probably have too many ideas and i'd make mult...

If you want to have your ideas in a mod then suggest stuff in the Cryptid Suggestions Log https://docs.google.com/document/d/1AyXwy49X0XaJxidAGO_KCeTgURd-caMN_454BSYMxMQ/edit?pli=1&tab=t.8qjnysvpwzj2 - totaly not sponsored

exotic hedge
#

gang does this look like a dumpster i dont even know 😭

autumn coral
#

surprisingly not ass i just need to finish the idea i had for this one

#

the polyphemus one i mean

#

i was basing the cards on the four souls cards lol

orchid thunder
#

WHY NO WORK

balmy stump
orchid thunder
balmy stump
#

like a second area just for the explanation?

orchid thunder
#

like the tooltip

balmy stump
#

oh to show whats required to craft it

orchid thunder
#

yeash

autumn coral
#

GGGGG FUELLLLLLLLL

wooden nexus
balmy stump
# orchid thunder yeash

i dont know enough about this specific topic to give you a proper answer but i found a mod that does something similar enough to what your trying to do right now to help you. https://github.com/GauntletGames-2086/D6-Jokers/blob/main/D6 Joker Mod File.lua the code is on line 55

GitHub

A Balatro mod that adds a new kind of joker, embracing the best thing in the world: GAMBLING - GauntletGames-2086/D6-Jokers

#

from what i see the main immediate difference between that code and yours is that you are returning the tooltip from inside the locvar while this one doesnt.

edgy reef
#

Bigger issue is that Crafts do not have loc_vars as a usable function.

#

So unless there was code added that hasn't been pushed to main the loc_vars function inside the craft will never be called in the first place.

stiff locust
#

when colors are used in the name of a joker and that joker gives cashout money the name that appears in cashout summary includes the color declaration (this thing{C:RED} idk what it's actually called)
is there any way to remove the color declaration from the cashout return message while keeping the color in the joker name

edgy reef
#

That's due to them not using the localize function iirc

stiff locust
#

oh

#

i guess i should do localisation

#

alright how do I do localisation in a separate lua file

#

ive put this off long enough

mystic river
#

this is crashing with attempt to index field 'other_card' (a nil value) instead of destroying 1 in 7 non-7s
i'm guessing i'm acquiring the id incorrectly? looking at sixth sense and trading card got me this far but neither of them do exactly what i'm trying to do...

        if context.destroying_card and context.other_card:get_id() ~= 7 and pseudorandom('eaten') < G.GAME.probabilities.normal/card.ability.extra.odds then
            return {
                message = "Drowned!",
                colour = G.C.RED,
                delay = 0.45, 
                remove = true,
                card = card
            }
        end
crisp coral
#

remove all of your other mods, add either dump_loc = true to your json or ---DUMP_LOCALIZATION to your header

#

a localization file will be generated, rename it to default.lua or en-us.lua

stiff locust
#

uhh

#

my mod has a dependency if i remove that it won't load

crisp coral
#

remove the dep

#

well if the dep isn't a content mod then you can keep it

stiff locust
#

it's fusionjokers so it has

#

some content

crisp coral
#

uhhhh

stiff locust
#

if i remove the dependency marker the mod will crash on boot because i directly access a table made by fusionjokers

crisp coral
#

you can probably manually remove the fusion stuff from the dump

stiff locust
#

yeah that should be easy enough

#

it's only like 15 jokers anyhow

exotic hedge
stiff locust
thorny adder
#

Morning chat

thorny adder
wooden nexus
stiff locust
#

but if you're destroying a card i'd recommend doing it either before or after the hand is played because if you destroy it during the hand it looks kinda jank

#

in which case you can do for index,value in ipairs(G.play.cards) do
and value will be the variable that you use to refer to the card in this case

mystic river
#

right, after the hand makes most sense
my previous efforts failed to destroy the card at all, so i'm not sure i actually know how to do that part

nocturne garnet
wooden nexus
#

Well it's kinda working

arctic lion
#

bSZiHP

wooden nexus
#

I of course need to get something working

#

It'll change every time when you hover

stiff locust
#

i mean i've used the function before but idk how to do it with a joker name

wooden nexus
#

eh, colors aren't needed

crisp coral
stiff locust
#

i did that indeed and it missed one joker but i fixed it

#

everything works as before but now with separate localization that's nice

#

maybe i should do jokerdisplay too while i'm here

wooden nexus
#

Should i make the randomization of letters longer than 6 characters long or nah?

#

also maybe i should figure out what's wrong

stiff locust
#

you set an entire table as a loc_vars value so it won't print properly

wooden nexus
#

so i should should just randomize the letters individually like i had before

stiff locust
#

whatever method works for you

#

if you wanna print an entire table though

#

balatro has a tprint function

#

print(tprint(tablename)) iirc

wooden nexus
#

so with this...

#

local ChosenLetters = {}
for i = 1, 7 do
ChosenLetters[i] = pseudorandom_element(LetterChoice, pseudoseed('TarotNotFound'))
end

#

tablename is ChosenLetters?

stiff locust
#

i think you need to concatenate the table manually for this

#

is that the right word? whatever that funny word is

#

add together the strings

wooden nexus
#

uh... not the print i want

stiff locust
#

in python you can do that super easily by just adding string variables like you'd add integers "string1" + "string2" for example

#

idk if it's that easy in lua

#

okay the string concatenation operator is .. so

#

value = table[1] .. table[2] .. table[3] .. table[4]
something like this

#

should work

wooden nexus
#

table.concat

#

I did a little research

#

table.concat(ChosenLetters, "") should do the trick

stiff locust
#

yeah that sounds close enough

wooden nexus
stiff locust
#

that looks

correct?

gaunt thistle
#

gyBzsYo

wooden nexus
#

yup

stiff locust
#

alright nice

gaunt thistle
#

why are you always so talented

wooden nexus
#

and I can change it to however long i want

gaunt thistle
#

your stuff is gas lmao

wooden nexus
#

me?

gaunt thistle
#

yes

wooden nexus
#

idk

#

I get a lot of help from you all tbh

#

Trust me, if I did Ortalab as my solo project, we wouldn't even be close to Demo 1

gaunt thistle
#

well I'm excited to see what comes of this

#

fair fair, it's the same with lovely

wooden nexus
#

NGL, biggest mistake of my life was not using Lovely earlier for stuff

gaunt thistle
#

not a big deal :-)

wooden nexus
#

Just realized I'm using 7 characters, probably should bump that up to at least 8

crisp coral
#

ugh what the fuck why aren't the challenges challenging

wooden nexus
mystic river
#

this functions mostly as intended, but the cards get destroyed before scoring animations play? does context.after not mean what i think it means

        if context.after then 
            for index,thecard in ipairs(G.play.cards) do
                if thecard:get_id() ~= 7 and pseudorandom('eaten') < G.GAME.probabilities.normal/card.ability.extra.odds then
                    thecard:start_dissolve()
                    return {
                        message = localize('k_drowned_ex'),
                        colour = G.C.RED,
                    }
                end
            end
        end
#

... and the message is in the wrong place too lol

#

i think i just want card=card for that one

stiff locust
#

couldnt tell you

#

context.after is indeed after the hand is scored but

#

yeah ive had no luck destroying cards

#

the one time I tried to make a joker selectively destroy cards in hand it just

mystic river
#

the fun part is the card still scores even though it's not there anymore, lel

stiff locust
#

destroyed every card

#

yeah that's what i was talking abt when i said it looks jank

crisp coral
#

quick rundown on destroying cards
if you use context.before, joker_main, or after, it will create a ghost copy of the card

stiff locust
#

oh

mystic river
#

oh, yeah, i see that now

#

so, not there

crisp coral
#

and your return should just be true

stiff locust
#

what

crisp coral
#

taken from my code,

if context.destroying_card and not context.blueprint and not context.destroying_card.ability.eternal then
    return true
end
#

(which destroys every non-eternal cards)

stiff locust
#

ooohhhhhhhh

#

when does context.destroying_card trigger

wooden nexus
#

wtf, how did i get a SOUL before the tarot card i made?

crisp coral
#

it destroys after hand is scored

mystic river
#

according to steamodded's joker calculation guide, after deck effects and before context.after

wooden nexus
crisp coral
#

oop

stiff locust
mystic river
#
  1. Card Destruction Stage
    Self-explanatory.
    i guess!
stiff locust
#

just getting godlike luck

#

when testing for stuff

#

I got a black hole and soul in the same pack when testing my spectral

crisp coral
#

i'm so fucking confused why this patch removes challenge names

wooden nexus
#

Soul: 2 (Perkeo, Chicot)
Error Tarot: 1

stiff locust
#

moment

wooden nexus
stiff locust
#

it looks

#

very out of place

wooden nexus
wooden nexus
#

that's intentional

stiff locust
#

mmmmmm not a fan

wooden nexus
#

👍

#

Good to know

#

Supposed to be out of place because it's not supposed to exist

stiff locust
#

it could use an animated sprite that cycles through the sprites of other tarot cards (excluding top and bottom borders)

wooden nexus
#

nah, i don't wanna animate it

stiff locust
#

well damn

wooden nexus
#

imo, an animated sprite is out of place outside of blinds

#

or other items that use it

stiff locust
#

but you just said it's supposed to be out of place

wooden nexus
#

yes, i know

stiff locust
#

and if it's not supposed to exist it makes "lore-wise" sense it'd use parts of sprites from other tarot cards

wooden nexus
#

I got an idea, don't worry

wooden nexus
#

I'm gonna do something random

#

and by that i mean, grab all the pixels from the inside sprite of the tarots and randomize them

stiff locust
#

oooh

wooden nexus
#

sure, it'll be a jumbled up mess but eh, it makes sense

#

or i can do a 4 color channel of random pixels and then assign a color to each

karmic kelp
#

make the card 3 tarot cards at once sounds fun
or even do something fancier since I have no idea what you mean by that 4th color channel

mystic river
mystic river
wooden nexus
#

There we are

mystic river
#

that's much more like it

wooden nexus
#

I basically pulled a pokemon

#

how they assigned 4 colors of white, light gray, dark gray, and black using two sets of black and white then assigned the four states a color

#

yeah i did that with some random bitmap generators and then assigned the colors to make a missingno essentially

stiff locust
#

can you write ballsack in the galactic alphabet in the nameplate to troll people who translate it

wooden nexus
#

lol no

stiff locust
#

aww

wooden nexus
#

but yeah, I followed this section of the video

#

In this case, I generate 2 bit planes the size of the inside tarot and then put the higher layer to 75% to get the same effect as the gameboy would for its decompression and merging of bitmaps

#

I then used the 4 colors usually used in tarot cards and assigned them to each combination

thick panther
#

is there a way to add every joker in the game to the joker spot as all negatives and eternal?

thorny adder
#

Auto idk

#

Make a mod for it lul

autumn coral
#

this would be so easy???

#

ohhh

#

wait EVERY single joker

#

still would be easy

thorny adder
autumn coral
#

yeah if u don't know how to code

#

for the rest of us

thorny adder
#

Oh with a code I said its okay

autumn coral
#

oh lol

#

give me 3 minutes i'm typing it out

thorny adder
#

I mean if jokers have a number attached to it just increase it by one spawn make negative repeat right

autumn coral
#

nevermind i'm too lazy

#

apparently

#

apologies

#

😭

#

i'm

#

eep

#

it is 12:29pm

#

am*

true jasper
#

How do I make it when you open a pack it draws cards, like how it does in a tarot pack

royal ridge
faint yacht
#

...can I specify a set of items that can be spawned in a booster pack? A bit scared to see or do how the Meme ones does it.

frosty dock
#

yes

faint yacht
#

How so, then, do I define a custom pool for the Booster Pack to choose from?

frosty dock
#

you can define a create_card method on your booster that chooses what card to generate

faint yacht
#

...ah, so that's what the forced_key argument could be used? I'd pass the custom Joker "key" to it?

night pagoda
#

How would you implement individual card offset? 🤔

#

right now I tried a couple of ways - setting card.y value makes the card appear offset only on hover, this on screenshot I made using card:hard_set_T() but it can't decide whether it want to respect cardarea's alignment or mine, resulting in flickering and tilt

languid mirage
#

maybe it's flickering because the game updates area's T every frame with CardArea:align_cards or something like that

#

if you want to override vanilla alignment you have to patch into that function and handle position there

#

kinda like what I did with cartomancer for zoom into jokers area

night pagoda
languid mirage
#

ignore offset when card is being dragged then

night pagoda
#

that already happens, but it still does the weird offset

#

when removing the condition the weird offset is even worse

languid mirage
#

can't help without seeing the code

night pagoda
#

that's the patch for now

languid mirage
#

and how does offset look like

#

when you drag the card

night pagoda
#

If I check for drag:
The card assumes that I took the card from its the usual position, it teleports to the top row (and starts moving as if I picked the card from the top row)
If I don't:
The card moves below the screen

languid mirage
#

yeah you have to patch the main G.hand align then

#

because your code runs before the vanilla align

night pagoda
#

no, it is set to trigger after

#

frim the cardarea.lua - vanilla code

#

my part

#

(I know that the check isn't consistent with the vanilla code, but for now I'm testing grounds)

languid mirage
#

ah your check is in cardarea:draw

#

not align_cards

#

actually I'm a bit confused why that'd happen

#

but it should still be in align_cards

#

if weird snap still happens then I'd try integrating your custom align in this

night pagoda
#

I'll record a gif, one sec

#

it is in align_cards(), not in draw(), and it happens after the default hand align, so I'm not sure what's going on

#

hmm, I think I know

#

the cardarea itself is still in the center, inbetween those rows

#

so the cards aligned upon the cardarea itself when I did the offset of clubs

languid mirage
night pagoda
#

I did this to check

#

altough I don't think this should happen either?

#

What I want to accomplish is "fake" separated cardareas that are essentially one cardarea with cards that are offset based on certain rules

#

so cards that are separated visually, but actually in the same cardarea

stiff locust
night pagoda
#

that sounds like a solution for NES sprites lol

faint yacht
#

Interlaced Balatro.

violet void
stiff locust
violet void
stiff locust
#

you couldnt notice the small pause menu apparently

#

there's so many buttons

#

this pause menu is not okay

#

why do you even need a fold button???? doesn't that just end the run why would you want that

#

trance needs to move out already

violet void
#

It's a bunch of mods in the vanilla+ version of Dimserene's modpack, I don't need most of them xD

#

Trance makes the background colors pretty tho

limpid flint
#

😳

stiff locust
#

i'd expect this from the full modpack

#

if this is vanilla+ what the fuck is full like

violet void
#

it doesn't add new content

stiff locust
#

.

#

so you

modded the game for what exactly

#

isn't the content like the main draw of it

limpid flint
#

Qol and appearances

violet void
#

I feel like adding my own content for now

stiff locust
#

read my books

limpid flint
#

Yeah vanilla plus is meant to be added upon

stiff locust
#

well that makes more sense but

#

when i hear vanilla+ i imagine

#

vanilla style mods

#

with vanilla esque jokers and stuff

#

the name feels a bit misleading that might just be me

limpid flint
#

I don't know where's the line to draw between vanilla-esque and not

stiff locust
#

that's fair

#

although i feel like it'd be much clearer if it was named "non-content pack" or "quality of life pack"

stiff locust
night pagoda
#

true

limpid flint
#

That looks so cursed to me

night pagoda
#

because it is

stiff locust
#

you made a modpack with 140 mods in it you should be like

#

a war vet for this stuff

#

thousand yard blind type shit

limpid flint
#

Pardon?

stiff locust
#

are you not like

#

desensitized to the chaos

#

or something

limpid flint
#

Kinda yeah

#

But still

crisp coral
#

i made remove Customize Deck from options during a run because i like my shit non-cluttered

hardy viper
#

oh wait nvm you figured it out

#

gg

night pagoda
#

Kinda? It still does weird stuff sometimes but I mostly got it

teal estuary
#

looks good tbh

hardy viper
night pagoda
#

this works surprisingly well! although I do it manually for now for each suit

#

that's all the code

frosty dock
#

(also no_collection added)

crisp coral
#

I CAN FINALLY HIDE SPOILERS FROM MY MOD

#

i still have in the blind config when i made the pr 🥹

night pagoda
#

guys what to do I accidentally washed my cards in the wrong mode and they shrunk 😭

frosty dock
#

this is why you don't wash your cards, you should shuffle them instead

faint yacht
#

...now to figure out singletons and Showman.

night pagoda
#

How can I get which SMODS.OPENED_BOOSTER is opened? I tried retrieving .set, .key and .name, and all of them were seemingly nil

EDIT: Got it, SMODS.OPENED_BOOSTER.config.center.key

brisk basin
#

So uhh yesterday I started looking into modding balatro and I ran a few tests to make something interesting. I ended up making an imo cool joker. Can I share it here?

frosty dock
#

ofc

wooden nexus
#

Thinking of just adding Gambling to Balatro now because of the 18+ rating

mystic river
brisk basin
clever steppe
brisk basin
#

trigger warning?

crisp coral
#

you can prolly do a card_eval_status_text

clever steppe
# brisk basin trigger warning?

idk you said it was a sensitive topic so i assumed you would want to warn people of it before they took the spoiler off but as long as it doesnt break the rules of the server you can just post it no problem

brisk basin
#

ah yes yes

#

beware, kinda sensitive topic.

#

probably i will rename it, it sounds like a boss blind

#

if there's any problem i will delete just in case

raven granite
#

No Laughing Matter moment

brisk basin
#

XD

#

may I delete it or its okay?

crisp coral
#

a bit touchy but that should be fine

brisk basin
#

okay, thanks ^^

#

btw i also have a video of it working, if someone's interested

wooden nexus
#

Voucher:

3 Card Monte
You may bet $1 for a SET 1 in 10 chance of $5
You may bet $5 for a SET 1 in 20 chance for $30

BlackJack
You may bet $10 for a set 1 in 30 chance of $60
You may bet $20 for a set 1 in 50 chance at $175

#

Thinking this would be funny

teal estuary
brisk basin
#

thx!

teal estuary
#

np np

faint yacht
#

Might be overthinking how to have a card appear only once in a booster pack if w/o Showman...

weary jungle
#

this is still not fixed 😔

#

the key has to be the same as the path

#

i think

#

2 ways

#

debug+ watch shader

hardy viper
#

debugplus watch command

#

it's peak

weary jungle
#

or shadertoy if your feeling fancy

#

(dont recommend ^)

hardy viper
weary jungle
#

the reason i dont recommend shadertoy is because some stuff is different

#

for example uv.y is flipped in baalatro for some reason

#

Mods\modname\assets\shaders\shadername.fs iirc

#

nope its the other slash

#

Mods/modname/assets/shaders/shadername.fs

hardy viper
#

truth

weary jungle
#

ok i have a bone to pick

#

why does the watch path use a different slash

#

its so annoying

hardy viper
#

afaik it works everywhere on windows?

weary jungle
#

i just want to copy from windows

#

this is in file explorer

#

how do i make a consumable config change when a boolean changes

faint yacht
#

\ and / both can be used in the Run dialog.

weary jungle
#

yea but its harder to copy directly from the file explorer

#

unless there is an opion

frosty dock
weary jungle
#

thanks!

frosty dock
#

wait what's wrong exactly

#

the key needs to match the shader name in the shader file, not the path from what i can gather

weary jungle
#

yea thats what i ment

#

the file name

frosty dock
#

what if i just say they should all match?

#
  • The shader's key, file name (without extension) and the shader name used in the GLSL file must be identical.
weary jungle
#

awesome

weary jungle
frosty dock
#

no

#

the file extension being .fs does not make it F#

#

in fact it stands for 'fragment shader'

weary jungle
#

oh ok

#

windows said f# and i got confused

frosty dock
#

lmao

#

ok updated

faint yacht
#

💀 ...yeah, I can't really figure out singletons with a custom "pool".

frosty dock
#

singletons?

faint yacht
#

As in, no repeats from the same pool.

#

Trying to make a custom Booster Pack.

frosty dock
night pagoda
faint yacht
#

...in the same way Cryptid's Meme packs?

night pagoda
#

cursed or awesome?

frosty dock
frosty dock
late pecan
#

hey chat whats steamodded

#

ohhh thats awesome

weary jungle
#

fragCooed -> texture_coords
iResolution.xy -> image_details iirc

raven granite
#

that would be a cool minigame honestly

weary jungle
#

its probably not image details then

#

try texture_details.xy, and if that doesnt work, texture_details.zw

night pagoda
weary jungle
#

do you have an iTime anywhere?

#

its shadername.y

#

idk

#

try image_details.ba

#

ok its not that...

#

can you send the file?

#

you did it?

#

Awesome! one problem

#

the shader goes over the joker

#

its all up to your prefrence though

#

ok awesome

#

your welcxome

#

ok now im going to do perthro

#

where is the isaac guy

#

i said PERTHRO!!!

#

perthro is simple, rerolls everything in shop

#

like voucher, booster packs and jokers

#

when do you want the shader to show?

frosty dock
#

'nother page down

hardy viper
#

love2d reference

#

overlapping shaders don't behave well in balatro iirc

weary jungle
#

the way id do it is create an edition that has the shader that doesnt do anything

#

and all the cards of that suit have the edition

hardy viper
frosty dock
#

there's no Card:draw api function for suits (or anything besides editions really, iirc), so I'd lovely patch Card:draw()

frosty dock
#

cards can only have one edition

#

these draw methods should defo be added at some point

#

update is the wrong function here

#

but I'll add the Card.draw methods rn

weary jungle
#

how do i reroll the shop

#

what if i generated a new shop

#

insane thanks guys

faint yacht
#

@frosty dock The suggestion did work... but what of the Showman restriction?

frosty dock
#

create_card takes care of that normally

#

i don't see why that wouldn't be the case here

faint yacht
#

Though, this does not happen 100% of the time, so, this works well enough.

thorny adder
#

Also that looks sick

#

Love the art

faint yacht
#

Yes and thank you... even though it's more of an "original edit" of stuff, save for the Windows jokers that use front box art w/o much edit beyond resizing and feathering.

#

The background colors I didn't define at all, that's what the game defaulted to.

hardy viper
#

check throwback code

frosty dock
#

draw function added, you can now have something like this in your suit

draw = function(self, card, layer)
  card.children.center:draw_shader('your_shader', nil, card.ARGS.send_to_shader)
  card.children.front:draw_shader('your_shader', nil, card.ARGS.send_to_shader)
end
weary jungle
#

how do i reroll the shop

frosty dock
cinder elk
faint yacht
#

Thank ye.

balmy stump
#

how does the game calculate what card to draw next using the seed

cinder elk
#

has anyone made a jonkler card yet

balmy stump
#

like a joker card?

cinder elk
#

no no that

#

specific inage

balmy stump
# faint yacht

does task manager allow you to delete cards and why is iron wall called iron will

cinder elk
#

The jonkler

balmy stump
#

i could do it in like 5 seconds

#

but it would take me a minute to give it a interesting ability

crisp coral
#

if you told me to make a joker it would take me a day to make the art and a month to make the ability

faint yacht
balmy stump
#

turns all played cards to jonkler cards, jonkler cards are played like how joker cards would be for normal games.

cinder elk
faint yacht
#

...and then BonziBuddy? 😛

weary jungle
#

what would perthro do

#

i would reroll a joker, but cryptid

#

darn you crypid

balmy stump
# cinder elk The jonkler

joker cards can only be 95 to 71 pixels iirc so if you really want me or anyone else to make a jonkler joker then youd need to change the size drastically

cinder elk
#

that’s the idea

weary jungle
#

big joker

cinder elk
#

just. comedically downsize the image to be bitcrusbed

weary jungle
#

massizce joker

#

like big m jokr

balmy stump
#

ngl it would be pretty funny to change the Joker text on the left and right of most jokers to Jonkler

weary jungle
#

MODSSSS!!!

#

GET HIME!!!!

#

GOGOGO!!!

#

GET HIM!!!

#

BAN HIM!!!!

balmy stump
#

tysm im definitely going to click on this link

arctic lion
#

why don't you ping them instead of just shouting lol

fallen tendon
#

He must be executed

arctic lion
#

<@&1133519078540185692>

weary jungle
#

OH YEAH <@&1133519078540185692>

quaint saddle
#

🔫

weary jungle
#

WOOO!!!!

#

we did it guys

arctic lion
#

order 66 has been executed

fallen tendon
#

Gg

balmy stump
#

oh no my ip address has been stolen 😦

#

jk

arctic lion
#

leaking it to everyone unless you send me $50 of amazon gift cards

rough furnace
faint yacht
#

0.0.0.0 🃏

balmy stump
weary jungle
#

19j.imb.o.2

nocturne garnet
#

get ownee

#

d

arctic lion
weary jungle
#

bal.a.t.ro

#

my ip for anyone wondering

balmy stump
#

i have a vpn so even if i did click on that stupid link it wouldnt have stolen my ip

rough furnace
#

That is a valid domain btw

nocturne garnet
#

got your ip address

balmy stump
#

damn

nocturne garnet
#

your vpn SUCKS.

rough furnace
arctic lion
#

never click any links they will steal all your steam games

rough furnace
nocturne garnet
balmy stump
#

if you hover over a link it tells you where it redirects you to

arctic lion
#

yeah kind of silly that discord lets you use really

faint yacht
arctic lion
#

but they just bulk added a bunch of formatting stuff like this

frosty dock
rough furnace
#

Its handy

arctic lion
#

i've found 95x71 is a huge amount of pixels to play with

wooden nexus
#

Random question: What function makes you win/lose the game?

rough furnace
#

Make a 32x68381923 joker

balmy stump
wooden nexus
#

Fr?

balmy stump
#

yeah im so good that the only way i can loose is if the game forces me to

cinder elk
frosty dock
#

win_game() for winning

balmy stump
cinder elk
#

that

#

is the entire point.

fallen tendon
#

Joker art can be very nice looking

cinder elk
#

im not trying to make good cards im trying to make funny cards

weary jungle
#

make it like big m

balmy stump
# cinder elk

can you scale it a little better instead of just forcing it to fit the 95-71 pixels

cinder elk
#

no

#

i wont

weary jungle
#

how do i change global blind size base whatever

crisp coral
balmy stump
#

a card can be funny without it being shittily formatted, the fact its literally jonkler should be all the punchline neccessary

cinder elk
#

the jonk is on you my friend.

#

the point is it to be poorly formatted.

balmy stump
#

can you tell me where you got the joker blank template

cinder elk
#

in this server

nocturne garnet
cinder elk
#

YEAH

#

EXACTLY

#

like im just messing around. like with the crusty jpg joker

tepid sky
balmy stump
#

doesnt have a blank joker png there

cinder elk
#

and rekoJ

arctic lion
cinder elk
arctic lion
#

have you added any effects or are you just playing around with the art

cinder elk
#

im just playing around with art

arctic lion
#

Rekoj could screw around with the scoring or something, have it go from right to left or something

#

or jokers first instead of cards

cinder elk
#

FKJSDHFKSDJF

arctic lion
#

would be a pain in the ass to program mind you

cinder elk
#

NOT TO MENTION

rough furnace
#

J

crisp coral
#

the j

arctic lion
#

J

balmy stump
#

What is the Joker Font?

cinder elk
#

not to mention my

#

magnum opus

nocturne garnet
balmy stump
cinder elk
#

nothing i just made it because it's funny

balmy stump
#

can someone tell me what the joker font is

nocturne garnet
#

i don think they have a specific font

crisp coral
#

custom font