#💻・modding-dev

1 messages · Page 646 of 1

subtle hawk
#

????

slim ferry
#

?????????????????

#

it

#

already says enhanced in all of the vanillaremade examples

#

fym

lament agate
#

:3c

wild patrol
#
    if not whitelist[user:lower()] then return end
    if is_on_cooldown() then return end
    if not text_to_show or text_to_show == "" then text_to_show = "Hello!" end

    local screen_h = love.graphics.getHeight()
    local target_h = screen_h 
    local scale_factor = target_h / 64
    local holdtime = text_to_show:len() / 10
    local wrappedText = wrapText(text_to_show, 30)
    attention_text({
        text = wrappedText,
        scale = scale_factor,
        hold = holdtime,
        align = 'cm',
        cover = true,
        cover_colour = G.C.WHITE,
    })
    play_sound('voice1', 0.8, 0.5)
end```
#

getting closer

#

just the text won't render on screen

sage crater
#

bump

red flower
# sage crater bump

i think you would need to look into how the current ones are made in game_object.lua and copy that then you probably need to patch the vanilla ones to be registered as that and the collection ui to show your new modification and hide enhancements if you need that

#

its probably too much work over just changing the name of enhancements

#

imo

sage crater
#

I’d still like enhancements to exist tho, so idk

#

since mult/bonus/wild would stay enhancements

red flower
#

idk why youre planning but i think it would be weird if only 3 enhancements remain lol

#

esp if you dont play other mods

wild patrol
#

you think these should be each their own command

#

or is all them in one command more funny

frosty rampart
red flower
frosty rampart
#

i've been digging into it but it was a bit confusing
i just looked with fresh eyes today tho and it looks like it just physically moves the shop/cashout screen/blind select down

red flower
#

yeah

#

i tested it yesterday for vouchers and it seems to handle all game states fine

frosty rampart
#

yea that's all working fine now

sage crater
#

also I do have a mod that adds two new enhancements

#

they’re both pretty shit, but that’s an issue I’ll tackle later lol

frosty rampart
#

i still have to do some work to keep G.hand (and presumably G.pack_cards) hidden, but i assume that'll be fairly simple

red flower
#

yeah you need to patch cardarea:draw iirc

#

let me check my mod

#

smods state api would be cool

#

i feel like at some point two mods will conflict because they need to change states at the same time

frosty rampart
#

true
i'd also like those cardareas to slide down offscreen smoothly if you toggle the state midround/in a pack, but i already had that handled in a past attempt so i should be able to do that fine

red flower
#

i think use_card does that already

#

just not off the screen

frosty rampart
#

i mean this state is supposed to have a whole box about the same size as the shop (think hotpot plinko/training grounds, but the button is near where joyousspring puts the graveyard button), so i do need them offscreen

#

in any case i shouldn't need much help with that part, just need to account for G.TAROT_INTERRUPT as well as G.STATE in the cardarea:draw patch and do what i did before

grizzled tide
#

does anyone know the context right after context.individual for scoring?

slim ferry
#

context.joker_main?

lyric wadi
#

how do i save something to a savefile

#

and will it show up in a stat tracker

#

like i want to generate and save a few hidden keys upon creation of the save file, which will be pulled from later by some stuff

slim ferry
#

store stuff in G.PROFILES[G.SETTINGS.profile] i think

#

or something like that

lyric wadi
#

so each save file would have a specific consistent set of things, but two different save files will not have the same set of things

slim ferry
#

ts fun valyue

lyric wadi
#

ok then what's the context of executing something when game is launched

#

or at least when profle is created

#

is there one??

#

if not i could pray and cheat by generating it on run start?

daring fern
lyric wadi
#

but is there a way to do something outside of runs hookless

#

or do i just have to hook/patch

red flower
lyric wadi
#

i want to generate a secret key/seed and store it in the save file

#

for save file specific functionalities

red flower
#

do you need to do it at the very beginning

lyric wadi
#

preferably but techically not necessarily

red flower
#

lua is very loose, you don't need to initialize stuff most of the time, you can just do it the first time you use it

lyric wadi
#

what type of values can you save in G.PROFILES[G.SETTINGS.profile] ?

#

like can you save a string? a list? a dictionary?

daring fern
queen crescent
#

i want to do something silly but for this i would need to know how do i force start a blind

#

(like no matter what you are doing at the time, doing that one specific thing forces a blind, even if you're in shop)

red flower
#

if you want it to happen at any time then you would need to have some kind of state management as well

queen crescent
#

my idea is when selling a joker

#

@red flower

red flower
#

what

queen crescent
red flower
#

i already said everything i have i dont know why the trigger would change that

#

you need to save the state and then resume it after the blind

#

starting the blind can be done with the code above

warped ocean
#

is there a way to change textures of a joker dependant on a variable?

red flower
# queen crescent uh

yes this is part of the state stuff, sadly many things need to be managed manually

queen crescent
#

on paper i could also nab the ui stuff

red flower
olive path
#

is there anything like context.modify_scoring_hand, but instead of scoring all played cards, it scores cards held in hand?

slim ferry
#

no

#

you gotta get hooking

warped ocean
#

yo chat this doesnt work for some reason lmao, can yall help?

daring fern
warped ocean
#

oh fairs lol

#

yeah that makes much more sense idk why i thought of doing it like that

#

oh wait nvm i fixed it anyways

#

i just needed to move an end

#

idk why there was one extra

lyric wadi
#

how do you use update() and set_sprites() :sopb:

#

cuz apparently card.ability.extra vars dont reach there

shell timber
#

can you send what you have now?

lyric wadi
#

i just tacked this on after the existing bit

set_sprites = function(self, card, front)
  card.children.center:set_sprite_pos({x = card.ability.extra.spriteX[card.ability.extra.anchorSuit .. card.ability.extra.followSuit], y = card.ability.extra.spriteY[card.ability.extra.anchorSuit .. card.ability.extra.followSuit]})
    end
olive path
daring fern
lyric wadi
#

yeah i figured as much

#

so how do i do it

#

like to use those values to set sprites

shell timber
#

is this for the save file specific stuff?

lyric wadi
#

no different thing

#

im trying to fix the sprite resetting to default when reloading run

olive path
#

thank you

red flower
#

wait wrong screenshot

manic tusk
#

Is there a way to make a specific modded joker show up in the first shop for testing purposes?

red flower
#

do you need to buy it specifically

manic tusk
#

No

red flower
#

then just use debugplus to obtain it

manic tusk
#

Ok, thank you :)

queen crescent
warped ocean
#

dunno why this bug is happening- help is appreciated lol

red flower
warped ocean
#

actually maybe lol

#

i cant remember

#

probably tbh

red flower
#

if you did it's normal that duplicates appear

warped ocean
#

alr wicked ty

celest anvil
#

Is there a way to limit what ranks a modded suit can use?
(More specifically preventing a suit from using the normal A-2 ranks)

red flower
#

yes, in in_pool you can check args and args.rank which contains the key for the rank about to get generated for your suit

tidal hemlock
#

btw how do you get spectral cards to behave like the soul/black hole

#

where they are rarer and can only be found in packs

primal robin
#

hidden = true, soul_rate = number or 0.003

#

And can specify which pools but idk how

frosty rampart
daring fern
#

red flower
#

and i think it would be hard to do with music since its not loaded all at once into memory but i dont know much about that stuff so maybe

frosty rampart
#

export reversed oggs of all the music and override the vanilla music with it egg

gaunt folio
#

any idea how to utilize modify_value(card.ability, k, true)? do I modify the "k" here or

gaunt folio
#

wait nvm i think i got it

#

think i mightve found the script to use actaully but

#

okay im getting closer but given the error somethings still off, definitely gotta figure it

#

im just trying to make modifications work first

#

wait i think i see

daring fern
gaunt folio
#

oh i see

#

found a good example used actually

#

okay i think im getting the hang of it, but im definitely not getting the right way to use it. this is probably wrong and i apologize but like this doesnt work, what would be the proper method to modify the leftmost jokers values

daring fern
gaunt folio
#

gotcha

#

almost. time to see whats wrong in the code

daring fern
gaunt folio
#

i should?

#

unless theres something wrong aaaaaa

daring fern
gaunt folio
daring fern
gaunt folio
#

should have

#

ill do it again just to be safe

#

okay it works but i forgot to make it stop 😭

#

not to worry i think i found a solution

final jewel
#

why does the message doesnt care about about the things in func

frosty rampart
#

if mes is a local variable, then it only exists within the function
and/or maybe the message handler code is run before func is run

#

you need to figure out the message before the return table

gaunt folio
#

ok it works properly

frosty rampart
#

yea why are you doing all that in the return table's function

final jewel
#

I need to take it out of the return ?

frosty rampart
#

i think so
what's the goal here? you shouldn't ever be using the function in a return unless there's a specific reason for doing so

final jewel
#

yeah ik its some old code for a thing that I need to nerf

daring fern
frosty rampart
#

returning a custom function is literally labeled as an advanced technique in the smods documentation
it should not be treated as the default
unless you have a specific reason to run some custom code timed properly with the animation of the relevant card triggering, you should just not have that code in the return table at all

tidal hemlock
#

X20 Mult, no suit or rank, Self-destructs

also the only way to obtain is via either an anomaly card (Anomaly 20), or a card that gives random enhancements and getting a good roll

thoughts?

#

anomaly card are rarer than spectrals btw

lyric wadi
#

why does this still crash i thought you couldf do this so if the front vars doesnt exist/invalid it picks the back values

frosty rampart
# tidal hemlock anomaly card are rarer than spectrals btw

a one-time boost like that tends to be pretty weak no matter how powerful the boost itself is, especially with how hard it seems like it'll be to access paradox cards
the card destruction aspect is probably more valuable than the score boost, and at that point hanged man is just better

lyric wadi
#

is there really no way to pull values from card.ability into this function

#

😭

tidal hemlock
frosty rampart
#

better than hanged man then, but still pretty weak if this is supposed to be better than spectrals

tidal hemlock
#

yeah fair

#

supposed to be a goojf option if anything

frosty rampart
#

could make it decrease by 1 every time it's scored, and then self destruct once it reaches x1

#

that's a lot more interesting to me actually
because now you have to balance when you think you'll need it

tidal hemlock
#

i just realized that there's no basegame card that applies random enhancements lol

#

i've been playing too much paperback

frosty rampart
#

grim/familiar/incantation create cards with random enhancements
although actually they should exclude your paradox card because they're rankless lmao

tidal hemlock
#

yeah that's what i figured since that's what happens with paperback's wrapped card

lyric wadi
#

i know the local tables are unusded im trying to get it to work for now

tidal hemlock
#

ok here's my rework
Paradox Card
X20 Mult, no suit or rank
Decreases by a factor of 2 when scored (20 -> 10 -> 5 -> 2.5 -> 1.25 -> 0.625 Destroyed)

sage crater
#

ten times better, and no chance of it breaking

red flower
final jewel
#

why does I alway get a grey line on the right I didn't draw that

sage crater
final jewel
#

cause the size is litteraly 69x93. the size expected for a card

sage crater
#

oh lmao

final jewel
#

So I fixed it idk

#

but idk why my consumable type doesnt show right. Its writting ERROR

hallow moat
#

they said it couldnt be done

#

but my chatgpt mods are making progress

#

soon my game will be able to handle 100,000 jokers on a mediocre pc

daring fern
loud citrus
#

i'm trying to track the repeated ranks in a played hand but i don't know what i'm doing 🥲

narrow pendant
#

does anyone know how to draw two souls over one card?

lament agate
narrow pendant
#

is that from another server..? or a chat i can't go into?

daring fern
lament agate
lament agate
#

i wish there was a simple explanation

#

JF code is atleast up-to-date

#

compared to old cryptid code

#

that shit ages

narrow pendant
#

Anyway, someone wanna dev my mod? I'm a good artist but i'm sorely lacking in the code department and if i do it i'll be here forever

#

lmao

lament agate
#

maybe some devs will be interested in picking it up

subtle hawk
narrow pendant
#

Thank you, i'll have to put a post forward.

#

i'm looking to build a playtesting pack of 3 pages at the moment and i've got a good amount of content to showcase. i wanted to do it all myself but if i ever want it to come out..

lament agate
#

how would i change played cards ranks

pulsar hawk
#

does changing the rank in context.before not do the trick? (via SMODS.modify_rank probably unless there's a way I don't know)

lament agate
#

here's my code

daring fern
lament agate
#
calculate = function(self, card, context)
        if context.before and context.cardarea == G.play and context.scoring_hand then
            local has_two = false
            for _, c in ipairs(context.scoring_hand.cards) do
                if c:get_id() == 2 then
                    has_two = true
                    break
                end
            end
            if has_two then
                for _, c in ipairs(context.scoring_hand.cards) do
                    c.base.id = 2
                    c.base.value = '2'
                end
            end
        end
    end
pulsar hawk
lament agate
daring fern
subtle hawk
#

Was there some kind of parameter for create_UIBox_generic_options to remove cancel button?

shell timber
loud summit
# lament agate

couldnt you just use formatting tags to {C:black} the name

#

oh

shell timber
#

or C:whatever yeah

lament agate
lament agate
shell timber
#

rhombicosadodecahedron does this

loud summit
lament agate
#

i figured it out

loud summit
#

ok,

lament agate
#

its pure black now

loud summit
#

lol

daring fern
#

reef belfry
#

is there a way to make cards trigger their end of round effects during a jokers calculation without it actually being the end of the round

final goblet
#

i'm stupid
idk how to random this lmao (familiar/incantation/grim)

daring fern
lament agate
#
calculate = function(self, card, context)
        if not context.after then return end
        if context.scoring_hand == 'Full House' then
            for _, c in ipairs(G.consumeables.cards) do
                if c.config and c.config.key == 'c_tngt_drhouse' then
                    c.ability.extra.charges = c.ability.extra.charges + 1
                end
            end
        end
        if context.end_of_round then
            for _, c in ipairs(G.consumeables.cards) do
                if c.config and c.config.key == 'c_tngt_drhouse' then
                    c.ability.extra.charges = 0
                end
            end
        end
    end,
#

why isnt this working

daring fern
# lament agate why isnt this working
if context.before and context.scoring_name == 'Full House' then
    for k, v in pairs(G.consumeables.cards) do
        if v.config.center.key == 'c_tngt_drhouse' then
            c.ability.extra.charges = c.ability.extra.charges + 1
        end
    end
end
if context.end_of_round and context.main_eval then
    for k, v in pairs(G.consumeables.cards) do
        if v.config.center.key == 'c_tngt_drhouse' then
            c.ability.extra.charges = 0
        end
    end
end
gaunt thistle
#

hey nxkoo, "alot" is not a word. you're probably thinking of "a lot" or "swear"

lament agate
#

can i set a specific crash messages
for a certain version of a mod

gaunt thistle
#

of course you can

lament agate
#

ehtan...

gaunt thistle
#

just check the version via smods and then crash the game with a custom message

lament agate
#

😭

gaunt thistle
#

local other = SMODS.Mods["nxkussyMod"]
other.version

#

I think

lament agate
#

other.version > (>=1.0.0~ALPHA-1225a)

#

?

gaunt thistle
#

V()

#

iirc

#

no wait you can just use the SMODS.compare_version helper

#

SMODS.compare_version("modName", "version")

lament agate
gaunt thistle
#

no

#

I made it up

lament agate
#

kill yourse

gaunt thistle
#

ok

#

bye

lament agate
#

IM JOKING IM JOKING

#

WAIT

gaunt thistle
#

:P

gaunt thistle
lament agate
#

like that?

gaunt thistle
#

oh my go

#

d

#

no other.version > V()

#

that's my bad

lament agate
#

OH

#

ok mb,,,,,

warped ocean
#

is there a way for the joker to run something when it appears in the shop, like some sort of context

wintry solar
#

No

warped ocean
#

damn

red flower
warped ocean
red flower
#

set_ability

stiff locust
#

is there a way to override the text that displays how many discards you have

I want to change that display number without actually changing how many discards you have

warped ocean
#

wicked ty N!

red flower
wintry solar
#

Oh true I don’t know why I said no lol

stiff locust
#

ref_value points to a table then right

#

thats how UI boxes work isnt it

red flower
#

it does ref_table[ref_value]

stiff locust
#

so I can just change G.GAME.current_round.discards_left and it will do the text

#

although

red flower
#

yes but that will also change discards lol

stiff locust
#

im trying to create an effect that gives infinite discards and it would be cool if it said inf

#

i just dont want you to get like, infinite delayed gratfication from having it

#

cause that would be stupid

red flower
#

i think if you make it math.huge it will say inf if you dont have talisman

stiff locust
#

i have amulet and would rather not rely on having or not having a mod to make it display properly

#

esp talisman of all things

red flower
#

anyway for what you want you would need to change the value of the node, not the variable

stiff locust
#

i could hook into that and replace it ye

#

well, patch over it

#

what file is it in

red flower
stiff locust
#

i should be able to do

ref_value = X or Y

right?

red flower
#

yeah

stiff locust
#

then if X is nil it goes to Y so if you dont have it it goes to regular discards

#

alright

red flower
#

im bad at ui

wintry solar
#

Yeah I don’t think that would work

stiff locust
#

reloading the UI is easy

wintry solar
#

It will just always take the X of the ref value

stiff locust
#

but if X is nil it will go to Y

#

thats what the or is for

wintry solar
#

Well what are you setting X as

stiff locust
#

"inf"

wintry solar
#

That’s not how ref table/value functions

stiff locust
#

i know im oversimplifying

wintry solar
#

You need ref value to be a key of the ref table

stiff locust
#

it would be set to G.GAME.current_round.modprefix_infinite_discards

#

which would either be "inf" or nil

#

depending if you have the effect or not

wintry solar
#

That won’t change then

stiff locust
#

why not

wintry solar
#

Because the string of ref value will always be there

red flower
#

i would give it an id so you can find it with the get uie by id function and then use that to change the table and the value probably

wintry solar
#

You could maybe have the key saved in a global that is either the string or nil, but I’ve not tried that before

stiff locust
#

does ref_value not support or operator

wintry solar
#

It will do, just not in the way you’ve described

stiff locust
#

but I can't set the current round discards to that directly because its checked by a thousand other things which want it to be an integer dammit

#

so what I do instead is patch it so ref_value points to my value

#

but always

#

and my value either is set to equal inf or the discards

#

I think that'll do it

wintry solar
#

I would do what N said about the id

stiff locust
#

according to ease_discard it already has an ID

#

it runs G.HUD:get_UIE_by_ID('discard_UI_count')

red flower
#

oh yeah it does

wintry solar
#

Oh yeah

#

Don’t even need a patch then!

stiff locust
#

can I just use that to set the text to inf then

#

if you have the thing

#

that seems too easy

wintry solar
#

To change the ref value

stiff locust
#

how exactly do I do that with the function

warped ocean
#

is there a way to change a card's name like card.children.center:set_sprite_pos?

red flower
red flower
stiff locust
#

i think i have it

#

would it be a crime to run this in an event every frame

red flower
#

it would probably be fine

#

it already reads the ref table every frame

stiff locust
#

oh well then i dont need to do it every frame

#

i can lazy update the value changing

#

so how do I put my value into g.game.current_round when the run starts

stiff locust
red flower
#

SMODS.current_mod.reset_round_globals(run_start) ? or whatever thats called

#

you can also just use your own table and change the ref_table too

stiff locust
#

shit ur right actually

#

I will do that

warped ocean
stiff locust
#

how do I lazy update code

#

does smods.calculate_effect even do what i think it does

warped ocean
red flower
#

state3 and "key3" or state2 and "key2" or nil -- default

warped ocean
#

oh fair yeah

#

i didnt think about that

stiff locust
#

i want to put lazy update code in my mods' global calculate

#

I always thought calculate_effect was for that

red flower
#

global calculate is like joker calculate

stiff locust
#

oh i just put it in my mod's main file?

red flower
#

its used for contexts

red flower
stiff locust
#

oh thats easy

stiff locust
#

its less of a crime compared to running it every frame

#

optimisation n allat

stiff locust
# red flower yes

wait but what of the self and card arguments in the calculate function

#

i dont need them but they wont exist will they

red flower
#

it's function(self, context) where self is the mod object

stiff locust
#

so do I need to change self to anything or does it just know that already

red flower
#

those are the arguments that are passed to the function, the names are irrelevant

stiff locust
#

right

wintry solar
#

why do you need to lazy update this value?

stiff locust
#

i need to check if you have the infinite discards or not every context

#

cause it wont always be on

wintry solar
#

why?

stiff locust
#

it gets turned off when the joker is gone

#

and i dont want it to get stuck on inf

wintry solar
#

use add to/remove from deck

warped ocean
#

seems to not be working (everything else works)

red flower
#

key = ...

warped ocean
#

nope, just crashes the game-

lyric wadi
#

im tryting to make some very naive and rudimentary animated sprite, which works fine like this
but a problem i found is that if you have multiple copies of the card, it change faster

#

what's like the proper way to deal with this]

warped ocean
red flower
red flower
#

you should be doing that anyway, global variables are not recommended

lyric wadi
red flower
#

you can also just save it directly to card

warped ocean
#

yeah im not understanding why this doesnt work, help is very appreciated-

#

sry for the bother

lyric wadi
#

what are you trying to return in loc_vars

#

like one big truth value or

warped ocean
warped ocean
#

lmao, it did change it, just to a blank textbox, ill try to fix it

#

also ty

stiff locust
#

dammit

#

i dont know when the UI is created, i tried to hook start_run with a blockable event since thats when the UI shows up

#

oh wait

#

might not have been the issue

red flower
stiff locust
#

i got it to not crash but its not working

red flower
#

it wouldnt be .config directly because it points to the node and not the dynatext inside

stiff locust
#

yeah i figured that out

#

not sure why its not working or how to figure out why its not working but its simply not changing the ui text

red flower
#

you dont need to update the object or recalculate anything

stiff locust
#

figured i should just in case

red flower
#

also ref_table and value are not located there

stiff locust
#

oh

#

well it crashed when i did .config.ref_table and idk where they are

#

thatd explain why it didnt work

red flower
#

theyre in the dynatext object. i dont remember what the syntax should be rn

wintry solar
#

this is such a bizarre way of updating this value

stiff locust
#

thats how i tend to do things

wintry solar
#

G.HUD:get_UIE_by_ID('discard_UI_count').config.object.config.string[1].ref_value this is what you need

#

but just do this in an add_to_Deck on your joker and change it back in remove_from_deck

#

you don't need to be constantly checking to see if you need to change it

stiff locust
#

i will not be doing that because if you had two of the joker then lost one of them it would go away even though you still have the joker

red flower
#

you can check if you have another

wintry solar
#

just check you don't have other copies

stiff locust
#

thats so much workkkk

wintry solar
#

well how are you currently setting your value to know to change the display?

stiff locust
#

I havent implemented it yet

#

ive just been trying to get it to work with the value

#

turning it on with debugplus to see if it works

wintry solar
#

you'll still need to do some checks within that for other copies unless you do that in an equally jank lazy update method

stiff locust
#

thats a weird way of spelling inf

#

huh

stiff locust
#

its not an update function so thats good enough for me

wintry solar
#

okay, make it more complicated than it needs to be 👍

stiff locust
#

i love doing that

warped ocean
#

yo yall know if theres an issue with my localization file?

#

cause im trying to pull from it and it just gives blank

sturdy compass
#

What are the joker keys and your mod prefix?

stiff locust
#

oh god dammit

#

ui boxes not updating again

stiff locust
#

calculate = function(self, context))
whats wrong with this definition of it

red flower
#

SMOS.current_mod.calculate

#

smods

stiff locust
#

oh

lyric wadi
#

chat really stupid question

#

what's the like accepted way of generating an integer between a given range

stiff locust
#

math.random(x,y) ignores seed
pseudorandom("seed", x, y) respects seed

#

the seed string can be any string

frail parcel
#

i dont know where i fucked up but it crashes

lyric wadi
stiff locust
#

show code

frail parcel
daring fern
frail parcel
lyric wadi
#
add_to_deck = function(self, card, from_debuff)

        if card.ability.extra.colourID == -1 and not from_debuff then
            card.ability.extra.colourID = psuedorandom("colourOfMoney", 1, 26) -- <-- this is the line it mentioned in the log
            card.ability.extra.colourName = card.ability.extra.nameTable[card.ability.extra.colourID]
...
[irrelevant code below]
faint yacht
#

pseudorandom?

lyric wadi
#

fuck

#

hate this word

#

anyway that stupid mistake fixed

viscid talon
#

i suck at programming, is it okay if i just steal this (with credit ofc)

frosty rampart
#

yea sure lol

viscid talon
#

woohooo :D thank you

frail parcel
viscid talon
#

@frosty rampart would this work then?

#

i tried putting the val stuff in but kept getting red lines

frosty rampart
#

after the first end, you also need to add card.ability[self.key] = val, which will properly indicate to the game that the sticker is applied and it'll draw the sticker and give it the badge for it and whatnot

viscid talon
#

oke!

viscid talon
#

ill give it a test soon

primal robin
#

Is Meta cooking new mods?

frosty rampart
#

it's a secret :3 quite a lot of work to go, but i'm hoping to get the main feature done soon and then i can reveal it

primal robin
frosty rampart
#

i will say that the word choice in my server nickname is very intentional

warped ocean
sturdy compass
#

Hmm, looks right. What about your loc_vars? Are you doing anything weird there?

warped ocean
#
        return { key = Geeked==0 and "j_avgh_geeked_locked_in" or Geeked==1 and "j_avgh_geeked_geeked" or nil }
    end,```
