#💻・modding-dev

1 messages · Page 494 of 1

molten musk
#

i also red the text

normal crest
#

Nvm

manic rune
#

its probably something with my jokers' code

#

seele retriggers scored cards once, but when bronya retriggers her then the card retriggers become like, 5

molten musk
#

spent 30 mins reading and for some reason im just not getting it

manic rune
#

to be fair i coded those jokers when i first began modding, so

normal crest
molten musk
#

how is it saving? just the first line?
and do i need to hook for every seal?
what function do i hook?

normal crest
#

yes, when you assign the function to a variable you're saving a reference to that function

#

you would only need one hook

#

something told you what to hook

molten musk
#

so i hook Card:set_seal once , then i call the hook function instead of Card:set_seal?

normal crest
#

no, hooking is adding your own code to an existing function

#

so your code would be ran whenever the game calls Card:set_seal

molten musk
#

so i hook card:set_seal then use card:set_seal wherever

daring fern
hasty mist
#

this is the full code of the joker somethingcom

molten musk
#

then if i want to merge seals instead of replacing
i hook card:set_seal
add the functionality of merging
then use card:set_seal wherver normally

daring fern
molten musk
#

and i dont need to care about consumables?

#

like i did here

#

i was gonna do this for each consumable that added seals....

normal crest
#

if those consumables call set_seal then a hook is all you need

molten musk
#

oh

#

nice

#

yep

#

they all use set seal

normal crest
#

okay good luck i sleep

molten musk
#

good night

molten musk
daring fern
# molten musk good night

If you formatted the keys like I said you could just do: ```lua
local oldsetseal = Card.set_seal
function Card:set_seal(_seal, silent, immediate)
if self.seal and _seal then seal = "Seals"..self.seal.._seal end
return oldsetseal(self, _seal, silent, immediate)
end

keen atlas
#

ive added a push to make it work a bit with smods
also im curios how you got undefined field G.play

daring fern
#

How does one make quantum ranks effect poker hands?

molten musk
#

@daring fern so i made this hook...
for every seal comp possible
not working...

crisp coral
#

What the fuck

daring fern
molten musk
#

yep

pastel kernel
#
SMODS.calculate_context({ seal_added = true, cards = context.scoring_hand })

is this how the seal application is checked for?

pastel kernel
# daring fern No?

ok how do you make this but for gold seals?


SMODS.calculate_context({ edition_added = true, cards = context.scoring_hand })```
pastel kernel
#
        text = {
            "This Joker applies gold seals on first played hand,"
            "gains {X:chips,C:white}X#4#{} Chips and {C:money}$#5#{} Money.",
            "each time a card with a {C:gold}gold seal{} is played.",
            "Retriggers played cards with a {C:gold}gold seal{}",
            "Stockpiles {X:chips,C:white}XChips{} and {C:money}Money{} for each played card,",
            "which also resets on the final card.",
            "Gains an extra Stockpiling Power of {X:dark_edition,C:white}+#2#{} whenever a boss blind is selected.",
            "{C:inactive}Currently {}{X:chips,C:white}X#4#{}{C:inactive} Chips and {}{C:money}$#5#{C:inactive} Money.",
            "{C:inactive}Stockpiling Power: {}{X:dark_edition,C:white}X#3#{}{C:inactive}.){}"
        }
daring fern
pastel kernel
#
        if context.before and context.main_eval and G.GAME.current_round.hands_played == 0 and not card.ability.extra.first_hand_triggered then
            local talisman_cards = 0
            for _, playing_card in ipairs(context.scoring_hand) do
                if not playing_card.seal or not playing_card.seal == 'Gold' then
                    playing_card:set_seal('Gold', true)
                    talisman_cards = talisman_cards + 1
                end
            end
            if talisman_cards > 0 then
                return {
                    colour = G.C.MULT,
                    func = function()
                        G.E_MANAGER:add_event(Event({
                            func = function()
                                SMODS.calculate_context({ seal_added = true, cards = context.scoring_hand })
                                return true
                            end
                        }))
                    end
                }
            end
        end
#

i'm taking spinel and rainbow dash's code

#

this one is from rainbow dash

daring fern
pastel kernel
daring fern
#

And everything in it.

foggy ginkgo
#

Is there a way to make all hands considered a certain hand

foggy ginkgo
#

What would it be

daring fern
foggy ginkgo
#

Ah

#

Thank tou

#

Wait so

#

if context.evaluate_poker_hand then
replace_poker_hands = "Pair"
end

#

Would it be like this?

daring fern
foggy ginkgo
#

I might be a little confused

daring fern
foggy ginkgo
#

I was close

#

Thank you as always

lament agate
#

posture check devs

pastel kernel
foggy ginkgo
#

It still shows 5 flush

#

Nvm I'm dumb

#

I put it in the wrong area

#

Gonna die with cringe brb

#

It's all working now

#

I put it on the wrong joker

#

Sorry something...

pastel kernel
#

i'm stupid as fuck umm```lua
add_to_deck = function(self, card, from_debuff)
if not G.GAME.current_round.rainbow_dash_reset then
G.GAME.current_round.rainbow_dash_reset = true
local original_reset = G.FUNCS.reset_game_globals or function(run_start) end
G.FUNCS.reset_game_globals = function(run_start)
original_reset(run_start)
G.GAME.current_round.rainbow_dash_reset = true
for _, joker in ipairs(G.jokers.cards) do
joker.ability.extra.first_hand_triggered = false
end
end
end
end

daring fern
pastel kernel
#

could not decode png image, what png image?

faint yacht
#

Probably invalid atlas specified or something is wack with the .png itself.

pastel kernel
#

weird

molten relic
#

this not working

#

any idea why?

#
        if context.individual and context.cardarea == G.play and context.other_card:is_face() then
            card.ability.extra.face = true
        end
        if context.individual and context.cardarea == G.play and context.other_card:get_id() == 7 then
            card.ability.extra.number = true
        end
        if card.ability.extra.number and card.ability.extra.face then
            xmult = card.ability.extra.xmult
        end
    end
}```
daring fern
#

Also you need to return.

molten relic
#

oh yeah

#

okay now it just gave 1.5X mult for EVERY EVENT.

molten relic
#

whats a context check?

#

just like

daring fern
molten relic
#

oh yeah

foggy ginkgo
#

How would one clone a joker twice

daring fern
foggy ginkgo
#

How do I chance the cost of those clones

daring fern
foggy ginkgo
#

Is it possible for those clones to cost 0 dollars

#

Or I mean sell

foggy ginkgo
#

Is it like context.card.cost = 0

daring fern
foggy ginkgo
#

How is one this wise

maiden phoenix
#

Hard drugs

foggy ginkgo
#

Hm

#

I'm gud roaring knight

molten relic
#

is there a way to easily reset variables?

#

so like if you turned something true you could set it back to false?

#

im trying and it aint working

ripe kestrel
#

How can i make the current blind harder? ive been experimenting with G.GAME.blind. and im trying to make a consumable make the blind have 2x chip requirements, is this possible?

daring fern
pastel kernel
#

joker won't gain xmult and interest

red flower
# pastel kernel help

you have two context.end_of_round and the first one returns before the second one

also context.before and context.individual are not true at the same time, and again you have two context.before of which the first returns before reaching the second one

red flower
#

you need to combine both end_of_round and before checks into one and remove the context.individual from the before check

pastel kernel
#
        if context.end_of_round and context.game_over == false and context.main_eval and not context.blueprint then
            card.ability.extra.stockpile = card.ability.extra.stockpile_return
            return nil, true
        else
        if G.GAME.blind.boss then
            card.ability.extra.stockpile_return = card.ability.extra.add + card.ability.extra.stockpile_return
            card.ability.extra.gold_seal_retrigger = card.ability.extra.gold_seal_retrigger + card.ability.extra.add
            return {
                message = localize('k_upgrade_ex'),
                colour = G.C.EDITION,
                card = card
            }
        end```
