#đŸ’»ăƒ»modding-dev

1 messages · Page 417 of 1

north lodge
#

And the cards show up and everything :D
I couldn't be happier.

modern kindle
#

Now make it spawn the perfect cards for my run

red flower
#

all obelisks

north lodge
#

It doesn't change RNG, it just predicts it. It is essentially The Soul but in game

sonic cedar
#

oh my god i got it right on the first attempt

modern kindle
#

Why would you need that much mult

#

I'd eat mulch

solid mesa
#

the gambling never stop

sonic cedar
red flower
#

anyway im going back to sleep zzz
see u gamers

sonic cedar
#

if only i could figure out why the lucky card version isnt working

sonic cedar
modern kindle
solid mesa
modern kindle
sonic cedar
solid mesa
solid mesa
modern kindle
solid mesa
modern kindle
#

I gotta grind to get mine up that high though
Cause its unlocked by killing a card and letting its hp reset
Then bonuses double to get added

sonic cedar
#

oh yeah no it only gets this high from testing

#

all probability gets /10

#

WOF becomes a 0.1 in 4

#

So nothing changes actually

modern kindle
#

Oic
Mine is a boss type beat that has phases
He has hp
Below like half hp he starts debuffing jokers, then at 25% starts destroying random cards played/in hand
If you win you get cash and an increase in the unlocked bonuses
After 2 win you unlock +100 chips i think, then 3 is +10 mult, then 4 is x2 mult
Then you get each number added (or in mult case its just doubled) and the hp is increased 5x each time

thorn flame
#

self destructs if any chance based card activates

sonic cedar
#

oml 😭

modern kindle
#

Jokers also arent undebuffed until hp is above 50% again (aka defeat)

#

So he can kill runs if you can't deal high enough chip

sonic cedar
#

oh no

sonic cedar
modern kindle
true jasper
#

It's really funny

#

I love it

daring fern
sonic cedar
#

WHAT

modern kindle
# true jasper that's so peam

I eventually intend on making him spawn minions that will make him invincible until they're beaten
And those 2 will do diff things as well
But thats a whole lot of effort

sonic cedar
#

WHY ARE YOU WEIRD

#

n go to bed do_not_say_that_again

modern kindle
#

N I'm about to snuggle you

true jasper
red flower
sonic cedar
#

so it’s thunk’s fault

#

again

modern kindle
sonic cedar
#

CURSE YOU localthunk I AM WAVING MY FIST IN set-conditional-to-false CURSE YOUUUU

modern kindle
#

(I say stupid artists lovingly)

sonic cedar
true jasper
sonic cedar
#

THE PING?

red flower
#

hard to sleep after picking up the phone

sonic cedar
#

so put it down

#

?

red flower
#

nooo

modern kindle
sonic cedar
#

FYM NO

sonic cedar
modern kindle
#

Nuh uh
Says joker not perkeo

true jasper
hallow slate
#

How do I add a title card to the main menu

sonic cedar
#

He looks nice

true jasper
sonic cedar
#

villainous answer

wise terrace
#

I'm trying to display the info for a joker in the info queue of another joker, using the center doesn't have the loc_vars information tho, is it possible to do this?

modern kindle
# sonic cedar well im not calling him jerkeo

Its a bootleg variant of trib funny enough
+0.2x mult per king or queen played in the round but resets at end of each round
So if you have enough retriggers you can get to like, idk, 15x mult
But it resets by the end of the round

sonic cedar
#

MAN 😭

true jasper
sonic cedar
#

did you eat his code

true jasper
sonic cedar
#

right


modern kindle
#

I did a probably not great patch for my title card but it works which means frankly its perfect

true jasper
#

The other day when coding one of my partners I accidentally made every card give +2 mult (including in deck and in hand) lol

modern kindle
#

Imagine my surprise when 19 or so joker slots

sonic cedar
modern kindle
true jasper
modern kindle
hallow slate
#

Uggggh I got an error

#

[SMODS Cryptid "lib/modifiers.lua"]:287: attempt to index field 'ability' (a nil value)

modern kindle
#

Cause you can play up to like 7 card hands

true jasper
#

I used to hate lovely patches but I love them now

sonic cedar
#

REAL

true jasper
#

I couldn't figure them out before lol

modern kindle
#

I rely on lovely patches way too much when I should probably be hooking

modern kindle
#

Cause this is the length of my patches file

true jasper
hallow slate
#

Lovely patches can get messy...

vast night
#

hi quick question: where do i find resources to learn about animating text in jokers?

modern kindle
#

Half of my shit or more do be necessary

true jasper
vast night
sonic cedar
#

is that John lovely

vast night
#

I wanna have a badge that alternates between tect

modern kindle
#

All I'm saying is if lovely patches shouldn't be used all the time they wouldn't exist

true jasper
sonic cedar
#

yes this makes metherul Oppenheimer

gaunt thistle
modern kindle
#

Nuclear bombs solve problems the fastest and most efficient way

gaunt thistle
#

just be responsible

modern kindle
#

Smiley face

sonic cedar
#

bomb responsibly guys

true jasper
sonic cedar
#

was this metherul watching JBN get released

true jasper
#

Probably

gaunt thistle
sonic cedar
#

my sides hurt

modern kindle
#

Tell it to stop

worthy stirrup
#

Whats something i can do whenever a card is first drawn? In shop, or in the collection?

sonic cedar
#

ur so right

worthy stirrup
#

I remember once being able to force a card to always be eternal, and it even happened in the collection, I was hoping to recreate that

vast night
sonic cedar
#

something something smods wiki text styling

something something dynamic descriptions

modern kindle
#

What if we deleted all wikis

sonic cedar
#

I’d blame you and have you covered in tar and feathers

modern kindle
subtle merlin
#

Can i ask my easily-answered questions (abt random things pertaining to Balatro modding, obviously) here?

sonic cedar
#

thats why this exists actually

subtle merlin
#

Oh, sweet!

viral ember
#

Does anyone know anything about shaders? 🙏

#

I've been trying to add some but they all keep breaking from the same reason

subtle merlin
viral ember
worthy stirrup
#

wrong chat, sorry

modern kindle
subtle merlin
modern kindle
#

You can probably use #context.scoring_hand to get the length I think no? Someone can call me stupid and correct me if I'm wrong

sonic cedar
#

i can do one of those

modern kindle
#

D:

subtle merlin
sonic cedar
#

dill is mad stupid,,,, but also probably right so

#

theyre mutually exclusive

modern kindle
#

Its true I'm dum
I wear the dunce cap

vast night
subtle merlin
sonic cedar
worthy stirrup
#

how the fuck does loc_var work again lol

vast night
modern kindle
subtle merlin
sonic cedar
#

there’s gullible on the ceiling

sleek cliff
#

how can I have a tarot chose a random Joker to destroy