frosty rampart
#

you need some parentheses i think

return { key = (Geeked == 0 and "j_avgh_geeked_locked_in") or (Geeked == 1 and "j_avgh_geeked_geeked") or nil }
warped ocean
#

ill try running that

#

nope, still just a blank textbox

red flower
#

does the name change

warped ocean
#

no name

red flower
#

hmm

#

the normal description shows up if you delete the loc vars, right?

warped ocean
#

yup

red flower
#

that just makes me think theres something wrong with the keys or the loc file

frosty rampart
#

what happens if you just return key = "j_avgh_geeked_locked_in"
i suspect maybe explicitly returning key = nil is problematic

red flower
#

do you have loc_txt by any chance?

warped ocean
#

yeah

dawn granite
red flower
#

ok i see

warped ocean
#

is that the problem?

red flower
#

whats the name of your loc file

warped ocean
#

en_us.lua

red flower
#

i knew it

#

en-US

warped ocean
#

oh thats stupid

frosty rampart
#

capitalization doesn't matter but it does have to be a dash, not an underscore

warped ocean
#

oh yeah i didnt even realise the dash

brazen kite
red flower
#

does capitalization not matter i think its actually lowercase

frosty rampart
#

maybe it does but i know lowercase definitely works

#

i only said that because i trusted you knew uppercase worked