red flower
#

no, that will just make the else block run in every other context

I strongly recommend brushing up a bit on basic lua

pastel kernel
#

oh wait, fuck i didn't even see how the stockpile works

#

stockpile was looking for context.end_of_round

#

not context.after, which was the intended context

#

i guess there's two context.individuals too

#

hey it gains xmult and money now

#

This new sisyphus prime is the one i've been trying to make

primal robin
#

How to check is consumable behaves like soul/black hole (cannot be obtained from seance or by ghost deck or smth)

pastel kernel
#

but i think this joker should change identity, the original sisyphus prime is already broken enough

#

what should i name it?

primal robin
#

Maybe

stiff locust
primal robin
#

I'm checking centers

red flower
#

yeah i assumed sleepy was checking centers

stiff locust
#

rrright

primal robin
#

Check for unlocked also weird

#

In SMODS everything have unlocked

#

But in vanilla only jokers and vouchers

stiff locust
#

oh right I actually came here to do something

#

how do I check what type of pack you're in

faint yacht
#

SMODS.OPENED_BOOSTER.config.center.key?

primal robin
#

It's a name, not type

faint yacht
#

.kind, then. Or .name.

keen atlas
#

its kind i think

wintry solar
#

only for vanilla packs

keen atlas
#

yeah

wintry solar
#

I doubt modded packs have it

red flower
#

mine do

primal robin
#

Why not enforce it?

faint yacht
#

I have kind, but not name.

wintry solar
#

seems strange to enforce a value that doesn't do anything

primal robin
#

How I should determine what type of this booster pack then

faint yacht
#

SMODS.OPENED_BOOSTER.config.center.kind if present, otherwise, SMODS.OPENED_BOOSTER.config.center.key. 🍞

primal robin
#

I'll wait until this hole will be fixed ig

#

Haya made a joker which increases "level" o booster packs in shop. 2 problems:

  • you can't determine type of booster pack
  • you can't determine level (regular, jumbo, mega or custom) of booster pack
faint yacht
#

Sounds like other mods will just have to define "tiers".

red flower
#

why should a booster have a type or a level tho

unborn bay
#

because I exist

primal robin
#

type in this case a kind

red flower
#

true!

manic rune
#

N'

red flower
#

bepis

unborn bay
#

but yeah currently atm im relying on key names to change tiers for that joker

#

which is not very good

manic rune
#

arlan or natasha

faint yacht
#

Arcana packs will have "Arcana" as their .kind...

primal robin
#

Because it's vanilla

red flower
#

I do think a level field would be cool but I don't think it should be mandatory or even automatically assigned

primal robin
#

Modded does not

red flower
faint yacht
#

Most will not have a .kind.

wintry solar
#

it's also not something that's always relevant to packs

faint yacht
#

Either the upgrade should "swap" the pack to a "better tier" or call a function that does stuff to the pack on its' own.

unborn bay
#

does not account for

  • any pack that does not contain tier names in its key
  • packs that have different tier names (e.g. ortalab, I've hardcoded an exception for that here)
  • tiers that don't end with the pack skin index
  • literally any pack that isn't named like a pack
wintry solar
#

I love a bit of hard coded jank 👍

faint yacht
#

G.shop_boosters.cards[1]:kacey_upgrade(G.shop_boosters.cards[1])

#

🧠

stark viper
#

I'm currently trying to rework a Joker i'm creating to decide the bonus given based on the outcome of an rng function. Is there a way to implement this based on the seed, and not pure randomness?

maiden phoenix
#

instead of math.random

stark viper
#

epic, thanks!

faint yacht
#

-# ...hm, how do I skip the cashout...

paper elbow
#

Odd problem. I've got the deck set to High Contrast, but it's pulling from the Low Constrast vanilla deck

graceful vapor
#

Is there a limit making it so I can't have all of my jokers on the same y level?

lofty sand
#

hey, does anyone know how I can change where stickers are supposed to appear on unconventionally shaped jokers? like photograph, for example

paper elbow
lofty sand
#

sure, I'll just post the png here in a sec

#

actually, a screenshot might be better

#

small lil guy right in the center

#

and also, I guess I might need to do that for the torn corner one as well

paper elbow
#

I see, yeah.

#

I think you're going to have to make a special case in your lua code for the joker to override the default behaviour. I'm not sure of how, but I can try to help you look if you remind me. What

#

What I'd recommend is checking how the base game draws the stickers

lofty sand
#

maybe I missed something in the documentation, I'll look through it again

#

oh dur there's literally a sticker page how did I miss that

paper elbow
lofty sand
#

that's pretty much what I've been doing.
workflow: think of idea > try and free hand it > cry > read relevant documentation > try and fix it > cry again > ask this channel > realize what I've been trying to do is clinically insane

paper elbow
#

That's indeed half the process, the other half basically involves deciding to do it anyway and a long process to learn/experiment until you get it.

#

I've been putting off working on some of ( in my opinion ) my more interesting jokers because the involve changing the rules of the game.

lofty sand
#

throwing spaghetti at the wall until it sticks, and until your code necessarily becomes spaghetti

paper elbow
#

Pasta yum-yum

lofty sand
#

oh no Lol

#

that is actually a really creative way to implement negative playing cards tho

#

sounds hellish to code tho lmao

paper elbow
#

I feel like... it definitely could be.

paper elbow
#

I've basically gotta learn how the game processes things by default because I know little about it so far

lofty sand
#

the workflow holds true lol

lofty sand
# paper elbow I feel like... it definitely could be.

funnily enough, when I was trying to figure out how to make that smaller joker work the way I wanted to I managed to make playing cards appear in a really weird state that reminded me of that functionality, let me find the clip

#

I don't remember how I fucked it up that bad, I just remember my friends and I getting a real kick out of that

graceful vapor
#

Does XChips already exist in balatro's code?

red flower
#

no, but smods adds it

lofty sand
#

I don't think it does in base game but I'm pretty sure it's in smods

graceful vapor
#

ok thanks

lofty sand
lofty sand
#

oh it's on the joker page, I was looking on the atlas page

stark viper
maiden phoenix
#

show your code

stark viper
#

i just replaced math.random with the pseudorandom

maiden phoenix
#

Put the 1, 4 outside of pseudoseed

#

but inside pseudorandom

maiden phoenix
stark viper
#

OH LOL

#

slight reading error

lofty sand
# red flower this doesnt work?

how would you suppose I change where the stake sticker displays on the joker with the torn corner? since then, I have discovered that the sticker documentation is talking about building functional stickers like eternal, rental, etc. and not the cosmetic stickers, so that wouldn't actually work for what I'm trying to do

#

It worked flawlessly for the smaller photograph sized joker though, so thanks for that :)