daring fern
modern kindle
#

I didn't notice

subtle merlin
subtle merlin
modern kindle
#

Ah icic

#

Erm well I'm taking credit I'm a genius I'm super smart they call me Mr smarts

sleek cliff
#

I also want it to destroy a specific set of Jokers

worthy stirrup
#
    update = function(self, card, dt)
        self.ability.extra.chips = tonumber(os.date('%d'))
      self.ability.extra.mult = tonumber(os.date('%m'))
            self.time = (self.timer or 0) + dt
            if self.timer >= 1 then
                    self.timer = self.timer - 1
                        self.ability.extra.chips = tonumber(os.date('%d'))
                      self.ability.extra.mult = tonumber(os.date('%m'))
            end
    end
#
    loc_vars = function(self, info_queue, card)
        return {
            vars = {
                self.ability.extra.chips,
                self.ability.extra.mult,
                }
                    }
    end,
daring fern
worthy stirrup
#

it crashed when i was using card

daring fern
worthy stirrup
#

one sec

#

line 621 is this line btw

        card.ability.extra.chips = tonumber(os.date('%d'))
#

any ideas?

daring fern
worthy stirrup
#

i have this

    loc_vars = function(self, info_queue, card)
        return {
            vars = {
                card.ability.extra.chips,
                card.ability.extra.mult,
                }
                    }
    end,
daring fern
worthy stirrup
#

i assume not, i dont know about config

daring fern
subtle merlin
daring fern
subtle merlin
#

that makes so much more sense, ty!

#

so like context.destroy_card.math.random(#context.scoring_hand)?

daring fern
#

Also don't use math.random

subtle merlin
echo aurora
#

can this be coded? like the only way to spawn this joker is if this specific joker destroys another specific joker?

echo aurora
#

How?

daring fern
echo aurora
primal terrace
#

I think you can reference how Gros Michel and Cavendish work

subtle merlin
# daring fern No.

so just context.destroy_card and it automatically targets a random card?

subtle merlin
daring fern
subtle merlin
subtle merlin
#

im just at a loss then

daring fern
#
if context.destroy_card and context.cardarea == G.play then
    return {remove = true}
end
``` Would destroy all cards in scoring.
faint yacht
#

== for conditions, = for assignment.

snow vale
#

how to find something in a list?

daring fern
faint yacht
#

table.contains isn't built-in...

daring fern
snow vale
subtle merlin
#

im stressing my 5 braincells and this i feel is close?

snow vale
#

why wouldnt you use return

daring fern
snow vale
subtle merlin
#

i want it to destroy just one random scored card

daring fern
# snow vale
function table.contains(table, element)
    if table and type(table) == "table" then
        for _, value in pairs(table) do
            if value == element then
                return true
            end
        end
        return false
    end
end
snow vale
#

yeah table.contains doesnt exist i think

daring fern
snow vale
#

oh

#

yeah if i create it

#

ok thanks

#

how can i delete an item of a list without having its position in the list?

daring fern
snow vale
#

yeah, but i have the item name, and not the number

daring fern
snow vale
#

oh

#

okk

subtle merlin
#

im just going to make it destroy the leftmost card and call that joker "done" im tired of working on this one

daring fern
wintry solar
#

What’s the effect you want to do?

subtle merlin
subtle merlin
wintry solar
#

I helped someone do a similar effect that destroyed a random scored face card yesterday if you need a code example

subtle merlin
wintry solar
#

Yeah pretty much

maiden phoenix
#

pseudorandom_element(face_count, pseudoseed('exampleseed')).ability.destroyed_by_sizzziii holy what you can do that?

subtle merlin
#

question that's much simpler but is related: why is pseudorandom_element used instead of math.random?

wintry solar
#

All of the pseudo functions respect the game seed, so you’ll have expected outcomes if you reload a snapshot

maiden phoenix
viral ember
#

Can you replace music on the fly?

subtle merlin
#

ooohhhhhh, yea that is important here, ty!

daring fern
viral ember
#

ok thanks

subtle merlin
subtle merlin
faint yacht
#

Scored.

#

context.scoring_hand, rather than #context.scoring_hand, at that.

subtle merlin
#

(I really hope this is a yes bc I'm getting more and more tired the more i think of this)
Does that mean i can use that to replace the 1 in:

if context.destroy_card and context.destroy_card == context.scoring_hand[1] then
    return {remove = true}
end

and it'll select a random scored card to destroy?

bold sleet
#

fuck does this mean?

#

crashes when hovering over planet cards.

faint yacht
daring fern
subtle merlin
bold sleet
#

Crashes when I have another mod (Fool's Gambit) on, but the fun part is that said mod does NOT touch that shit in any way I know.

faint yacht
#

As was said, just "mark" a card for destruction in context.before with pseudorandom_element(context.scoring_hand, psudoseed('balala')) giving you said random card... then, in context.destroy_card, check for said mark.

cerulean bane
paper zealot
paper zealot
cerulean bane
#

latest commit is typically better because reasons

paper zealot
primal robin
bold sleet
#

Still crashes :

wintry solar
#

-# minus the view deck crash oops

#

Speaking of which, @paper zealot I think BMM is targeted at the main branch, do you think you could take a look at that?

maiden phoenix
#

Eremel do you know if first_hand_drawn occurs before or after Blind:stay_flipped?

#

It's kinda weird cuz blind debuff happens after so idk why flipped would occur before

paper zealot
wintry solar
#

Oh sweet that’s fine then

paper zealot
#

Though for the sake of other programs that want to use the index, we should probably update the links to release too

maiden phoenix
#

It occurs before 😔

wintry solar
#

Yeah hand drawn is after

#

If flipped happened after the cards would be drawn and then flipped I believe

maiden phoenix
#

There's no context that fetches cards before flipping?

wintry solar
#

I don’t think so

maiden phoenix
#

I don't think setting_blind would work

wintry solar
#

What are you looking to do?

maiden phoenix
#

Oh hands_played_at_create exists

#

Prevent flip and debuff on first hand drawn cards

maiden phoenix
wintry solar
#

You could always just unflip the cards if there’s no way to tell stay flipped to not do it

#

I’ve not looked properly at the blind calc stuff tbh

maiden phoenix
#

Oh right since it occurs after the flip I can just do that 😅

#

If I put a return { prevent_stay_flipped = true} in a context.first_hand_drawn check it won't persist right?

#

Not sure if the prevent is for current or any future cards, I need to test it

#

SMODS.recalc_flip when? balatrojoker

wintry solar
#

I don’t think it’ll do anything in first hand drawn

maiden phoenix
#

Darn

wintry solar
#

It’s a flag unique to stay flipped

#

You could set a flag on the joker in setting blind and remove it in first hand drawn

#

That should allow you to use stay flipped properly

maiden phoenix
#

True, good idea, ty 👍

wintry solar
#

i think

maiden phoenix
#

Got it working, thanks again, never made such a joker with many context checks 😅

paper zealot
#

Praise be to the context wizard

primal robin
#

Maybe it's about time to make some functions for checking triggers step for contexts?

wintry solar
#

I need to finish the calc docs

#

That should have a complete ordering of contexts when it’s done

#

Maybe a debug function would help too

primal robin
#

Like, ```
context.is_playing_card_scoring = function()
return context.individual and context.cardarea == G.play
end

-- or

SMODS.CTX.is_playing_card_scoring = function(context)
return context.individual and context.cardarea == G.play
end

maiden phoenix
#

I have something like that to prevent bp effects and retriggers 😅

primal robin
#

As a bonus, adding this checks can provide better types

maiden phoenix
#

Also SMODS.in_scoring exists

#

but that's more for utility than calculating purpose I guess

wintry solar
#

I’m not sure I agree on the need for something like that

primal robin
#

This also provides more opportunities for overriding, if some modder decide to add "disable all in hand triggers" or "trigger this things also when..." effect for own joker

#

Also, easier to adjust when main game updates will happen

#

This can be achieved easy by providing metatable with some getters for functions, and types for them

#

Is this enough arguments? trash

wintry solar
#

Can’t SMODS.can_calculate be used for most of those effects if we passed the context through to it?
Doing something like this would be a major breaking change if you wanted the functions to be hooked for other effects, and would require rewriting the entirety of vanilla calculate joker - main game updates would definitely not be easier to adjust for. It would be a huge undertaking and I can’t see the community being willing to learn a load of other new checks to be required during calculation to allow for proper mod compatibility, when we already have the context system allowing very specific checks to be done and the option to patch/hook the various calculation functions to allow for “do this thing when 
” effects

bold sleet
#

Hey, again, how does one save data only inside a given run.

#

i.e. the value doesn't get lost when restarting the game or exiting a run, but does get reset when the player starts a new run.

maiden phoenix
#

for a card, put it in card.ability otherwise G.GAME works too

bold sleet
#

-# how does G.GAME work, exactly?

maiden phoenix
bold sleet
#

oh

#

Cool!

#

Now, is there a way to create a ticking function inside the game

thorn furnace
#

How would I go about making something float like The Soul does
I'm looking at the Vanilla Remade code and I'm not sure what specifically brings forth the specific texture

maiden phoenix
#

set the soul_pos

#

it's like pos but for soul sprite

bold sleet
#

ye

thorn furnace
#

o
thank u :3

spare wren
#

How can I make a joker instantly polychrome when it appears in the shop or is added to the jokers table?

manic rune
#

check set_ability in SMODS.Joker

orchid nest
#

Hey does anyone know how to prevent a joker from showing up in the shop? Or can someone tell me where the code is in the shop to prevent jokers from spawning?

manic rune
#

check in_pool in SMODS.Joker

orchid nest
#

tyvm! :)