dawn granite
red flower
brazen kite
warped ocean
#

nope

brazen kite
#

Don't worry it's still my present

warped ocean
#

doesnt change text at all now

#

oh wait

#

im dim

#

i forgot to uncomment the locvars

red flower
warped ocean
#

nah it worked

red flower
#

awesome

warped ocean
#

i was just being stupid

dawn granite
wintry solar
#

Your atlas size looks wrong

dawn granite
#

is it supposed to be 32x32?

wintry solar
#

Yes

#

Have you put your 2x file in the 1x folder by mistake?

dawn granite
#

no, my artist exported the "art" in 64x64 so i kinda just used that dimension

#

i'll downscale tho so it shouldn't be too bad

#

(i put art in quotations because this specific piece is more of a pisstake, trust me the one skip tag in this mod is worse)

sonic musk
#

gangy

#

what is the hex for balatro black

vernal path
#

#4f6367

#

How can I make a localization different if a certain mod is installed?

mystic river
#

most elegant way would be to return an alternate key in loc_vars

vernal path
#

in en-us.lua

red flower
#

i mean where in the game

mystic river
#

or if you're just changing one or two words, make it a variable

red flower
#

a joker? ui?

vernal path
#

Ah, consumable text

red flower
#

then what minty said

mystic river
#
local key = self.key
if SMODS.find_mod("the other mod") then key = key.."_alt"
return {
 key = key
}
dawn granite
#