red flower
#

no idea honestly

wintry solar
#

I think youd need to hard code the positioning for your joker

lofty sand
#

that was COMPLETELY unintended btw lmao

#

it was supposed to make a copy and include it in scoring, but ended up making that weird ghost card that just kinda stayed there. it works properly now, but that bugged version was really funny to me

modern kindle
#

Good schmorning chat 👋

#

How are you N my friend

red flower
#

hi dilly

modern kindle
#

Hihi

gaunt thistle
#

morning :-)

modern kindle
#

Hi meth how are you

gaunt thistle
#

it's been a rough day but it's lookup up

#

how have you been?

modern kindle
#

Im alright, slept at a more average time the last couple of days which is nice
Got some stuff I gotta try and do today so hopefully I stay on top of it

#

Im glad things are on the up and up for you :)

red flower
#

im sure probabilities were intended to be used this way

modern kindle
#

What if I did this to your paycheck

red flower
#

that would be cool i think

formal parrot
#

Do i install arch linux

#

Yes or no :3

pure salmon
#

how do i check if a card is a joker again

#

this is simple but i can't think of a reference

red flower
#

card.ability.set == "Joker"

rough furnace
#

When people are programming/doing support and they encounter errors that aren't immediately obvious about what caused it in SMODS could you ping me with the error message and cause. I want to make a list and try to make the most common of these more obvious what went wrong.

red flower
slate token
#

Can anyone help me with this error? I dont know where the unexpected symbol is

red flower
#

remove these commas

#

also the message should be in a return

slate token
#

Oh ok

ripe kestrel
#

is there anyway to check the rarity of the jokers in the shop?

#

with a joker

red flower
rough furnace
slate token
#

It says the same in line 289

red flower
#

the return should go at the end of the block

slate token
#

So card part as well?

red flower
slate token
#

Oh, i will try

#

Nope, it still complains

red flower
#

can you copy it here

slate token
#

loc_vars = function(self,info_queue,center)
return {vars = {G.GAME.probabilities.normal, center.ability.extra.chance, center.ability.extra.Xmult_mod, center.ability.extra.Xmult}}
end,
calculate = function(self, card, context)
if context.full_hand == 1 and context.destroy_card == context.full_hand[1] and pseudorandom('ring') < (G.GAME.probabilities.normal / card.ability.extra.chance) then
card.ability.extra.Xmult = card.ability.extra.Xmult + card.ability.extra.Xmult_mod
return {
message = 'upgrade'
}
end
if context.joker_main then
return {
Xmult_mod = card.ability.extra.Xmult
}
end
end

#

Oh hell nah

#

This thing misses tabs

red flower
#

you can add
```lua
```
to format

modern kindle
#

i was gonna say

#

i couldnt make it nor format for me though lmao

red flower
#

context.full_hand == 1 is incorrect tho

red flower
#

there are no syntax errors, unless the game is crashing because of the full_hand thing

fathom void
#

setting up vscodium rn and i want to know if there are any good extensions to get for this

red flower
slate token
red flower
#

and the whole code

fathom void
stark viper
fathom void
#

i assume itd be this one in the extension list

stark viper
#

yep that's it

slate token
stark viper
#

that's a hell of a mod description 😭

red flower
fathom void
#

is there anything else i should do now that i have the lua extension or is it good to go

slate token
#

I did! What the hell?

red flower
slate token
#

Wait what? This thing didnt even saved my changes 😦

chrome widget
#

Modding chat is bizarre right now. How's it going gay

#

Gang

#

I meant gang

fathom void
#

im trying to figure out how to make a mod

chrome widget
#

Oh!! Are you new to it?

fathom void
#

oh absolutely

modern kindle
#

greetings winter

chrome widget
#

Hello!!!!

#

Also someone messaged me earlier talking about saving and loading cardareas which I do have knowledge of but it was at like 5 AM my time and I was honk shoe mimimimimimimi

fathom void
#

i have 30 joker effects planned already but no idea how to code them lol

modern kindle
#

oops, wrong paste for second one

fathom void
#

i have the smods wiki and vanillaremade bookmarked already

chrome widget
#

Most joker effects as you'd see in Vanilla are actually pretty easy to implement in the current SMODS versions. It can get funky if you do more complicated things obv but it depends on what you wanna do

fathom void
#

this is the one i want to start with

chrome widget
#

Oh! This is the using_consumable context

fathom void
#

okay first thing i want to know is how to set everything up properly

chrome widget
#

Basically any joker declaration is just one big function call, using SMODS.Joker

sleek nova
#

Is there a way so i can disable the negative filter on a joker? (It always spawns negative)

fathom void
#

hmmm what do i do for the main mod file

sleek nova
wintry solar
#

Yes

chrome widget
#

Either way you can load new jokers directly in your main file or use it to load outlying files for better organization

sleek nova
#

who can only spawn one way and its always negative

bitter portal
#

this is probably like a really generic thing to ask but how do people add a card to the title screen?

fathom void
wintry solar
chrome widget
jolly shadow
sleek nova
#

Lame n lazy

jolly shadow
#

my brain is gargantuan

#

sigh

sonic cedar
#

hi moddingchat
how would i have a random tag be generated with add_tag? do i have to make the table myself or is there something preexisting (that is supported by add_tag)?

wintry solar
#

I’m not aware of a pre-existing function but that is a good idea and I will add one

sonic cedar
#

niiice

sonic cedar
fathom void
#

should i look at other mods to see how they load stuff

glad osprey
#

wheres the code for the collabs tab of the credits menu located

maiden phoenix
wintry solar
#

But something like this should work


local tag_pool = get_current_pool('Tag')
                local selected_tag = pseudorandom_element(tag_pool, pseudoseed('ortalab_hoarder'))
                local it = 1
                while selected_tag == 'UNAVAILABLE' do
                    it = it + 1
                    selected_tag = pseudorandom_element(tag_pool, pseudoseed('ortalab_hoarder_resample'..it))
                end
 add_tag(Tag(selected_tag, false, 'Small'))
sonic cedar
#

oh hey thank you

#

hi dilly

modern kindle
#

hiii

bleak coral
#