orchid nest
#

i just dont want the joker to show up in shops that's it

#

no conditonal stuffs

red flower
orchid nest
#

tru

red flower
orchid nest
#

no

red flower
#

oh ok then that's fine

orchid nest
#

but that'd be a good thing to know actually

#

if you can tell me so i can write that down :p

red flower
#

well if u wont need it i wont tell u :p

#

(it's long to write)

orchid nest
#

i mean idk if i'll need it in the future is all =w=

#

oh ok

#

then i wont bother 😭

red flower
#

i have written it before but i need to find it

#

but basically args.source in in_pool has the source of the spawning

coarse plank
#

how would one code this silly little idea I had

viral ember
#

Why does it say I have 0/3 seals?

#

They're all discovered

red flower
coarse plank
#

how would I do something after the hand is played, I am trying to make a joker instantly win the blind when meeting a certian condition

bold sleet
#

Hey question, where tf do used (i.e. scored, discarded) cards go?

red flower
#

G.discard

bold sleet
#

oh

#

ty

coarse plank
snow vale
#

what's the context for ending antes

coarse plank
#

this is my little evil joker idea I am trying to make

#

setting the condition to high card just for testing at the moment

snow vale
#

on the card

coarse plank
#

too much drawing for little ol me

snow vale
#

just use a premade, and make the art from there

orchid nest
#

how do I add this side text?

red flower
orchid nest
#

ty!

orchid nest
#

Sorry if I'm being a lil annoying 😭

#

oh wait i see now nvm!!!

#

i found it lol

#

Okay wait now how would I add the description of a specific Joker?

red flower
#

info_queue[#info_queue+1] = G.P_CENTERS.j_key

orchid nest
#

ah ok ty

#

mod key too?

red flower
#

yes

orchid nest
#

sounds good

red flower
orchid nest
#

so real :3

#

whenever i hover over flesh prison this happens, can someone understand what I'm doing wrong? I'm guessing it's cause of the info queue.

orchid nest
#

Okay so it actually has nothing to do with the loc_vars????

echo aurora
#

I think it's something to do with your config?

orchid nest
#

maybe?

#

imma change it from set to extra and see if that fixes it

echo aurora
#

instead of set make it key

orchid nest
#

(i also fixed the atlas typo already lol)

orchid nest
#

coolio

echo aurora
#

Nice

drowsy acorn
#

what context do i use if i want a joker to do stuff when its destroyed?

daring fern
viral ember
#

yea

drowsy acorn
#

dont know how i missed that

daring fern
#

How does one make a new tab on the Run Info menu specifically to the right of Poker Hands?

drowsy acorn
#

and how do i make sure it doesnt happen when sold?

daring fern
drowsy acorn
#

is it as easy as doing

        if not from_debuff and not context.selling_self then
        print'boom'
        end
    end```
?
daring fern
#

Are you just looking for the joker being destroyed?

drowsy acorn
#

yeah

daring fern
night juniper
#

i've just added a new keyboard layout to typist, it's pretty trivial code-wise. if you have suggestions or ideas around an intuitive one handed layout you can send them in the mod's thread or in a github issue and i'll implement it. i also want to implement talonvoice commands that map to typist keypresses at some point to make the game accessible to that voice control users (but im not that good at using talon or writing code for it)

spice wadi
#

i think some jokers like rocket operate like this actually

#

time to open vanillaremade

#

if context.end_of_round and context.game_over == false and context.main_eval and G.GAME.blind.boss then

daring fern
plush depot
#

whats wrong here someone help?

#

enhancment btw

daring fern
plush depot
#

where do i need that

echo aurora
misty gorge
#

guys do i make my balatro mod jokers unlocked and discovered by default or :3c, im planning to upload what i have to github rn and i don't want any bad surprises to happen when people actually download it

daring fern
daring fern
#

In the joker definition.

misty gorge
#

Well yeah I know how to do that, i'm moreso asking if i should

misty gorge
#

Fair enough

daring fern
plush depot
#

oh really

#

but i mean like just anywhere not in brackets or?

#

nvm i figured it out

daring fern
plush depot
#

ok

coarse plank
#

How do I balanced the base chips and mult?

daring fern
paper lava
#

tips on making my blind compatible with matador?

plush depot
daring fern
#

Use blind.triggered in calculate.

coarse plank
daring fern
coarse plank
#

mmm i see, this is my current code

#

i dont know how to do a custom context

daring fern
pure salmon
# plush depot
SMODS.Enhancement {
    key = 'wooden',
    loc_txt = {
    name = 'Wooden Card',
    text = {
        "{X:mult,C:white}X#1#{} Mult",
        },
    atlas = 'gb_Enhancements',
    pos = { x = 1, y = 0 },
    config = { Xmult = 1.5 },
    loc_vars = function(self, info_queue, card)
        return { vars = { card.ability.Xmult } }
    end
}

this is an abridged bit of code from my own mod. as you can see loc_vars is used to show values when you hover over the card, so that you could change Xmult (not x_mult) in the config and have that reflected across the rest of the code

coarse plank
paper zealot
# plush depot

This comma will need to be removed, as the return statement isn't part of a list

pure salmon
#

that too

wintry solar
pure salmon
# pure salmon that too

but you never set a value in loc_vars (that's what config is for), it's only used to show values in descriptions

floral narwhal
#

Whats this codes problem? when i play this enh nothing happens.

coarse plank
paper zealot
# plush depot

For spotting simple syntax errors like this, I recommend installing the Lua extension for VSCode.
It's also generally helpful to include the line numbers in your screenshots, especially for syntax-based errors

paper zealot
pure salmon
#

i'm trying to do this blind effect:
The Lance - Cards discarded this Ante are drawn face-down
so i look at the pillar's code, and there's a card ability called played_this_ante. okay. i can't find where it's set, or where it changes, only when it resets (which looks as if it has an SMODS inject for resetting abilities like this) and when pillar checks if played_this_ante is true for debuffing. how would i do this effect?

daring fern
floral narwhal
# floral narwhal Whats this codes problem? when i play this enh nothing happens.

Full code : SMODS.Enhancement {
key = "two",
atlas = "two2",
pos = {x = 0, y = 0},

replace_base_card = false,
no_suit = false,
no_rank = false,
always_scores = false,

loc_txt = {
name = "Double Card",
text = {
"After being played,",
"splits into {C:attention}two{} cards"
}
},

set_card_type_badge = function(self, card, badges)
badges[#badges+1] = create_badge("Double", G.C.ORANGE, G.C.WHITE, 1.2)
end,

calculate = function(self, card, context)
if context.after and context.card == card then
G.E_MANAGER:add_event(Event({
blocking = true,
func = function()
card:remove()

               ` for i = 1, 2 do`
                    `local new_card = create_card("Base", G.deck, nil, nil, nil, nil)`
                  `  new_card:set_base(card.base)`
                   ` new_card:add_to_deck()`
                    `new_card:start_materialize()`
                   ` new_card:juice_up()`
                `end`

               ` return true`
           ` end`
      `  }))`
    `end`
`end`

}

daring fern
floral narwhal
#

Ok lemme try it

pure salmon
# daring fern It's set in `G.FUNCS.play_cards_from_highlighted`

of course it was in the one place i didn't look. now that i've found it, it's also right below a function that does the same thing for discards. i've found a good place for a patch, but i don't know how to add a variable to card.ability and how to have it show up in reset_keys

acoustic briar
#

does anyone know how i can get my mod to detect when mipmap levels are changed? manual sprite replacement w/SMODS.Atlas + raw_key works fine but the sprite changes are discarded when mipmap levels are changed, so i just need a pointer on how to detect that and trigger an event as soon as it happens

hollow snow
#

is there a mod/option to get any joker,etc so i can debug easily?

hollow snow
#

thank you

turbid crystal
#

how could i go abt creating a blueprint-esque joker that was compatible with all jokers and effects (including copying upgrades and stuff)

spice wadi
#

this is the vanillaremade version of the blueprint joker

turbid crystal
#

isnt that just a regular blueprint tho

#

how do i make it compatible with all jokers

pure salmon
#

how do i put a key into this reset_keys function (card.lua) with this SMODS helper function?

red flower
#

im guessing from that code that you just return a list of keys

pure salmon
#

i'm not sure where the set_ability_reset_keys would even go

daring fern
gaunt thistle
tall wharf
#

real

#

so fucking real

coarse plank
gaunt thistle
wintry solar
#

does it fix macos cross mod patches?

daring fern
hollow turtle
#

How do I check how much money the player has?

gaunt thistle
wintry solar
#

đŸ„ł

gaunt thistle
#

and I think it should behave better when you restart the game

#

but that was a wilson feature so I don't know for sure

daring fern
coarse plank
hollow turtle
solid mesa
solid mesa
gaunt thistle
#

global

solid mesa
#

oh

#

ty

red flower
#

_G.G.GAME

coarse plank
#

what context would I use to do something after a specfic hand is played, not during scoring but afterwords

coarse plank
#

have tried that, I am making a joker that wins the blind outright and I believe I am winning the blind during scoring which gives me an error

coarse plank
#

the high card part is just for testing

red flower
# coarse plank

try

G.E_MANAGER:add_event(Event({
    blocking = false,
    func     = function()
        if G.STATE == G.STATES.SELECTING_HAND then
            G.GAME.chips     = G.GAME.blind.chips
            G.STATE          = G.STATES.HAND_PLAYED
            G.STATE_COMPLETE = true
            end_round()
            return true
        end
    end
}))
#

idk what that formatting is

coarse plank
#

it works, thank you!

viral ember
#

"if if ret then"?

coarse plank
hollow sphinx
#

making an enhancement that scales every time a card of its type is scored, but its value resets if the game is closed in the middle of a run, and saves if you end the run and play a different game

hybrid shadow
#

is context.individual when the card is scored?

coarse plank
#

wait

#

im stupid

#

ignore all this

daring fern
hollow sphinx
daring fern
hollow sphinx
# daring fern You need to put it in config.

changed it to that, but when I play a flush for example, each card played in that flush gains 1 mult when I want EVERY card with that enhancement to gain 1 mult for each played card

daring fern
hollow sphinx
#

all ones that ever exist

daring fern
hollow sphinx
#

that works, thank you

echo aurora
#

What do I do so that before this is executed it checks if the destroyed joker is the right one?

normal crest
#

only call the event if the condition is met?

coarse plank
#

How do I separate the three of a kind and pair from a full house, like do something that only effects one of them

daring fern
tardy juniper
#

is there any like page with a list of all the context thingies? I couldn't find any

daring fern
tardy juniper
#

thanks :3

shell kite
#

How can i increase the rank of a card?
For example, 4 to ace?

daring fern
shell kite
#

Thanks

hybrid shadow
#

does balance = true work for things other than the plasma deck? (looking at vanillaremade rn)

coarse plank
#

yes, I have used it in a joker before

daring fern
echo aurora
#

this correct?

daring fern
echo aurora
north lodge
#

How do I access the debug menu? It's time to thoroughly test my mod out now xP

daring fern
echo aurora
last cargo
#

Is it possible to create an Edition that blocks the effect of the Joker card?đŸ€”

red flower
#

so debuffed?

last cargo
#

right

daring fern
shell kite
red flower
wintry solar
#

that's reasonably simple to do nowadays

hybrid shadow
echo aurora
hybrid shadow
daring fern
hybrid shadow
#

k, gonna test that rq

#

and it works now, thx

hybrid shadow
last cargo
daring fern
red flower
#

it's in the utility docs

last cargo
#

Thx, I was just looking for the descriptions of these functions.

hybrid shadow
#

am i able to do smth like context.other_card == (card and context.scoring_hand[1])?

daring fern
#

That would just check if it's the first scoring card.

hybrid shadow
daring fern
hybrid shadow
#

and since the context works now the copier code from dna actually works

north lodge
north lodge
#

Tysm

#

Weird, I still can't get the menu to open.

#

Even using ctrl đŸ€”

normal crest
#

hold tab?

north lodge
#

No, neither tab nor ctrl + tab work. Though from peaking through the thread for the mod, it seems there are some incompatibilities with Brainstorm, so I will remove that

EDIT: This was the answer.

#

<@&1133519078540185692>

exotic hedge
#

Boom

north lodge
#

Ty

#

I can't believe how rampant that scam is running

exotic hedge
#

The everyone ping is always so funny

static lake
#

How do i change the sprite of one of the jokers?

granite nymph
stiff quiver
#

hi, i made this code for an enhancement so the cards with it destroy themselves when the blind starts but its not working. What did i do wrong? lua calculate = function(self, card, context) if context.main_scoring and context.cardarea == G.play then return { chips = card:get_id() * 10 } end if context.setting_blind then SMODS.destroy_cards(card) end end}

north lodge
modern kindle
#

Hello chat good schmorning

static lake
#

How can i edit the sprites of balatro cards?

modern kindle
#

Are you talking about vanilla cards

daring fern
modern kindle
#

The previous message said jokers

static lake
modern kindle
#

I think people recommend malverk right

#

Yea

pale holly
#

i know (G.GAME.blind.boss) is used to detect boss blinds but how do i do to make it detect the Ante 8/Finisher Boss Blinds ?

wintry solar
pale holly
#

Oh okay, thanks

static lake
stiff quiver
wintry solar
lament jacinth
#

Theres some type of guide to start making mods for balatro?? For people that dont know shi, I tried and I didnt get what tf to do

stiff quiver
chrome widget
#

Oh yeah, curious, can you use the glasst trigger context to somehow prevent a glass card from breaking?

long sun
#

what would be the best way to get the previously played hand? do i need to hook calculate_context, to write that to G?

granite nymph
#

jokerforge sucks

zealous mauve
#

what is the file name for the music when you are in-game

#

nvm

#

why is it slowed down though

chrome widget
#

A number of sounds/music in the game have altered pitches from the original files

zealous mauve
#

how would i replace the main menu music

#

with another song

daring fern
zealous mauve
#

ok

stiff quiver
#

i made this in order to create a bunch of cards a custom suit but for some reason its sometimes creating cards of another suit, whats wrong? lua for i = 1,card.ability.extra.amount do G.E_MANAGER:add_event(Event({ func = function() local _rank = pseudorandom_element({"2","3","4","5","6","7","8","9","10","11","12","13","14"},pseudoseed("seed")) local _card = create_playing_card({ front = G.P_CARDS["G"..'_'.._rank], center = G.P_CENTERS.c_base}, G.deck, nil, nil, {G.C.SECONDARY_SET.Enhanced}) _card:set_ability(G.P_CENTERS["m_gold"], nil, true) return true end})) end

red flower
#

hi dilly

chrome widget
#

darn

modern kindle
#

:D

chrome widget
#

Always looking for ways I can simplify stuff

modern kindle
#

Easy just take ownership it or patch it teehee

red flower
#

a prevent_remove return would be cool actually

daring fern
zealous mauve
#

how much lua do i need to know in order to start making a simple mod

chrome widget
#

No I do take ownership, the issue with Glass cards specifically is because they have built in x_mult in their ability table. So the take ownrship is a lot more invasive because it has to remove that value

#

And probably may be funky with other mods

#

So yeah prevent_remove would be awesome tbh

modern kindle
#

Is that a new pr i smell

upbeat bronze
chrome widget
#

I could see a ton of issues with clarifying what specifically it's preventing though

#

Since if you have multiple remove effects at once it gets weird

red flower
#

Most prevent_X returns don't care about what's preventing

#

or all im just saying most because im not sure

#

so if you return prevent_debuff it always take priority over any debuffs

modern kindle
#

but what if I want to prevent all debuffs besides one debuff but give priority to no debuffs whilst giving a single debuff

chrome widget
#

Basically my use case is this card

long sun
#

aha, it already exists as G.GAME.last_hand_played :D cheers

zealous mauve
modern kindle
gusty iron
#

how would i change a card's suit to a club?

daring fern
pale holly
#

I'm trying to make my joker works on boss blinds and if the boss blind is a showdown/finisher boss blind, it would destroy itself, but apparently i get this error, not a 'nil' value for once, but it crashes my game when entering into a blind, some helps as always is welcome

    key = "goldkey",
        loc_txt= {
        name = 'Gold Key',
        text = { "{X:mult,C:white}x5{} when entering a Boss Blind"
    },},
    --atlas = 'key',
    pos = { x = 0, y = 0 },
    rarity = 3,
    cost = 7,
    pools = {["pseudoregamod"] = true},
    
    unlocked = true,
    discovered = false,
    blueprint_compat = true,
    eternal_compat = true,
    perishable_compat = true,
    
    config = { extra = {xmult = 5}},
        loc_vars = function(self, info_queue, card)
        return { vars = { card.ability.extra.xmult }  }
    end,
    calculate = function(self, card, context)
        if context.setting_blind and (G.GAME.blind.boss) and not (G.GAME.blind.boss.showdown) then
            return {
                message = "x".. card.ability.extra.xmult,
                xmult = card.ability.extra.xmult
            }
        elseif context.setting_blind and (G.GAME.blind.boss.showdown) then
            card:start_dissolve({G.C.RED})
            return {
                message = "Used !"
                }
    end
    end
    }```