i'm unsure what the x2 amount is if it's doing this

frail parcel
#

how do i make it so the deck doesnt let jokers appear

mystic river
#

set every rarity mod to 0

#

is what i would do

#

and if that doesn't work, see what vanilla jokerless challenge does

frail parcel
#

what about modded rarities
also, i tried doing what jokerless does but it didnt work

mystic river
#

iterate over the rarity pool to get the relevant keys

slim ferry
mystic river
#

that would probably work

frail parcel
#

thx

atomic linden
#

i can't use pokermon and cryptid in the same time right ?
, it crack and it said because of talismen but if i just run talismen and pokermon it normally

urban surge
#

Is there a way to make a seal or enhancement that causes cards held in hand to retrigger scored cards?

oblique lotus
#

Is there a context for the start of a hand?

#

Like before anything is played

round lion
#

best bet is making it run on context.setting_blind and context.after

frosty rampart
#

context.press_play is a thing

round lion
#

as in when selecting the hand i think

oblique lotus
#

Right. I can't use context.after as it happens before scoring is finished

#

I was hopping there was another context that happened between those two points

wintry solar
#

What specific timing and effect are you trying to do?

round lion
#

your gonna have to attach a context of your own

mystic river
#

context.before ?

gaunt folio
#

would this work if im trying to make all cards of a specific set or pool multiply? I'm not sure personally\