Trying to screw with the fonts rn, I've got code into the lang init func but I can't seem to refer to my mod dir in the payload - anyone got a solution that doesn't involve %appdata%? (tryna keep compat w/ linux)

[manifest]
version = "1.0.0"
priority = 9999999
dump_lua = true
[[patches]]
[patches.pattern]
target = "game.lua"
pattern = "v.FONT = love.graphics.newFont( v.file, v.render_scale)"
position = "after"
payload = '''
if _ == 1 then
    v.FONT = love.graphics.newFont("Hm6x11plus.ttf", v.render_scale)
end
'''
times = 1
match_indent = true
``` got this so far
sleek nova
bleak coral
#

trust me lovely hurts my brain enough, ive tried to find a way to refer to my mod's dir in the payload but i cant

wintry solar
jolly shadow
sonic cedar
wintry solar
wintry solar
sonic cedar
wintry solar
#

I believe so

slim ferry
#

is there anywhere you can easily just double an image's size? aseprite is kinda annoying and doesnt just let me double the image size without doing wierd stuff to it

manic rune
#

you have to make one yourself i think 🤔

modern kindle
#

bepis

manic rune
#

dilly

#

i drew MORE art today :3

modern kindle
#

wowzers

#

youre so talented and powerful

#

i thought you had an artist for a bit

slim ferry
glad osprey
#

in aseprite

manic rune
glad osprey
#

ngl someone should make a plugin for aseprite that exports the image into 1x and 2x automatically

manic rune
#

true

manic rune
#

i dont want to bother th30ne lol

modern kindle
#

you should make my art since my artists have decided they dont wanna do it in a timely fashion

manic rune
#

this gotta be the forth time i sent this now

modern kindle
#

my mod would be out soon if not for artists deciding to be so slowwwwwwww

#

i feel like its nearing release ready for its initial ver

glad osprey
#

ikr my artist is so lazy and slow and they just have no ideas at all

manic rune
#

i agree

glad osprey
manic rune
#

but your artist still seems cool nevertheless

#

:3

glad osprey
#

depends on the day imo

modern kindle
glad osprey
#

(the joke is im my own artist)

manic rune
glad osprey
fathom void
#

how would i set up the main lua file if i wanted to organize mod content like this

primal robin
#

@glad osprey are you coming back into modding? a_

glad osprey
#

I never really left

manic rune
#

we all begin somewhere, good art doesnt just come out of nowhere lol

modern kindle
#

hell nah

glad osprey
#

just been a minute since I talked in here

manic rune
modern kindle
#

mfs saying 'learn' like thats not gonna push shit back even longer

fathom void
manic rune
#

uh

#

which mod has the automatic file loader code again

#

i forgor

primal robin
#

multiplayer

manic rune
#

yeah you can check that then

fathom void
#

cool

primal robin
#

Someone just gave me python scripts for aafix and 2x thing long time ago

ionic cobalt
glad osprey
#

I would kill for an aseprite addon that automates the export process

#

aseprite uses lua btw

#

wink wink

manic rune
#

is this real

glad osprey
#

(someone please make this im desperate)

manic rune
#

i could, take a look

#

and maybe attempt depending on how hard it is to make an addon

idle thicket
#

Exists a script to phone?

manic rune
#

script to phone?

primal robin
glad osprey
#

gps

wintry solar
glad osprey
#

also did that before when I was trying to make it and it didn't help at all

fathom void
#

ok how do i get globals to be defined in vscium

primal robin
manic rune
#

OH you mean that

#

ofafm

#

yeah im gonna go die

glad osprey
#

make the aseprite plug-in first

idle thicket
manic rune
#

i thought they meant a custom tab in the mod's menu 😭

glad osprey
#

OH LMAO

idle thicket
#

Exists a hack in phone

glad osprey
#

youre speaking gibberish bud

idle thicket
#

?

primal robin
#

I never made own cycle btw, maybe I should find use for that at some point

#

Looks like credits was made on rush or smth

idle thicket
glad osprey
#

no that was for me

#

wait

modern kindle
glad osprey
#

yes that message you replied to is talking to you

#

im assuming your asking about how to mod balatro on phones which isnt allowed here

idle thicket
#

I just want to know if there is a hack for cell phones.

wintry solar
#

Not on this server, no

chrome widget
#

As stated, mobile modding discussion is against the server rules

sharp marlin
#

Hi everyone, I hope this is the correct place to ask this question.

I am legally blind and have been messing with the lua scripts to make the text and cards oversized. I am quite pleased with the game state but there is one additional modification I wish to make:

When opening a booster pack be it spectral, tarot. etc. the cards in hand fan over the jokers. This is only an issue when trying to sell the covered jokers

Is there a way to change the layering to have a selected card be "always on top" so they can be sold from this view?

I should note i do not have this problem when using a controller instead of the mouse

primal robin
#

Developer has spoken. That's why

idle thicket
#

Wait

#

Sorry

idle thicket
#

Oh sorry

#

I dont know bro

fathom void
#

ok how do i get vscium to recognize smods stuff

chrome widget
#

The objective answer is because mobile modding typically requires some form of jailbreaking or EULA-defying action, and localthunk doesn't want to be held responsible for "enabling" that which could cause a legal blow up and get the game removed from various mobile distribution storefronts

#

Basically, mobile platforms are stingy about user modification and developers are forced to play by their rules (at least nominally)

idle thicket
#

Ok

#

So if I use mods on my cell phone, is it possible to get into legal conflicts?

foggy ginkgo
#
        if G.jokers.cards[#G.jokers.cards] == card then    
            if context.evaluate_poker_hand then
                return {
                    replace_scoring_name = "Pair"
                }
            end
        end
#

This keeps crashing everytime I hover in the collection screen in the main menu

chrome widget
red flower
foggy ginkgo
#

It is in calculate

red flower
#

i dont see how that will make it crash then

foggy ginkgo
#

calculate = function(self, card, context)
if G.jokers.cards[#G.jokers.cards] == card then
if context.evaluate_poker_hand then
return {
replace_scoring_name = "Pair"
}
end
end

#

Welp

red flower
sonic cedar
foggy ginkgo
foggy ginkgo
#
SMODS.Joker{ -- Doctor Kidori
    key = "doctorkidori",
    blueprint_compat = true,
    eternal_compat = true,
    unlocked = true,
    discovered = true,
    atlas = 'nicjokers',
    rarity = 4,
    cost = 20,
    pos = {x = 0, y = 2},
    soul_pos = {x = 1, y = 2},
    config = { extra = { xmult = 2, extra = 2} },

    loc_vars = function(self, info_queue, card)
        return { vars = { 
            card.ability.extra.xmult,
            localize { type = 'variable', key = (G.jokers.cards[#G.jokers.cards] == card and 'nic_active' or 'nic_inactive'), vars = { G.jokers.cards[#G.jokers.cards] } }
        } 
    }
    end,

    set_badges = function(self, card, badges)
        badges[#badges] = create_badge('Teto', HEX('e15d73'), G.C.WHITE, 1.2)
    end,

    calculate = function(self, card, context)
        if G.jokers.cards[#G.jokers.cards] == card then    
            if context.evaluate_poker_hand then
                return {
                    replace_scoring_name = "Pair"
                }
            end
        end

        if context.individual and context.cardarea == G.play then
            if context.other_card.ability.perma_mult <= 0 then 
                context.other_card.ability.perma_mult = 1
            end
            if context.other_card.ability.perma_bonus <= 0 then 
                context.other_card.ability.perma_bonus = 1
            end
            context.other_card.ability.perma_mult = context.other_card.ability.perma_mult * 2
            context.other_card.ability.perma_bonus = context.other_card.ability.perma_bonus * 2
            if context.other_card:get_id() == 4 then
                return {
                    xmult = card.ability.extra.xmult
                }
            end
        end
    end
} 
red flower
#

yeah G.jokers doesnt exist outside a game so you need to check for that in loc_vars

glad osprey
#

basically if G.jokers and ...

red flower
#

oh i will add this one to the list for the FAQ

stark viper
#

you'll just have to ignore the flags of "undeclared Global variable" if you're using anytning like luacheck 😭

fathom void
#

alright, the yellow lines are just annoying me a bit lol

stark viper
#

yeah i 100% get that lol, i was the same way

glad osprey
#
if false then
 G = {}
 SMODS = {}
  --etc
end
#

those will be considered globals by whatever your using

stark viper
primal robin
#

I most of the time feels okay in yellow lines

#

I'm web developer after all, where everything is optional

fathom void
#

ok time to code the first 3 jokers from my spreadsheet
gonna start with diviner, topaz, and vending machine bc all 3 are relatively simple imo

#

wait how big the default joker size again

primal robin
#

75x91

fathom void
#

ok thanks
also
what size should i make the atlases

primal robin
#

no restrictions

foggy ginkgo
slim ferry
#

why is vscode screaming at me

glad osprey
foggy ginkgo
#

Fuck

primal robin
#

basically equal

fathom void
#

ill probably start by making it 710x95 then

glad osprey
fathom void
#

10 jokers per row, but only 1 row for now

near heart
#

is there a context that works after jokers are scored that still allows for cards in hand to activate abilities (similar to when gold cards trigger)? im trying to make a joker that activates gold cards on every hand and i need to make it so it doesnt double trigger on the last hand on top of when gold cards are usually supposed to trigger

slim ferry
#

what is the purpose of get_weight in rarities

primal robin
#

Used to determine how likely you'll find this rarity

#

iirc 20 is common, 13 is uncommon, 3 is rare

#

code jumpscare

brittle yacht
#

blud

normal crest
#

😱

brittle yacht
#

why do crash reports not be in message.txts sometimes

#
Thread error (Thread: 0x0251b27507d0)

engine/sound_manager.lua:62: Could not read Ogg bitstream
stack traceback:
[C]: in function 'newDecoder'
engine/sound_manager.lua:62: in function 'PLAY_SOUND'
engine/sound_manager.lua:151: in function 'RESTART_MUSIC'
engine/sound_manager.lua:117: in function 'MODULATE'
engine/sound_manager.lua:210: in main chunk

Additional Context:
Balatro Version: 1.0.1o-FULL
Modded Version: 1.0.0~BETA-0706c-STEAMODDED
LÖVE Version: 11.5.0
Lovely Version: 0.8.0
Platform: Windows
Steamodded Mods:
    1: ENA Dream BBQ Deck v1 by keegankeegan [ID: enadeck]
    2: Sinkhole's Silly Mod by sinkhole [ID: SILLY]
    3: DebugPlus by WilsontheWolf [ID: DebugPlus, Version: 1.5.0~dev, Uses Lovely]
    4: Hollow knight Deck by nolo33lp [ID: HollowDeck]
    5: Undertale Deck by nolo33lp [ID: UndertaleDeck]
    6: Deltarune Deck by nolo33lp [ID: DeltaruneDeck]
Lovely Mods:

Stack Traceback
===============
(3) LÖVE function at file 'boot.lua:352' (best guess)
Local variables:
 errhand = Lua function '(LÖVE Function)' (defined at line 598 of chunk [lovely debugplus.console "debugplus/console.lua"])
 handler = Lua function '(LÖVE Function)' (defined at line 598 of chunk [lovely debugplus.console "debugplus/console.lua"])
(4) upvalue C function 'error'
(5) LÖVE function at file 'callbacks.lua:181' (best guess)
Local variables:
 t = Thread: 0x0251b27507d0
 err = string: "engine/sound_manager.lua:62: Could not read Ogg bitstream\
stack traceback:\
\9[C]: in function 'newDecoder'\
\9engine/sound_manager.lua:62: in function 'PLAY_SOUND'\
\9engine/sound_manager.lua:151: in function 'RESTART_MUSIC'\
\9engine/sound_manager.lua:117: in function 'MODULATE'\
\9engine/sound_manager.lua:210: in main chunk"
(6) Lua function '?' at file 'main.lua:926' (best guess)
Local variables:
 _n = nil
 _a = nil
 _b = nil
 _c = nil
 _d = nil
 _e = nil
 _f = nil
 touched = nil
 (for generator) = C function: 0x2b12a818
 (for state) = nil
 (for control) = string: "threaderror"
 name = string: "threaderror"
 a = Thread: 0x0251b27507d0
 b = string: "engine/sound_manager.lua:62: Could not read Ogg bitstream\
stack traceback:\
\9[C]: in function 'newDecoder'\
\9engine/sound_manager.lua:62: in function 'PLAY_SOUND'\
\9engine/sound_manager.lua:151: in function 'RESTART_MUSIC'\
\9engine/sound_manager.lua:117: in function 'MODULATE'\
\9engine/sound_manager.lua:210: in main chunk"
 c = nil
 d = nil
 e = nil
 f = nil
(7) global C function 'xpcall'
(8) LÖVE function at file 'boot.lua:377' (best guess)
Local variables:
 func = Lua function '?' (defined at line 909 of chunk main.lua)
 inerror = boolean: true
 deferErrhand = Lua function '(LÖVE Function)' (defined at line 348 of chunk [love "boot.lua"])
 earlyinit = Lua function '(LÖVE Function)' (defined at line 355 of chunk [love "boot.lua"])
modern kindle
#

hi srock

brittle yacht
# brittle yacht ```Oops! The game crashed: Thread error (Thread: 0x0251b27507d0) engine/sound_m...
    key = "music_jason", 
    path = "music_jason.ogg",
    pitch = 1,
    volume = 0.6,
    select_music_track = function()
        if G.GAME.blind and not G.GAME.blind.disabled and G.GAME.blind.name == 'boss_jason' then
            return true end
    end,
})