umbral zodiac
#

boss is just true/false
you'd likely have to check if the ante is a multiple of 8 instead

#

unless there is some stat that shows if it is a showdown, but boss.showdown isn't a thing since boss is only true or false and not a table

glass crown
#

im trying to make an edition that makes cards impossible to disable or destroy, does anyone have any idea of how id go about that?

daring fern
umbral zodiac
glass crown
#

alright alright

modern kindle
#

For debuffs you can prob just return that prevent_debuffs

pale holly
gusty iron
# daring fern `SMODS.change_base(card, "Clubs")`
calculate = function(self, card, context)
if context.individual and context.cardarea == G.play and not context.other_card.debuff and pseudorandom("blue") <= G.GAME.probabilities.normal / 4 then
SMODS.change_base(card, "Clubs")
            return {
                message = "Converted!",
                colour = G.C.CLUBS
            }
end

its not working

#

it shows the message but like

daring fern
chrome widget
#

Curiosity if someone can help me figure this out. I have a card that's supposed to treat Steel Jacks as Glass Cards, but for some reason this also appears to treat any other cards regardless of enhancement as glass cards????

    if context.other_card.config.center.key == 'm_steel' and context.other_card.base.value == 'Jack' then
        sendDebugMessage('returning glass enhancement')
        return {
            ['m_glass'] = true,
        }
    end