#

actually its worth a shot imma try first

#

bc arguably i havent. if it doesnt then oh well but if ti does then nice

lament agate
#

how would i force certain suits to be drawn first

#

i tried coding it, it doesnt ork

wintry solar
gaunt folio
#

no it appears not for mine

lament agate
viscid talon
#

My stake keeps on showing up as error

#

here is the code in stakes.lua

#
SMODS.Stake {
    name = "Rose Stake",
    key = "rose",
    applied_stakes = { "gold" },
    pos = { x = 0, y = 0 },
    sticker_pos = { x = 2, y = 1 },
        text = {
            "Shop can have {C:attention}Burdened{} Jokers",
            "{C:inactive,s:0.8}(Take up an extra slot)",
            "{s:0.8}Applies all previous Stakes",
        },

    modifiers = function()
        G.GAME.modifiers.enable_burdened_in_shop = true
    end,
    colour = G.C.RED,
}```
#

here is the atlas

#
    key = "CustomStakes", 
    path = "CustomStakes.png",
    px = 34,
    py = 34, 
    atlas_table = "ASSET_ATLAS"
})```
red flower
#

loc_txt?

viscid talon
#

o hm

#

changed it to loc_txt and i still get this error

#

heres the custom stakes file

#

(at 1x)

red flower
#

youre missing the atlas too

viscid talon
#

o fuck

red flower
#

but changing text to loc_txt was not the issue if you did that

#

text goes inside loc_txt

viscid talon
#

added the atlas bit

#

ok well good news is that it shows up

#
SMODS.Stake {
    name = "Rose Stake",
    key = "rose",
    applied_stakes = { "gold" },
    pos = { x = 0, y = 0 },
    sticker_pos = { x = 2, y = 1 },
    loc_text = {
        "Shop can have {C:attention}Burdened{} Jokers",
        "{C:inactive,s:0.8}(Take up an extra slot)",
        "{s:0.8}Applies all previous Stakes",
    },
    atlas = 'CustomStakes',

    modifiers = function()
        G.GAME.modifiers.enable_burdened_in_shop = true
    end,
    colour = G.C.RED,
}```

the code at current
red flower
#

ah also applied_stake "gold" will try to apply your gold take, not vanillas

viscid talon
#

o thats weird

#

what do i write instead

red flower
red flower
viscid talon
#

oh LMAO

normal ridge
normal ridge
red flower
frosty rampart
#

(add that in addition to the applied_stakes = { "gold" })

pulsar hawk
#

how does controller focusing work? I'm trying to get the controller to focus on the buttons on the left before it focuses on the slider, but it always starts at the sliders from the top buttons

normal ridge
red flower
#

i hate controller support

pulsar hawk
#

Same! But I'm attempting it anyway

#

and uh. hate everything

viscid talon
frosty rampart
#

no it's a separate line

viscid talon
#

oke

#

lets give it a go

#

also does the code like, know, im adding burdened jokers

#

wouldnt i need to make a hook

red flower
gaunt folio
#

this doesn't work, its meant to trigger for every joker in a specific set, how can I make that happen?

viscid talon
#

hmmm, im trying to figure out where in the vanillaremade wiki it has smth like that

red flower
#

nowhere

frosty rampart
#

you shouldn't need a hook, just check for the value in the sticker's should_apply function

red flower
viscid talon
#

well this is all ive got so far

gaunt folio
#

no its my own failed attempt

viscid talon
#

oh wait

#

should apply

red flower
dense fulcrum
viscid talon
#

LOL

#

there we go

#

im so stupid LMAOOO 😭

#

theory, marisa has no brain

#

what the FUCK IS GOING ON

slim ferry
gaunt folio
#

oh i see

#

otherwise yeah, why do you ask?

viscid talon
#

LMAOOOOOO THIS IS SO BROKEN :OSB

#

WHY IS THERE AN EXTRA TINY BOX

#

WHY DOES IT SAY ERROR 😭

slim ferry
#

for the sticker tooltip

viscid talon
#

ohh thats what a tooltip is,,,

slim ferry
#

because you dont have sticker text

red flower
viscid talon
#

maybe its in en_us.lua

gaunt folio
#

eh oh well

#

ill hopefully? find a way

frosty rampart
viscid talon
#

yeah, im guessing there needs to be some extra text

#

maybe smth like

#
                name = "Burdened",
                text = {
                    "Takes up",
                    "an extra slot",
                },
            },```