SMODS.Atlas {
    key = "jason",
    path = "jason.png",
    px = 34,
    py = 34,
}

SMODS.Blind {
    name = "boss_jason",
    key = "boss_jason",
    atlas = "jason",
    mult = -10,
    dollars = 20,
    discovered = true,
    loc_txt = {
        name = 'Jason',
        text = {
            'Base Mult is -10',
        }
    },
    boss = {  min = 1 },
    boss_colour = HEX('654c45')
}```
modern kindle
#

arent blinds bl_modprefix_blindname

#

or am i nuts

primal robin
#

yes it is

slim ferry
primal robin
#

It's, well, default value. If you want to adjust conditionally, you can use this function

#

Function is optional tho

slim ferry
#

so its like for if you wanted to change the weight through outside sources? (like ghost deck does or smth)

faint acorn
#

anyone got advice on how I can make a new edition?

slim ferry
#

oh wait nvm i think im stupid

#

nvm i have no idea what causes this

normal crest
#

and loc_vars

slim ferry
normal crest
#

Do you add your own colors to G.ARGS.LOC_COLOURS

slim ferry
#

i didnt make any colors so no

normal crest
#

Does it happen only on your joker, or when you hover over any joker

slim ferry
#

any joker

normal crest
#

do you define any rarities, gradients, consumabletypes or suits somewhere in your code

slim ferry
#

i do

normal crest
#

can you show me how you define them

slim ferry
normal crest
#

remove the = in between rarity and {

slim ferry
#

ah i see

fathom void
#

ok so what do i do if my mod doesnt load

slim ferry
#

what does your mod json file look like

sharp marlin
fathom void
slim ferry
#

do you use multiple lua files in your mod?

fathom void
#

there's 3 that should be loading right now

slim ferry
#

do you do assert(SMODS.load_file("<file path>"))() for each file?

#

in the main file

fathom void
#

no, mostly bc i wanted to use different files for each thing i wanted to add

slim ferry
#

you need to have something like this to load anything outside your main file

#

one for each file that you want to load that isnt the main file

fathom void
#

what if id rather not have dozens of different lines all loading like 1 file each

slim ferry
#

vanillaremade does it the exact same way so i dont think you have a choice

#

if there is another option then i dont know it

vague crest
#

i think celeste card collection does it in a different way lemme check

#

since it has individual lua files for each joker

normal crest
#

you can use NFS.getDirectoryItems(SMODS.current_mod.path) to get a list of all the files in your mod directory

vague crest
#

yeah it does some crazy stuff

fathom void
#

im still having the issue of not actually seeing the mod in the modlist though

normal crest
#

What does your mod folder look like

fathom void
#

these are the 4 things i have in there right now
assets is mod assets, things is for stuff thatll actually be in the mod

normal crest
#

Do you have file extensions enabled in your file explorer

fathom void
#

i basically always have that turned on

normal crest
#

And your mod is in Mods/your mod name/avensmod.json right

fathom void
#

yeah

normal crest
#

"author": ["Aven"],

fathom void
#

ok that got it to actually load now lol

north lodge
#

Err, this is Lua, a table not an array

red flower
#

<@&1133519078540185692>

fathom void
#

<@&1133519078540185692>

north lodge
#

Beat me to it

chrome widget
#

Mods, kill it

karmic creek
#

ahooOOOOga

chrome widget
#

Im the only person allowed to be sexy here

fathom void
#

death
awesome

chrome widget
#

also yeah this is what I do

red flower
#

this is what i do

primal robin
slim ferry
#

what the hell is that

red flower
#

lovaly

chrome widget
#

How do module patches work again? I've never rlly used em

fathom void
#

mostly just depends on which loading system would be best for me considering that im planning on making a new lua file for every joker/consumable/etc i add

primal robin
#

I preffer controls what I load even with SMODS

#

So for blinds I have list of blinds to load

#

This helps load all things I need and not load temp or old stuff

gaunt thistle
#

and it'll inject your modules into new lua contexts

#

which can be useful

primal robin
#

Which means you can freely use any var names

hexed stump
#

Hmm, is there no has_enhancement equivalent for editions and such?

primal robin
#

and local vars

gaunt thistle
#

yeah

#

it's not a requirement to use it but it can make things a lot easier

fathom void
#

now i need to figure out what this means

chrome widget
primal robin
#

mod metadata

hexed stump
#

ty

normal crest
hexed stump
#

figured I was missing something simple

red flower
#

look at all these contexts

primal robin
#

Looks very bad

normal crest
#

hi context

north lodge
#

I love how it's called the graveyard. My inner tcg player is very satisfied with that.

primal robin
#

Because, BanishCalcContext, ReturnedCalcContext, DetachCalcContext...

#

Not.... this...

normal crest
#

How I wish each context was a different type

red flower
chrome widget
#

The GY 🤓 ☝️

north lodge
fathom void
#

mod loads now but the 1 joker i have doesnt yet

red flower
vague crest
#

trying to set up a few simple challenges, is there any reason the third last line here would be crashing?

#

on startup to clarify

primal robin
slim ferry
red flower
vague crest
#

ohhh does it need to be inside it

slim ferry
#

idk

vague crest
#

i assumed since it was defined as a rule in the challenge that i would define the rule outside of it in the same way that like hooks and stuff work

slim ferry
#

i just saw that its like

#

defining a new challenge rule

#

so idk what the issue is actually

red flower
#

if youre defining a custom rule you do need hooks or patches

vague crest
#

ohhhh sad!

normal crest
#

that code would be ran as soon as the game loads, and G.hand doesn't exist there

#

probably not G.GAME either

chrome widget
#

im gonna do some challenge stuff soon, what's this about needing patches for challenge rules?

red flower
#

challenges dont have an apply or calculate so you need to do all the modifications yourself

#

as far as i know at least

fathom void
red flower
#

of course

fathom void
#

cool, thanks

faint acorn
#

tried to make a custom edition and got this error message and got no idea what to do with it

normal crest
#

what's on this line 'consumables/limit.lua:36' (from mod with id carrotscontributions)

primal robin
# red flower how

If it works properly, just extend CalcContext class or calculate function type with your own things
In worst case: define type of calculate function manually and use it

#

To define own contexts use @alias

-- @alias BanishCalcContext { a: boolean, b: string }
-- @alias ResurrectCalcContext { c: boolean, d: string }
-- @alias JojousCustomCalcContext BanishCalcContext | ResurrectCalcContext 
fathom void
#

ok what

primal robin
red flower
fathom void
#

oh wait i forgot a few commas lol

#

awesome it works now
i should probably also make a mod icon though tbh

red flower
fathom void
#

is the base mod icon size 24x24?

red flower
#

34x34

fathom void
#

alr

primal robin
#

???

normal crest
faint acorn
red flower
# primal robin

ohh i get it
it would still be annoying because there are many shared keys and i have to come up with a name for each context

vague crest
#

do .toml files in the lovely folder load automatically or do i need to do extra stuff to initialize them

primal robin
#

Ideally at a time context must be one specific type

#

Otherwise it's kinda unpredictable

#

Shared keys is fine tho

red flower
#

yeah the problem is me having to write the types

#

for no benefit other than it looking a bit nicer

primal robin
#

It's okay when you do this from beginning

#

Rn yea it's kinda refactor

#

Do this or not up to you

#

But you get the point

#

How it should look ideally

red flower
#

if smods did it i would

fathom void
#

ok how do i atlas mod icons

red flower
#

what does this extension have with commas

sturdy compass
#

😭

#

I haven’t had any issue with hanging commas like that tbh

primal robin
#

I need somehow make extension limit line in 140 instead of 80

#

Because in 80 I feels uncomfortable

#

Still using no types tho

vague crest
red flower
#

youre missing the manifest

fathom void
vague crest
#

is there an example of a mod that would have that? im not really sure where to look

red flower
#

any

#

its at the top of the lovely file

vague crest
#

OH i see

#

i was scrolled down 😭

#

tysm

gaunt thistle
vague crest
#

IT WORKS

fathom void
#

now how do i make it say 1 in 3 instead of nil in nil hmmmm

gaunt thistle
#

the other fields don't do anything haha

red flower
#

smh

vague crest
#

only thing thats confusing me is that this bit isnt displaying in game? the rules field is blank

#

is there an extra step im missing

red flower
vague crest
#

cool cool ok

red flower
faint acorn
normal crest
hasty mist
#

bump yet again, im genuinely desperate to fix this, i dont understand what im doing wrong

normal crest
#

which should be in your metadata

faint acorn
vestal magnet
#

i'm thinking of making a deck that starts the run with 2 negative eternal jokers (randomly chosen) but i don'tknow how to make that happen

wooden nexus
#

question: what's the context for right after scoring?

daring fern
wooden nexus
#

i'll try that, thanks

vague crest
# red flower

am i being silly here, its crashing on startup and im not sure which aspect of this is wrong from the screenshots

#

i didnt even think localization stuff COULD crash which is crazy to me

wooden nexus
# daring fern `context.after`?

strange, nothing's happening.

I wanted to have a 1 in 4 chance of destroying the card after it scores and it hasn't happened

#

ok

vague crest
wooden nexus
#

it deleted a card in my deck not the joker itself

daring fern
placid star
#

can you manipulate the spawn rate of specific jokers? so for example when a rare spawns it has a higher chance of being an obelisk than other rares

wooden nexus
glass crown
#

how do i check what deck is being used?

wooden nexus
#
        if context.destroy_card and context.cardarea == G.play and context.destroy_card == card and
            SMODS.pseudorandom_probability(card, 'vremade_glass', 1, card.ability.extra.odds) then
            card.glass_trigger = true -- SMODS addition
            return { remove = true }
        end
    end,```