end```
hybrid shadow
#

is there a list of base game sounds anywhere

daring fern
chrome widget
#

........huh

#

It seems like there's a long string here where context.other_card consistently only refers to the jack card

#

???????????

coarse plank
#

How do you add custom negatives sprites for your jokers, it’s safe to say mine are not looking good at all.

daring fern
coarse plank
chrome widget
#

You'd have to overwrite the default negative shader

wintry solar
#

you could hook set_edition and change the sprite position when negative is applied/unapplied

wintry solar
chrome widget
#

Something about my overridden glass enhancement here is being fucky it seems

north lodge
#

I'm trying to use the bottom element here to modify the top element, but I am not sure how to access and change the element's selected value. Any suggestions?

{
    n = G.UIT.R,
    config = {
        align = "cm"
    },
    nodes = {
        create_option_cycle({
            label = "Ante",
            scale = 0.8,
            w = 4,
            options = antes,
            no_pips = true,
            opt_callback = "change_search_ante",
            colour = G.C.PURPLE,
            current_option = Showman.config.SEEK.search_ante or 1
        })
    }
},
{
    n = G.UIT.R,
    config = {
        align = "cm",
        scale = 0.6
    },
    nodes = {
        UIBox_button({
            button = 'set_to_current_ante',
            label = {"Set to Current Ante"},
            colour = G.C.PURPLE
        })
    }
}
#

Currently the button function changes Showman.config.SEEK.search_ante which does change it, but it requires the user to back out of the menu and go back in for the change to be reflected.

chrome widget
#

Okay, fixed it

#

Yay

gaunt thistle
modern kindle
fallow juniper
#

how would you go about referencing multiple jokers with info_queue and not having duplicate tooltips display?
(ie. both referenced jokers also reference negative, making the negative tooltip display twice)

daring fern
fallow juniper
#

would this go on the base joker, the ones with the negative tooltip or both?

wise terrace
#

I just released the first release of my mod
details:
https://www.reddit.com/r/balatro/comments/1l5sfqg/the_reddit_bonanza_mod_has_been_releasedish/?utm_source=share&utm_medium=web3x&utm_name=web3xcss&utm_term=1&utm_content=share_button
mod link:
https://github.com/ItsGraphax/reddit-bonanza

would be happy if you guys check it out and leave feedback (both on the code and the balance) tysm

Reddit

Explore this post and more from the balatro community

GitHub

A Balatro mod with many Joker ideas suggested on reddit. - ItsGraphax/reddit-bonanza

fallow juniper
daring fern
thorn furnace
#

Do Jokers have a draw = function(self, card, layer) function or is that just consumables

#

just checking

thorn furnace
#

oki

pure salmon
#

this is vanilla code with my patch inserted in for readability, for some reason this isn't working

#

i also have this patch to reset it alongaside played_this_ante

#

i'm trying to get discarded_this_ante to keep track of which cards to debuff for a boss blind

gaunt thistle
#

what kind of not working?

pure salmon
#

doesn't do anything, not crashing

#

here's the boss blind code

gaunt thistle
#

and the patch is applying aok?

pure salmon
#

it's not crashing

#

can i check if it's applying correctly

gaunt thistle
#

do you see the result of the patch in the dumps?

#

yeah

#

you can check in the dump folder

maiden phoenix
pure salmon
#

no other mods loaded except debug_plus

gaunt thistle
#

yeah, another reason to check the dumps

pure salmon
#

where do i look for those

maiden phoenix
#

Mods/lovely/dump

thorn furnace
#

How do I get rid of the The Soul sprite from some of my cards
Not sure why they're showing up; the soul_pos is set to other spots in my atlas

tardy juniper
#

what does this error mean?

#

there's... nothing there

north lodge
#

Show more of the code

tardy juniper
#

this is the entire thing

thorn furnace
#

you missed an end line 75

tardy juniper
#

oh i see

#

i've never coded in this language lmao thank you

thorn furnace
#

no problem

pure salmon
#

doesn't seem like it (should patch right after calculate_seal)

gaunt thistle
#

I don't see your target pattern in that screenshot

#

is it elsewhere?

maiden phoenix
thorn furnace
pure salmon
maiden phoenix
thorn furnace
#

oh

#

So I just have to rename it then?

maiden phoenix
#

Try it, it won't hurt you (maybe)

thorn furnace
#

time to hope find and replace didn't hurt anything

gaunt thistle
thorn furnace
daring fern
pure salmon
gaunt thistle
#

yeah so your patches aren't applying correctly

#

not sure why

#

verify that your patterns are accurate and your patches are in the right place

thorn furnace
red flower
pure salmon
#

oh

#

yeah that makes sense

#

oops

tardy juniper
thorn furnace
#

is that how it's spelt

#

/capitalized

tardy juniper
#

Five of a kind

mystic flume
#

Can you make mods for balatro on a steam deck

gaunt thistle
#

yep, it's just a compooter

tardy juniper
mystic flume
#

Oh cool

#

Well I guess what I'm really asking is can you make mods for balatro on linux

thorn furnace
# thorn furnace ```lua SMODS.Joker { key = 'requiem_softAndWet', config = {extra = {}}, ra...

apparently this has something to do with the draw function

draw = function(self, card, layer)
  if (layer == 'card' or layer == 'both') and card.sprite_facing == 'front' then
    local scale_mod = 0.05 + 0.05 * math.sin(1.8 * G.TIMERS.REAL) +    0.07 * math.sin((G.TIMERS.REAL - math.floor(G.TIMERS.REAL)) * math.pi * 14) * (1 - (G.TIMERS.REAL - math.floor(G.TIMERS.REAL))) ^ 3
    local rotate_mod = 0.1 * math.sin(1.219 * G.TIMERS.REAL) + 0.07 * math.sin((G.TIMERS.REAL) * math.pi * 5) * (1 - (G.TIMERS.REAL - math.floor(G.TIMERS.REAL))) ^ 2
                
    G.shared_soul.role.draw_major = card
    G.shared_soul:draw_shader('dissolve', 0, nil, nil, card.children.center, scale_mod, rotate_mod, nil,
    0.1 + 0.03 * math.sin(1.8 * G.TIMERS.REAL), nil, 0.6)
    G.shared_soul:draw_shader('dissolve', nil, nil, nil, card.children.center, scale_mod, rotate_mod)
  end
end

Guessing it has to do with G.shared_soul, though I was under the impression that was just the specific soul sprite of the card in question
I was going for something to imitate how it moves

maiden phoenix
tardy juniper
wintry solar
#

G.shared_soul is specifically the floating sprite for the soul

thorn furnace
#

o

#

how do I just do the second sprite instead

maiden phoenix
#

The second sprite? You mean like Hologram's floating Jimbo?

thorn furnace
#

the sprite the soul_pos variable uses

maiden phoenix
#

And you tried with the atlas key changed?

thorn furnace
hasty mist
#

doing a rewrite of a cryptid joker, any reason this displays as nil in the collection but is fine ingame?

maiden phoenix
tardy juniper
hasty mist
red flower
hasty mist
maiden phoenix
hasty mist
#

nope

red flower
mystic flume
#

Hmm

hasty mist
mystic flume
maiden phoenix
red flower
tardy juniper
hasty mist
thorn furnace
red flower
maiden phoenix
#

Oh your joker has a draw function? Can you show it?

thorn furnace
hasty mist
mystic flume
red flower
maiden phoenix
#

It's case-sensitive

tardy juniper
#

oml

mystic flume
zealous mauve
#

is the free codeacademy course on lua enough to start making mods?

hasty mist
mystic flume
hasty mist
#

the original code looks roughly identical, except that main_end is much longer, which unless im mistaken is no longer needed in my code

mystic flume
#

Love2d is the name of the framework balatro uses

zealous mauve
#

ah

red flower
hasty mist
#

ohh

#

i see

#

so should i move the entire return statement outside the if statement?

#

or do i need something else

red flower
#

you can do that yes

mystic flume
red flower
#

for UI code yes

mystic flume
#

I see

#

Interesting

hasty mist
ashen ermine
#

Hi, new to modding, how can I set the selected deck type and stake in code. eg set it to the blue deck at red stake

frigid flare
#

modding balatro cant be that hard

subtle merlin
frigid flare
#

Surely i can figure out how to make a joker

scenic steeple
#

If it's taken me 3 days to code a joker and the card still doesn't actually do anything I think it's hard :,)

mystic flume
#

I mean yahiamice did it, you probably can too

frigid flare
#

I have zero code experience so idk abt that

subtle merlin
mystic flume
#

Sheepolution makes a great one

scenic steeple
red flower
#

you don't need to know love2d to mod balatro

#

only basic lua

hasty mist
#

i only have a month and a half or so of coding experience and ive accomplished things i never even dreamed of

mystic flume
hasty mist
#

i would have probably quit early on if i tried starting with that tbh

mystic flume
scenic steeple
#

as far as I see, no spelling mistakes but I could be completely missing it, the card exists in game no crashes at all, just when actually playing and testing it, it just doesn't do anything it's supposed to

mystic flume
mystic flume
#

Or, how is it meant to function

subtle merlin
#

I'm back with another question 10 hours later:
The below code keeps crashing with the message psudoseed is a nil value but idk why as, by my understanding, it should just be grabbing a random number in the list then assigning enhancement said number

local enhancements = {
    G.P_CENTERS.m_fm_resonant,
    G.P_CENTERS.m_fm_dissected,
    G.P_CENTERS.m_fm_finalized
}
                
local enhancement = enhancements[pseudorandom_element(#enhancements, psudoseed('balalala'))]
red flower
#

pseudoseed

maiden phoenix
#

yea typo

red flower
#

also idk if that syntax is right

#

#enhancements is a number not a table

subtle merlin
subtle merlin
red flower
#

yes, pseudorandom_element takes tables

subtle merlin
#

oh

red flower
#

you want
local enhancement = pseudorandom_element(enhancements, pseudoseed("seed"))

subtle merlin
#

got it, ty!

ashen ermine
static dagger
#

Hey all, I'm trying to make my first Balatro mod and wanted to make a deck that makes Tarot cards free, but I'm not really sure how to run a function for cards in the shop.

Here's what I have so far, just based on the Steamodded example:

SMODS.Back{
    name = "Vagabonded Deck",
    key = "vagabonded",
    pos = {x = 1, y = 3},
    config = {only_one_rank = "4"},
    loc_txt = {
        name ="Vagabonded Deck",
        text={
            "Start with {C:money}$-20{} and",
            "earn no {C:attention}Interest{}, but all",
            "{C:tarot}Tarot{} cards and packs",
            "are free."
        },
    },
    apply = function(self)
        G.E_MANAGER:add_event(Event({
            func = function()
                for _, card in ipairs(G.playing_cards) do
                    assert(SMODS.change_base(card, nil, self.config.only_one_rank))
                end
                
                G.GAME.dollars = -20
                G.GAME.interest_cap = 0
                
                
                return true
            end
        }))
        
        -- Can make cards couponed to make them free?
    end
}
faint yacht
#

...probably would hook into create_card_for_shop and check against type of card...

tight notch
#

does anyone know how to get rid of or hide the lovely window? it's really annoying and whenever i tab out of balatro it will cover my screen until i tab out again and minimize it

faint yacht
#

-# Just my random thought cents.

maiden phoenix
static dagger
#

Thanks!

hasty mist
pliant raft
#

How do I change the seal texture in main.lua?

maiden phoenix
#

You mean the mod icon? Otherwise check the Malverk mod

sweet pelican
#

Hi, first time modder, I'm trying to add the amount of consumables to a xmult joker, how do I reference the current amount of filled consumable slots?

faint yacht
#

#G.consumeables.cards

sweet pelican
#

awesome! ty

#

I'll give it a try

faint yacht
#

Keep in mind mods like Incantation and (more optimal imo) Overflow will "compress" cards into stacks under certain conditions.

sweet pelican
#

okay sure, I'm mostly just doing this as a learning exercise so no biggie but good to know

faint yacht
#

👍

maiden phoenix
faint yacht
#

-# Also valid, lmao.

last cargo
#

I am trying to implement an Edition called “Bounty,” which disables the Joker's own effect, but the advantage is that it increases the bounty (i.e., the price at which the Joker is sold) by a large amount each round/ante (with an upper limit).
Regarding the disable effect, I called SMODS.debuff_card(), which worked. However, when modifying the sale price, I tried using card.sell_price = 10, but it did not work.😒

red flower
#

it's sell_cost

#

but keep in mind any call to card:set_cost() will reset it

maiden phoenix
#

(It's what "Egg" uses)

sweet pelican
# faint yacht `#G.consumeables.cards`

It seems to be saying that G.consumeables.cards is a table, so I can't use it for arithmetic, I assume theres some value within the table I should be referencing?

last cargo
#

alright I ll check them

#

thx

sweet pelican
#

OH

sweet pelican
#

thank you 😭

red flower
#

lmao

maiden phoenix
#

Damn N so rude shouting at people balatrojoker

formal parrot
#

N’ could never

red flower
#

N’ is my dad

#

I'm N'

maiden phoenix
#

Can I be S' ?

red flower
#

yes

maiden phoenix
#

Ty

formal parrot
#

No

#

You can’t

maiden phoenix
#

Too late

cerulean bane
#

can i be M’

formal parrot
maiden phoenix
#

Failed

formal parrot
#

Chicken sandwich

hasty mist
#

we love code optimization

formal parrot
#

I CANT SEE

subtle merlin
#

we love file compression

hasty mist
#

code so long you cant fit the whole thing in one image

north lodge
#

<@&1133519078540185692>

formal parrot
#

<@&1133519078540185692> I

red flower
karmic creek
#

bye

hasty mist
#

mods seize him

north lodge
#

What a pain!

subtle merlin
#

wow y'all are on it lol

karmic creek
#

consider him seized

umbral zodiac
#

mods just obliterate this . thing

formal parrot
exotic hedge
#

was it just a scam link? I missed it by like 1 sec

north lodge
#

Yeah

hasty mist
formal parrot
hasty mist
#

no just rewriting one joker

formal parrot
#

Oh

hasty mist
#

because the old code was like 400 lines long

formal parrot
#

Like editing their code

#

Or what

modern kindle
#

I feel like ive seen mods called so often lately

#

Invaded by the spams

formal parrot
#

Oh you’re optimizing the code

subtle merlin
normal crest
#

What's your code

subtle merlin
wild escarp
#

I've got this joker that's meant to make the joker to the right eternal, however, when removing eternal from any jokers not to the right of this joker, it also removes eternal from jokers that were eternal before. Is there some way I could make it only remove eternal from cards that it made eternal?

calculate = function(self, card, context)
    if G.jokers then
        local other_joker = nil
        local protected_joker = nil
        for i = 2, #G.jokers.cards do
            if G.jokers.cards[i-1].config.center.key == 'j_willatro_bodyguard' then
                protected_joker = G.jokers.cards[i]
                if protected_joker then
                    protected_joker:set_eternal(true)
                end
            end
            if G.jokers.cards[i-1].config.center.key ~= 'j_willatro_bodyguard' then
                if G.jokers.cards[i]:set_eternal() == true then
                    other_joker = G.jokers.cards[i]
                    if other_joker then
                        other_joker:set_eternal(nil)
                    end
                end
                if G.jokers.cards[1]:set_eternal() == true then
                    other_joker = G.jokers.cards[1]
                    if other_joker then
                        other_joker:set_eternal(nil)
                    end
                end
            end
            if context.selling_card and context.card.config.center.key == 'j_willatro_bodyguard' then
                G.jokers.cards[i]:set_eternal(nil)
            end
        end
    end
end
normal crest
upbeat bronze
#

dont you have to do some jank work around stuff regarding tracking destroyed jokers specifically?

#

if i recall correctly

red flower
#

yeah somewhat

upbeat bronze
#

hmm

subtle merlin
red flower
#

well that's not what i said

normal crest
#

pseudorandom_element already returns the value, not the index

upbeat bronze
# upbeat bronze hmm

yeah not even sure where to start on that beyond tracking every single individual effect that can destroy a joker and that seems like a mod compat nightmare

subtle merlin
#

tried that, still has the same error

red flower
#

pseudorandom_element returns 2 values so it's better saving it to a local beforehand

#

can you screenshot that part of the code again

subtle merlin
#

I havent tested it after adding the local yet

wintry solar
#

N are you still using lovely 0.7.1?

subtle merlin
frigid flare
#

Yeah idk if i have the patience to learn a whole language for a funny bit, kudos to anyone that has the mental capacity to do any of this

red flower
#

i updated lovely why

wintry solar
#

I need to see if a patch was missing before and I cba downgrading đŸ€Ł

#

I'll just check my logs from the other day

red flower
subtle merlin
wintry solar
#

in fact, when you launch do any of the smods patches miss right now?

red flower
red flower
subtle merlin
#

It'll take a second but yea

wintry solar
#

oh this PR steals a space from a patch target 💀

red flower
#

oh if it's mine it might be the autoformatter lol

#

sometimes i forget to save without it

wintry solar
#

I did wonder why yours sometimes had random whitespace changes đŸ€Ł

red flower
#

I'll be more careful lol

maiden phoenix
red flower
#

I'll see if I can disable it for toml

tight notch
subtle merlin
red flower
tight notch
red flower
tardy juniper
#

how would one go about creating a specific card in your hand?

normal crest
#

tho I haven't tried in lovely 0.8

red flower
#

i took that image from metherul like a week ago so its not a 0.8 thing

tight notch
#

didn't know it updated that's cool

#

although when using that launch option the window is renamed to "LOVE Console" instead of "lovely"

normal crest
wintry solar
#

man, N is cooking with all these PRs lately

red flower
formal parrot
#

Prs ?

#

Personal records?

red flower
#

pull requests

subtle merlin
#

i miiiiggggghhhhhttttt have possibly maybe forgot to save and thats why it didnt work

wintry solar
#

something I've noticed now I'm actually testing them though, is it possible for the SMODS.add_card supporting playing cards to spawn a specific enhancement?

red flower
#

yes, using "Base" + enhancement
although that might a little jank

#

unless thats not working for some reason

wintry solar
#

oh yeah that's cool

#

I must have got the key wrong

#

works with "Playing Card" too

red flower
#

yeah but might cause problems with setting an enhancement twice maybe

subtle merlin
wintry solar
red flower
#

i agree

formal parrot
#

Chat

#

Should i add localization?

red flower
#

it's not necessary but it's a pain to do later if you need it

#

and for some things it is needed

normal crest
formal parrot
red flower
#

like if you want a card to change names and/or descriptions dynamically

scenic steeple
#

odd random sudden question

if context.other_card:get_id() == 11 then

so if I wanted that to be for wild cards instead of Jacks
I've drawn blanks as to how to go about this so I'm begging for help

pure salmon
red flower
#

i was too slow..

scenic steeple
#

🙏 thanks so much

pure salmon
#

i had my codebase up you had no chance

#

np