?
frosty rampart
#

this is what i do for a starspace sticker
center.set == "Joker" checks to make sure if it's going to be applied on a joker
the area checks make sure the sticker can only appear if the card is being generated in a shop
the third line is what i just had you check for
and the 4th line gives it only a 40% chance to appear on a joker, instead of appearing on every joker

dense fulcrum
frosty rampart
#

as for the broken text, the smods.sticker documentation should explain where to localize everything

viscid talon
#

okay, ill give it a shot

slim ferry
#

all of this is basically just what that does

red flower
frosty rampart
viscid talon
#

makes sense, so smth like hatch_burdened

#

?

wintry solar
#

stickers are so jank

slim ferry
#

iirc

frosty rampart
#

yea i guess you can lol
does that check the rate that you set in the sticker definition too?

slim ferry
#

pretty sure it does

#

since SMODS.Sticker.should_apply is just the default function

frosty rampart
#

ya makes sense

red flower
#

does anyone know how to load the mod config wthout smods...

viscid talon
red flower
#

hatch_burdened should be under Other iirc

viscid talon
#

hm

#

also burdened stickers dont show up anymore 😭

#

guessing the probability has been set to 0, somehow

slim ferry
#

just remove the should_apply

#

and add needs_enable_flag = true

viscid talon
slim ferry
#

consider

#

dont remove the function without removing the function code

viscid talon
#

;-;

#

ok here we go

slim ferry
#

no

#

like

#

that should be outside the function

#

just in the sticker

#

and then you can remove the function entirely

viscid talon
#

im confused abt your wording im rly sorry

#

i struggle a lot with verbal instructions

slim ferry
#

idk what else im meant to say\

viscid talon
#

so i have to move this bit outside?

red flower
#

remove all of that

#

and put needs_enable_flag = true in the sticker

frosty rampart
#

my bad for suggesting the should_apply function in the first place, i did not know game

red flower
#

ah its not even printing the serialized string, i didnt realize

viscid talon
#

ok i made the changes. burdened jokers still do not show up

red flower
#

may we see the code

viscid talon
#

Stickers.lua

SMODS.Sticker {
    key = "burdened",
    badge_colour = HEX '3abd4c',
    pos = { x = 0, y = 0 },
    atlas = 'CustomStickers',

    -- Credit to Metanite64 for the code: this is taken from Astro's Starspace Mod (with permission.)
    -- Credit to Eris for support on the tooltips.
    apply = function(self,card,val)
        if val then
            card.ability.extra_slots_used = card.ability.extra_slots_used + 1
        else
            card.ability.extra_slots_used = card.ability.extra_slots_used - 1
        end
        card.ability[self.key] = val
        end,

    needs_enable_flag = true
}

-- Tooltip 
return {
    descriptions = {
    hatch_burdened = {
                name = "Burdened",
                text = {
                    "Take up",
                    "an extra slot",
                },
            },
        }
    }```
#

Stakes.lua

SMODS.Stake {
    name = "Rose Stake",
    key = "rose",
    prefix_config = {  applied_stakes = { mod = false } },
    applied_stakes = { "gold" },
    pos = { x = 0, y = 0 },
    sticker_pos = { x = 2, y = 1 },
    loc_txt = {
    name = "Rose Stake",
        text = {
            "Shop can have {C:attention}Burdened{} Jokers",
            "{C:inactive,s:0.8}(Take up an extra slot)",
            "{s:0.8}Applies all previous Stakes",
        }},
    atlas = 'CustomStakes',

    modifiers = function()
        G.GAME.modifiers.enable_burdened_in_shop = true
    end,
    colour = G.C.RED,
}```
#

also how do i add the funky gold stake shader to rose stakes image

slim ferry
#

it needs sets = { Joker = true } im pretty sure

#

obn the sticker

viscid talon
#

no luck ;-;

wintry solar
sturdy compass
viscid talon
slim ferry
#

stake

red flower
viscid talon
#

oke

#

added to stake

#

anyways, the burdened sticker still doesnt show up. it wont show up unless i have the stake code say "burdened show up in shop" or smth

sturdy compass
viscid talon
#
        G.GAME.modifiers.enable_burdened_in_shop = true
    end,```

i think i need to add this
wintry solar
viscid talon
#

WAI TNO

sturdy compass
#

Indeed it should, especially with a context and helper function implemented

viscid talon
#

i have no choice but to add this

        return G.GAME.modifiers.enable_burdened_in_shop
    end,

if i want it to work

#

otherwise it wont show up

slim ferry
#

no

#

it handles that by default

viscid talon
#

then why isnt it showing up :Sob

#

😭

red flower
#

did you do the sets = { Joker thing

viscid talon
#

yeas

frosty rampart
#

does it maybe need the mod prefix in the modifier? enable_hatch_burdened_in_shop?

viscid talon
#
SMODS.Sticker {
    key = "burdened",
    badge_colour = HEX '3abd4c',
    pos = { x = 0, y = 0 },
    atlas = 'CustomStickers',

    -- Credit to Metanite64 for the code: this is taken from Astro's Starspace Mod (with permission.)
    -- Credit to Eris for support on the tooltips.
    apply = function(self,card,val)
        if val then
            card.ability.extra_slots_used = card.ability.extra_slots_used + 1
        else
            card.ability.extra_slots_used = card.ability.extra_slots_used - 1
        end
        card.ability[self.key] = val
        end,

    needs_enable_flag = true,
    sets = { Joker = true }
}

-- Tooltip 
return {
    descriptions = {
    hatch_burdened = {
                name = "Burdened",
                text = {
                    "Take up",
                    "an extra slot",
                },
            },
        }
    }```
#

maybe?

slim ferry
#

mod prefix isnt added to stickers by default

frosty rampart
#

bleh

red flower
viscid talon
#

i dont know what im doing wrong ;-;

slim ferry
#

idk

#

last time i made a sticker it wasnt

#

and that was pretty recently

frosty rampart
#

ohh wait i'm looking at the code now
it's not even in_shop, it should just be enable_burdened (or enable_hatch_burdened)