#

This is their glass card calculate

wooden nexus
#

I'm trying to put the effect on a joker

daring fern
#

That's specifically for playing cards.

wooden nexus
#

Yes i know

#

I'm trying to convert it into joker effect

red flower
glass crown
#

👍

#

thank youuuu

wooden nexus
#
        if context.joker_main then
            return {
                mult = card.ability.extra.mult,
                xmult = card.ability.extra.xmult,
            }
        
        end
        if context.after then
            if  SMODS.pseudorandom_probability(card, 'glass_joker', 1, card.ability.extra.odds) then
                card.glass_trigger = true
                return { remove = true }
            end
        end

    end,
red flower
#

{ remove = true } only works in context.destroy_card (or discard)

wintry solar
#

and only for playing cards

wooden nexus
#

yeah i changed it from destroy_card to after after it didn't work

#

so what do i do then?

wooden nexus
#

That didn't work for me so

#

or i'm just getting unlucky

#

oh it's gone

glass crown
#

is it possible to change the nominal value of a rank (specifically a new rank) with like an if/then statement somehow?

wooden nexus
#

nvm, the odds work ig

#

I mean i wanna have the glass destruction but oh well, better than nothing

red flower
#

you can do card:shatter()

wooden nexus
#

before or after smods.destroy_cards?