red flower
viscid talon
#
        G.GAME.modifiers.enable_hatch_burdened = true
    end,```
frosty rampart
#

no
in the stake

#

or wait yea modifiers is in the stake

viscid talon
#

yeah i put that in the stike

#

stake

#

now i have this

red flower
#

in the localization

viscid talon
#

oh right

frosty rampart
#

alright now for the localization
yes, it should be under Other
and then for the badge you also need to do this:

return {
  dictionary = {
  ...
  },
  misc = {
    labels = {
      hatch_burdened = "Burdened"
    }
  }
}
viscid talon
#

oke

vernal path
red flower
#

can i see the code

#

and the crash

viscid talon
#
return {
    descriptions = {
        other = {
            hatch_burdened = {
                name = "Burdened",
                text = {
                    "Take up",
                    "an extra slot",
                },
            },
        },
  dictionary = {
  },
  misc = {
    labels = {
      hatch_burdened = "Burdened"
             }
         }
    }
}
red flower
viscid talon
#

it works fine rn, its just the localisation thats fucked

wintry solar
#

Other, capital O

viscid talon
#

i dont have one 😓

red flower
#

huh

viscid talon
#

this used to be a jokerforge mod

red flower
#

where is that then

viscid talon
#

in the same file

slim ferry
#

that

red flower
#

ah

viscid talon
#

as stickers.lua

slim ferry
#

that wont work

viscid talon
#

so i gotta make en_us.lua?

mystic river
#

yep

red flower
#

en-us but yes

#

in localization/

slim ferry
#

inside of a localization fodler

#

yeash

vernal path
#

king_of_swords.lua

PB_UTIL.MinorArcana {
  key = 'king_of_swords',
  atlas = 'minor_arcana_atlas',
  pos = { x = 6, y = 5 },

  in_pool = function(self, args)
    return G.GAME.modifiers.enable_perishables_in_shop and G.GAME.modifiers.enable_rentals_in_shop
  end,

  -- Thanks mys. minty!
  loc_vars = function(self, info_queue, card)
    local mod_key = self.key
    if SMODS.find_mod("bunc") then
      mod_key = mod_key .. "_bunc"
      end
    return {
      key = mod_key
    }
  end

  can_use = function(self, card)
    if G.jokers and #G.jokers.highlighted == 1 then
      local joker = G.jokers.highlighted[1]

      return (
        joker.ability.rental or
        joker.ability.perishable or
        joker.ability.bunc_scattering or
        joker.ability.bunc_hindered or
        joker.ability.bunc_reactive
      )
    end
  end,

  use = function(self, card)
    local joker = G.jokers.highlighted[1]

    PB_UTIL.use_consumable_animation(card, joker, function()
      joker:set_rental(false)
      -- For some reason set_perishable just ignores the parameter, while set_rental properly uses it
      joker.ability.perishable = nil
      joker.ability.perish_tally = nil
      joker.ability.bunc_scattering = nil
      joker.ability.bunc_hindered = nil
      joker.ability.bunc_reactive = nil
      SMODS.recalc_debuff(joker)
    end)
  end
}

[SMODS paperback "utilities/misc_functions.lua"]:162: attempt to call a nil value -> This is just the register/load items call

slim ferry
#

what

#

ohh

red flower
#

if SMODS.find_mod("bunc") then will always be true

#

if next(SMODS.find_mod("bunc")) then is what you want

mystic river
#

i always forget that empty tables are truthy <.<

viscid talon
#

ok its in an en-us.lua file now

vernal path
red flower
#

lua depends a lot on checking nil so it makes sense

mystic river
#

(the other thing i always forget is that comparisons aren't distributive, but i literally don't know a language where they are :v )

vernal path
viscid talon
#

how do i load the en-us.lua file in my main.lua file

red flower
#

yeah i was going to ask for the full log

red flower
viscid talon
#

o

#

i keep getting the same error

#
return {
    descriptions = {
        other = {
            hatch_burdened = {
                name = "Burdened",
                text = {
                    "Take up",
                    "an extra slot",
                },
            },
        },
  dictionary = {
  },
  misc = {
    labels = {
      hatch_burdened = "Burdened"
             }
         }
    }
}``` in en-us.lua
vernal path
red flower
viscid talon
#

yeah

#

oh did i spell it wrong

#

hold on

slim ferry
#

i think

viscid talon
#

I SPELT IT AS LOCALISATION (british)

red flower
#

missing a comma

vernal path
#

oh goddamnit

viscid talon
#

i still get the error tho

viscid talon
#

so how would i write it out then, bc i tried frankensteining it together and idk what goes where

red flower
#

Other is also lowercase still

#
-- Tooltip
return {
    descriptions = {
        Other = {
            hatch_burdened = {
                name = "Burdened",
                text = {
                    "Take up",
                    "an extra slot",
                },
            },
        },
    },
    dictionary = {
    },
    misc = {
        labels = {
            hatch_burdened = "Burdened"
        }
    }
}
viscid talon
#

oke

red flower
#

smodsless jokerdisplay will be a thing once i fix this

viscid talon
#

it work!!!!!

#

thankesi

vernal path
sturdy compass
umbral zodiac
#

jokers 2 just dropped and you have 0/5 of those

red flower
gaunt folio
#

im def doing this wrong but what it tries to do is modify every joker thats a specific set in hand. Im not sure the amount of people who know how to fix this but if you can, anything helps as it currently does nothing

wintry solar
#

show the CSMODS.modify_joker_values function

gaunt folio
#

the full thing? just stating, somethingcom told me to use this for modifying

queen crescent
viscid talon
#

is there anything i can do abt that blank tooltip box

red flower
#

yeah your localization is still wrong then

#

idk how

wintry solar
#

stake win sticker maybe?

gaunt folio
#

Is there a way to detect if a card is in a specific pool? the "Set" thing doesn't work for whats needed

red flower
gaunt folio
#

custom pool, this doesnt work and i figure im not doing it right

red flower
#

that's for Joker, etc

gaunt folio
#

ahhhhhhhhhhhhh

red flower
#

(card.confg.center.pools or {}).EveryImasJoker if the pool is defined in the joker

#

is imas idolmaster

gaunt folio
#

yeah my friend whos also developing wants some cards from the series in

gaunt folio
#

hi vro

red flower
#

nice

sharp arch
#

anyone wanna help me figure out how to make a custom currency

red flower
#

check hotpot

#

or paya's mod

stiff locust
#

how do I make one of those UI elements where you select a value from a list

#

by pressing left

#

and right

red flower
#

create_option_cycle

gaunt folio
#

the intent is to multiply every joker thats in a specific pool but nothing comes out. Ive been trying to fix this for way too long, help.

if context.end_of_round then 
  for _, joker in pairs(G.jokers.cards) do
    if (card.config.center.pools or {}).EveryImasJoker then
                CSMODS.modify_joker_values(G.jokers.cards[_], {["*"] = 1.1}, {x_mult = 1, x_chips = 1})
        end
    end