red flower
#

instead of

wooden nexus
#

ok

vague crest
#

this is getting silly i have no idea why this is crashing

#

i thought it might be an other mods issue sorta thing but i disabled everything and its still happening

red flower
#

oh sorry i didnt see the crash let me check

vague crest
#

it IS definitely because of the localization file i commented out everything and it loads

wooden nexus
#

oh it shattered before it scored but still scored

daring fern
vague crest
#

i figured that bit out yeah

#

still crashes

#

this is what i have currently

red flower
#

may i see the new crash

vague crest
red flower
#

idk that looks fine to me now

wintry solar
#

uhh let me check the functions to make it shatter, hold on

wooden nexus
wintry solar
#

no dont do that

#

use destroy cards

wooden nexus
#

I don't want destroy cards

#

i want glass shatter

wintry solar
#

you do

wooden nexus
#

destroy cards does not give me glass shatter

vague crest
#

do localization files also need to be defined somewhere that i didnt know about or something?

wintry solar
#

it does

vague crest
#

i guess that wouldnt matter actually it is loading its just crashing over it

wintry solar
#

that's why I said hold on?

red flower
#

im guessing hooking SMODS.shatters?

wooden nexus
#

Oh i didn't see that

normal crest
wooden nexus
#

UGH hooking... I hate hooking it's a pain

normal crest
#

default can also be en-us.lua

wooden nexus
#

lol

wintry solar
#

yeah hooking SMODS.shatters is the way to do it right now

vague crest
wintry solar
#

although shattering misses the joker type destroy context anyway

#

so I suppose it doesn't matter

wooden nexus
#

and where do i put the hook or whatever

red flower
#

outside the joker

local smods_shatters_ref = SMODS.shatters
function SMODS.shatters(card)
    if card.config.center.key == "j_modprefix_key" then
        return true
    end
    return smods_shatters_ref(card)
end
wooden nexus
#

i'm running on like 5% energy

wooden nexus
red flower
#

yes

wooden nexus
#

ok

normal crest
vague crest
#

yeah

#

ok i checked its specifically this line that causes the crash

#

commenting it out makes it work fine 😭 what

#

i mean it doesnt define it obviously but

red flower
#

did you change anything in the challenge

#

did you remove the prefix there?

vague crest
#

this is what it looks like rn

normal crest
#

i don't think it has anything to do with the challenge, it's crashing when parsing the localization file

#

do you have only one localization file

vague crest
#

yeah

normal crest
#

are you getting the exact same crash

vague crest
#

yup

normal crest
#

can you send it again

vague crest
#

yeah one sec

#

its uh

#

its working now 😭

#

go team

normal crest
#

well, problem solved i guess

vague crest
#

had to give the laptop a good shake

wooden nexus
#

the shattering works now

#

another enhancement done

glass crown
#

whats the best way to add a card to the deck?
trying to make a deck that starts with four more cards of the new rank ive created for the suits and im just trying to determine the best way to add the card to the deck cleanly

red flower
glass crown
#

ah, thats what i was doing, just had the wrong area

#

okay so, that appears to not have worked (i moved the cards up there, they were originally just like on top of the deck)

normal crest
#

try

local card = SMODS.create_card { set = "Base", rank = "Queen", suit = "Spades" }
G.deck:emplace(card)
table.insert(G.playing_cards, card)
glass crown
#

placeholder sprites, they're Extraterrestrial cards

wooden nexus
#

oh

#

thought it was a rank

normal crest
#
in_pool = function(self, args)
  if args and args.initial_deck and G.GAME.selected_back.name == 'b_prefix_key' then
    return true
  end

  return false
end
glass crown
misty radish
#

Does anyone know how to change the Profile Prefix?

glass crown
chrome widget
#

Hmm is there a way to set the minimum padding on description boxes?

#

For example I have this separate clause in its own box though I wish I could set the box to be shorter for only a single line

red flower
#

I don't think so but I would love to be wrong because I need that too haha

chrome widget
#

Mmmm yeah

glad osprey
#

rate it

vague crest
#

ooh nice nice

red flower
#

dammit still behind by 10... sisyphean task

vague crest
#

if i wanted to make card variables on a joker change if you have a challenge enabled, what would the syntax for something like that be?

glad osprey
#

change it inside of the loc_vars code

red flower
#

you would need to change it in set_ability

wind steppe
#

How would I retrigger used planet cards a specific number of times?

real night
#

how do you balance like 25% of chips and mult

#

like how do you balance a specific percentage of chips and mult

glad osprey
#

would you individually remove 25% from each or 25% total

daring fern
brisk atlas
#

How would I make a boss blind only appear if a condition is met?

wind steppe
#

from SMODS.Blind documentation

vague crest
#

ok this is so weird and niche but i have a joker that is not inherently eternal compatible and i want to give an eternal version of it for a challenge but it wont start eternal

glad osprey
vague crest
#

wait nevermind this works so well LMAO

brisk atlas
#

but yeah

wind steppe
#

How would I retrigger used planet cards a specific number of times?

glad osprey
#

how did i never realize that 😭

glad osprey
#

at least I think

fathom void
#

how hard is it to make https jokers

near heart
#

how can i get this to count the amount of a specific joker you ahve

wind steppe
daring fern
wooden nexus
#

Odd question: how do i remove a badge?

near heart
wind steppe
#

will return the number you have

#

of that joker

near heart
#

ohhh ok

near heart
#

thanks

wind steppe
near heart
#

im getting mixed messages

wind steppe
#

new discord feature idea: remove reactions from people you've blocked

wooden nexus
formal parrot
#

Stone

wooden nexus
formal parrot
#

What

wooden nexus
#

don't question it

#

I would go into modding-chat but No.

#

Just no.

formal parrot
#

Definitely chaos

wooden nexus
#

I rather quit balatro modding than go into modding chat, rn

formal parrot
#

We pretty chill

long sun
#

what mod is causing this? i just updated ArtBox, Bakery and Galdur

daring fern
long sun
#

wait maybe i didn't update Galdur, mm

#

okie doke

#

oh it was Multiplayer, that's the third one

long sun
gaunt thistle
daring fern
gaunt thistle
#

I guess it's us primetime so

long sun
#

disabling it makes everything fine though

#

so, whatev

#

thanks ^^;

normal crest
#

and the remove the last line

long sun
#

hokai

normal crest
#

for some reason they pushed a change that just adds this

#

just remove that e

long sun
#

PFFFFFFF WEIRD

long sun
#

nope, no change

#

any hs to be removed? :>

normal crest
long sun
final jewel
#

I want to add a Joker to the main menu. I create the joker but how am I supposed to add it

normal crest
# long sun yup

that has to be the problem tho, the smods part of the multiplayer mod isn't loading

final jewel
chrome widget
#

Progress on my face cards weh

final jewel
final jewel
#

Can I copy it ?

daring fern
final jewel
#

oh ok cool

#

I really like people that go straight to the point

#

Why am I having a big gap between the card

normal crest
#

try removing this line

final jewel
#

ok

#

it was that thx

primal robin
normal crest
vague crest
#

currently struggling with hooks, trying to make selling a card in a challenge cost an additional 10 dollars, am i on the right track at all?

normal crest
vague crest
#

or i guess patches maybe thats the word here idk

final jewel
#

I just make this number smaller

normal crest
#

also you don't have to use a patch if that's where you want your code to go

#

you can hook the function instead

vague crest
#

oh ok

#

this does work though 🙏 tysm

#

whats the difference between pattern and regex exactly?

unborn bay
#

pattern matches for the exact string

#

regex allows you to do that + more while being more complicated

vague crest
#

hm ok sick

normal crest
#

and the reason your regex one didn't work is cus stuff like () doesn't match for exactly parenthesis

vague crest
#

ohhhh

subtle merlin
#

how does one make a shader? I'm looking at examples and the resources on the SMODS docs but it makes no sense to me (no one told me i'd have to learn 3 coding languages for balatro modding -_-)

wooden nexus
#

Okay i can't figure it out. I tried looking on the wiki to no avail, how the heck do i make a joker retrigger a joker? (specifically itself)

daring fern
dreamy thunder
modern kindle
dreamy thunder
red flower
wooden nexus
daring fern
wooden nexus
daring fern
wooden nexus
#

oh

#

thanks

#

Awesome, it works

#

All this for a stupid joke

maiden phoenix
#

Poor Somethingcom

wooden nexus
#

That's the joker

rough furnace
chrome widget
#

wehhh

jolly shadow
wooden nexus
#

yes

bold gyro
#

hey y'all, i'm trying to use the new context, but for some reason this is doing nothing? i'm using the latest smods release (1.0.0-beta-0711a)

calculate = function(self, card, context)
    if context.joker_type_destroyed and not context.blueprint then
      print("hi")
end end```
ivory citrus
#

Anyone know what happen?

long sun
#

is there a way to have multiple ability boxes?

daring fern
long sun
#

how? ^^;

daring fern
long sun
#

ya

daring fern
# long sun ya

Just have each box of text in a table inside the description I think.

long sun
#

ah gotcha! will try

#

how would this work with loc_vars? same as normal, but across multiple strings?

normal crest
#

by that I mean the SMODS.Atlas call

primal robin
#

Salty ghost spotted

long sun
#

oop noooo my sticker

long sun
#

guuuuuuuurand

#

workaround!

#

hooyah!

primal robin
#

oh god your pfp in ktane server kinda... bad?

long sun
#

ya a member there made it ^^;

primal robin
#

I see

long sun
#

it's only there because of that, to be honest

ivory citrus
normal crest
chrome widget
#

Oh wait my scroll hadn't updated. Someone has likely already answered this

bold gyro
long sun
primal robin
#

Multiboxes is kinda new feature

#

Probability one is actually new thing, it creates new meta of jokers which modifies luck

chrome widget
#

Like this!!! It's simple enough, just arrange them in individual boxes

long sun
#

awesome!!!! thanks :D

#

very cool