end```
buoyant crag
#

would there be a way to have playing cards act as negative without them actually being negative? i have a similar effect already done by hooking get_id, but i haven't found a similar hook for editions

wintry solar
gaunt folio
#

okay nice it works

#

doesnt quite work perfect yet but i can figure that out

warped ocean
#

yo chat am i being stupid cause for some reason this gives me a crash

frosty rampart
#

posting the crash would probably help

warped ocean
#

didnt make much sense to me

#

line 27 is message = "Lung Cancer!"

frosty rampart
#

ah right
you need commas in the return table

warped ocean
#

oh right im dumb

#

ty mate

frosty rampart
#

no problem

viscid talon
#

also

#

how do i make custom color codes?

#

e.g. if i wanted to make aG.C.CYAN

warped ocean
#

yo yall know why for some reason it gives nil for the numerator rather than the actual number?

viscid talon
#

🤔

#

this looks like jokerforge code

gaunt folio
#

alrgiht it does the function, but doesnt quite multiply it by 1.1
(before and after provided)

warped ocean
#

nvm got it

gaunt folio
#

though i think might have the issue

warped ocean
#

i did make it myself tho

viscid talon
#

i think its probabaly bc of the 1mult formatting

slim ferry
#

joker forge code highkey sucks so i dont think thats a good thing

#

but also theres no real issue here so

#

idk why

viscid talon
#

oh no im not slandering their code

viscid talon
slim ferry
#

if it was joker forge the probability identified would be like "group0x..."

red flower
warped ocean
#

yeah nah it still does it when i changed it to a different way of doing it

#

weird

red flower
viscid talon
#

i dont get it

#

heres the en-us.lua file rn

red flower
#

does the stake use loc_txt

warped ocean
#

not 1 mult

viscid talon
#

ohhh ok im wrong

viscid talon
red flower
#

ok then alongside name and text add

sticker = {
  name = "name Sticker",
  text = {
    "Used this Joker",
    "to win on {C:attention}name",
    "{C:attention}Stake{} difficulty",
  },
}
#

change the name part for what you want it to say

viscid talon
#

Oke

warped ocean
#

tried to change it to this but it didnt help much loc_vars = function(self, info_queue, card) return { vars = {(G.GAME.probabilities.normal or 1), card.ability.extra.odds, card.ability.extra.xmult, card.ability.extra.lmult} } end,

warped ocean
#

nvm it fixed

#

idk why it didnt show?

#

maybe i forgot to ctrl s

slim ferry
#

you put numinator in the return

#

instead of numerator

warped ocean
#

ohh ic ty mate

#

dunno why this is popping up as im not doing that t-t

#

omg

#

im such a div

#

nvm

gaunt folio
#

The Script works, but doesnt multiply by 1.1 at all. If anyone knows, how could this be fixed?

#

this is in a joker slot with multiple jokers though so if it compound multiplies then that would be interesting

viscid talon
#

how do i get my custom stake sticker to show up? its currently showing the white sticker. im aware i have to do an atlas, but how if the stake already has an atlas?

#
SMODS.Stake {
    name = "Rose Stake",
    key = "rose",
    prefix_config = {  applied_stakes = { mod = false } },
    applied_stakes = { "gold" },
    pos = { x = 0, y = 0 },
    sticker_pos = { x = 1, y = 0 },
    loc_txt = {
    name = "Rose Stake",
        text = {
            "Shop can have {C:attention}Burdened{} Jokers",
            "{C:inactive,s:0.8}(Take up an extra slot)",
            "{s:0.8}Applies all previous Stakes",
        },
    sticker = {
    name = "Rose Sticker",
    text = {
        "Used this Joker",
        "to win on {C:attention}Rose",
        "{C:attention}Stake{} difficulty",
        },
    }
},
    atlas = 'CustomStakes',
    shiny = true,

    modifiers = function()
        G.GAME.modifiers.enable_hatch_burdened = true
    end,
    colour = G.C.RED,
}```
frosty rampart
#

sticker_atlas = "something"

viscid talon
#

o i see

#

it ok i fixed it

daring fern
dawn granite
#

what's a good way of like destroying all cards held in hand
i wanna do a joker where if you play a single card all cards held in hand are destroyed but i can't think of a good way

gaunt folio
#

poorly worded

daring fern
urban surge
#

Is there a way for a deck to have cards that have a variety of different backs?

rocky plaza
red flower
#

you can give a card a different back

rocky plaza
#

Oh wait you could set the back sprite

#

i think

red flower
#

it would just involve keeping it consistent between reloads

#

yeah

urban surge
red flower
#

uhhh idk that's why i didn't answer at first lol

urban surge
#

Ah

red flower
#

probably hooking some start of run functions to change all the backs

rocky plaza
#

like the key to the atlas and the position

#

then set the card's back sprite correctly within a Card.set_sprites hook

gaunt folio
# daring fern `SMODS.destroy_cards(G.hand.cards)`

for whatever reason, cards dont multiply by its intended value, in this case being 1.1. Here is a photo of one joker that it multiplies before and after. This equates to 1.324, though its multiple cards so idk what makes it like this

#

i replied to the wrong thing but i honestly just meant to get a ping so 🤷

loud citrus
#

is there a way i can check to see if it's a showdown instead of looking for a name?

red flower
loud citrus
sly finch
#

Is there a guide in how to make your own modded card enchantments?

red flower
# sly finch Is there a guide in how to make your own modded card enchantments?
GitHub

A Balatro Modding Framework. Contribute to Steamodded/smods development by creating an account on GitHub.

GitHub

Contribute to nh6574/VanillaRemade development by creating an account on GitHub.

spiral mural
#

how would i do this

unreal ibex
#

hey guys, do you know how i could display a "nope" (like the wheel of fortune card" when the random doesnt hit ?

#

joined the discord just for that because im going crazy

#

stuck on this for 2 hours now

red flower
unreal ibex
#

i made a joker that has a 1/4 chance to create a random negative joker on blind skip

#

i wanna display a nope when you skip a blind and it doesnt proc

red flower
#

you can return { message = localize('k_nope_ex') }

unreal ibex
#

thanks A LOT

#

and what are the suffix and prefix 'ex

#

and k for ?

red flower
#

'k_nope_ex' is a key in the vanilla localization, the prefix and suffix are not important that's just how the key is
ex means exclamation because it's Nope!, k probably means key or something

unreal ibex
#

man ur the best

unreal ibex
red flower
#

thank u i made it

#

there's a wiki with an FAQ in there

unreal ibex
#

im learning how to code by doing a balatro mod (its my first time programing AT ALL)

#

i was losing my mind inspecting the game s source code

red flower
#

thats how i learned lol but there are plenty of resources now

red flower
grizzled tide
#

do yall have any idea why #1# is still changing with seals_remaining?

red flower
#

because... it's the same value?

grizzled tide
#

i thought lua is pass by value?

umbral zodiac
#

loc vars is called every time the description is shown

grizzled tide
#

ah

umbral zodiac
#

youre getting the same value twice

red flower
#

thank you i wasn't understanding what the confusion was lol

umbral zodiac
#

😭

#

to fix it i might recommend you have 2 values, one for the max/starting value and one for the current
you also could do self.config.extra.seals_remaining (as self is the prototype, and thus has unchanging values) but thats not how i'd do it

umbral zodiac
#

for sure

gaunt folio
tidal hemlock
#

noooooo all of my assets are off by one

smoky bramble
#

thats kinda a goated effect though

#

wait yeah thats just a better mult enhancement 😭