#💻・modding-dev

1 messages · Page 327 of 1

heady siren
#

I like lua [=

lethal stratus
#

do you like my joker

tall wharf
limber blaze
#

btw for manually loading files you should prob do something similar to entropy where you store file names in a table then load them instead of calling SMODS.load_file manually multiple times

gusty iron
hasty mist
#

lua is frustrating sometimes, it SCARES me that its one of the easiest languages to code in

unborn bay
#

im technically doing that for jokers by rarity but that's it

hearty sun
#

Here it is
Divide every number by 9 cause this is the breakdown among the "minority groups" and 1/9th answered the question

hasty mist
limber blaze
#

ie:

local files = {
"tags",
"jokers"
}
for i, v in pairs(files) do
  local result, err = SMODS.load_file(v..".lua")
  if results then results() else error("error in file: "..v..": err)
end```
hasty mist
lethal stratus
gusty iron
#

i legit just cant use my leftshift for a while gg guys 😭

hearty sun
#

Like, a 3.5% of trans people is enormous compared to the average
It's honestly quite funny

lethal stratus
#

programmer socks :)

tall wharf
unborn bay
#

insert roffle lite speech bubble image

hasty mist
#

ive been around trans people for like 5 years its quite embarrassing i didnt realize i was trans until a year ago

gusty iron
lethal stratus
heady siren
#

Oh no I can't use my backspace or arrow keys! (I didn't tap alt)

gusty iron
hasty mist
heady siren
hasty mist
#

i love vouchers

tall wharf
#

i think it should give you an extra booster pack just for the funsies

lethal stratus
#

last time i showed it off i got clowned

sage crater
#

hey folks,
trying to import some card art for face cards.
a) does the art need to be in a sprite sheet?
b) do the cards need to be a certain width apart?
c) I copied the code from another mod I found and tried to only edit what I needed to. Is there any reason code-wise that my game is crashing? ```lua
local atlas_key = 'MW' -- Format: PREFIX_KEY
-- See end of file for notes
local atlas_path = 'MW_lc.png' -- Filename for the image in the asset folder
-- local atlas_path_hc = 'MW_hc.png' -- Filename for the high-contrast version of the texture, if existing

local suits = {'hearts'} -- Which suits to replace
local ranks = {'King', 'Queen', "Jack"} -- Which ranks to replace

local description = 'Mouthwashing cards' -- English-language description, also used as default


-- You should only need to change things above this line --

SMODS.Atlas {
key = atlas_key .. '_lc',
px = 71,
py = 95,
path = atlas_path,
prefix_config = {
key = false
} -- See end of file for notes
}

if atlas_path_hc then
SMODS.Atlas {
key = atlas_key .. '_hc',
px = 71,
py = 95,
path = atlas_path_hc,
prefix_config = {
key = false
} -- See end of file for notes
}
end

for _, suit in ipairs(suits) do
SMODS.DeckSkin {
key = suit .. "_skin",
suit = suit:gsub("^%l", string.upper),
ranks = ranks,
lc_atlas = atlas_key .. '_lc',
hc_atlas = (atlas_path_hc and atlas_key .. '_hc') or atlas_key .. '_lc',
loc_txt = {
['en-us'] = description
},
posStyle = 'deck'
}
end

lethal stratus
#

code jumpscare

tall wharf
sage crater
unborn bay
#

ally

lethal stratus
#

:3

unborn bay
#

aikoyori when are you adding ally as a joker

tall wharf
#

rog ally joker

paper zealot
lethal stratus
#

allison is the name of a vivid stasis characteer

sage crater
#

what is this server's fascination with the question mark emoji

lethal stratus
#

(also lesbians)

heady siren
#

How do I get a value inside an enhancement config from a separate source, I tried self.ability.value and self.config.value and it's not working

tall wharf
tall wharf
lethal stratus
#

with a side of plurality

tall wharf
#

(I'm bad at rhythm games)

hasty mist
lethal stratus
#

@tall wharf there's a prelude mode so you can beat the bosses and enjoy the story

hearty sun
heady siren
lethal stratus
#

:(

#

hey, they might come back sometime, if you want them around they'll show up someday

tall wharf
#

i just think it's neat

gusty iron
#

I LOVE THAT GAME SO MUCH

heady siren
tall wharf
hasty mist
#

ive never been able to learn a coding language before until lua, now i already have a basic grasp of lua, ive made 7 jokers and a boss blind in the span of 3 weeks

tall wharf
#

or the yuri game

gusty iron
hasty mist
#

i remember trying to learn java (or javascript whatever idk the difference) on khan academy and getting so upset i quit using technology for a week

#

(i was TIRED of drawing ELIPSES)

unborn bay
#

22 jokers, 1 boss blind, a new consumable type, and others in 2 weeks ,,,,,,,

gusty iron
#

i have alot of experience with lua (roblox developer!!!!!!!)

unborn bay
#

i only started modding balala because i saw aiko's mod and thought "hey i wanna do that"

gusty iron
#

i originally made retextures

paper zealot
gusty iron
#

but i wanted to do something more

heady siren
#

I managed to make a modular consumeable that functions in an entirely different way for each instance of itself

unborn bay
#

hi aikoyori

gusty iron
#

also aiko's mod lets you play "nitoglycerine", so it gets an instant 10/10 from me

tall wharf
#

tnt

hasty mist
#

a few things inspired me to start modding and i was considering trying to learn for a few weeks but ruby's entropy is what really convinced me to commit to learning

tall wharf
#

i can't keep up with the new mods

#

i need to one up myself

unborn bay
#

i need to add chess deck to my mod

gusty iron
#

you get more chips based off of rating

tall wharf
#

no you just

hasty mist
#

unfortunately i am an extremely ambitious person and will always dig myself into a hole of frustration trying to code something COMPELTELY unfeasible for my skill level

tall wharf
#

start playing stepmania

hasty mist
#

i was trying to make boss blinds skippable the other day

tall wharf
#

if you lose all energy you just lose the game

hasty mist
#

didnt go well

gusty iron
#

Warioware joker go brrr

#

this is gonna be

#

funny to code

tall wharf
#

adding klondike to balatro

brisk rose
#

I'm like... the worst at teaching myself anything, hence why I still haven't properly started modding

tall wharf
#

if you ask me how to ui i wouldn't be able to answer

hasty mist
#

i dread the day ill have to dip my feet into ui

#

i know itll happen

#

but its scary...

unborn bay
#

the worst part about ui is lovely patching ui

gusty iron
unborn bay
#

its goddamn FLEXBOXES !!!!

#

a web dev's worst nightmare

#

also you'd also need to account for the odd restrictions that ui nodes have

sage crater
#

atm I don't have a x2 folder

#

if that is necessary, then that's probably why haha

brisk rose
sage crater
#

damn

#

ok, what if I just input a big white png for the time being?

hearty sun
#

I assure you, while flexboxes are kinda bad, they are WAY better than any other solution that exist on the web
(And honestly, people overexaggerate how bad they are)

sage crater
#

will that still load everything at least?

brisk rose
sage crater
#

oh ok

#

how do you do that on gimp lol

hearty sun
#

Was it ever considered to add an option to auto-generate it?

unborn bay
#

there's a python script that can do that for you

paper zealot
brisk rose
#

Or none I guess they call it in gimp

gusty iron
sage crater
hearty sun
tall wharf
unborn bay
#

game development !!!

brisk rose
#

And ofc to make it 2x just keep them linked and multiple one dimension by 2

hearty sun
#

And multiply by 2 any of the width or height field (adding *2 to it is enough)

tall wharf
#

i was thinking

#

what if

gusty iron
brisk rose
#

Once of the few

gusty iron
#

but if you want to make the ui as a collab (im delusional), feel free to help!

tall wharf
#

you play rhythm games but you start the game with the total score in the round

#

as starting HP

#

🤯🤯🤯

hearty sun
#

Honestly, GIMP is far better than most people give it credit for
Its UI used to suck massively, but it improved A LOT since
Like 3.0 is so nice to use; non-destructive editing is so nice

brisk rose
#

Which is why I prefer krita

tall wharf
#

like i wanna get solitaire running in the game first

hearty sun
#

I mean, yeah of course preference is fine
But criticizing something for the sole reason of not being used to it is a bit dumb

hasty mist
#

i forgot about solitaire

gusty iron
gusty iron
brisk rose
gusty iron
#

Im gonna make the timer just a simple countdown because i do NOT feel like making bomb sprites

hasty mist
#

im not sure whats wrong here

paper zealot
hasty mist
#

wait i think i fixed it

#

how in the world did that happen

paper zealot
paper zealot
# hasty mist fuck

Your joker.lua file references the variable start that hasn't been created yet. When you're using multiple files, you have to be careful of what's declared when, and in which order they're being loaded

hasty mist
# hasty mist fuck

this is where its crashing, this code worked just fine when everything was in one file

hasty mist
#

do i have to do something else to make it load first

woeful pivot
#

how can i make a joker detect if a card is a specific number?

daring fern
paper zealot
outer dagger
#

Is there a good github repo I can fork to just look at some mods?

I have a joker I want to trigger at the START of round

hasty mist
#

ah

#

ughh what now

#

same line different crash

#

start is being loaded first now

#

this is the start variable for reference

#

should it not just load as intended?

#

i dont get whats failing

paper zealot
#

The problem is the scope. start only exists in its own local file

sage crater
brisk rose
paper zealot
# hasty mist i dont get whats failing

But you don't just want to make it global, because then you've introduced a new global that pollutes the namespace for all mods. Good practice is to just keep one global table for your mod, then add variables that you want to share between files as members of that table

hasty mist
#

how would i do that?

#

i only have three variables right now that are in different files to where they're referenced

tall wharf
#

wait

#

why don't you just use math.pi

unborn bay
#

im pretty sure euler and pi are defined in the math library

hasty mist
#

i am a brand new coder

paper zealot
# hasty mist how would i do that?

Convention is that in your main_file, you declare the global YourMod = {}, then add variables to it with something like YourMod.start = love.timer.getTime(), which can then be accessed both by you and others anywhere

hasty mist
#

alright, thank you

tall wharf
paper zealot
#

That's exactly what SMODS is, by the way - SMODS is the global table, and SMODS.Joker is just calling the function Joker that's stored as an entry inSMODS

hasty mist
#

i see

paper zealot
unborn bay
#

here's the funny thing about tables

#

they're like pointers

limber blaze
#

SMODS.current_mod iirc is your mod when your mod loads in

tall wharf
limber blaze
#

so when the main file is loaded

#

but i dont use current_mod anyway so idk

gusty iron
#

question, how do i actually draw the ui?

limber blaze
#

im just doing what cryptid does where i lovely patch my table initialisation really early for crossmod support

hasty mist
#

also, i have many jokers that perform arithmetic directly on your score, such as this one, all of them are extremely hardcoded, how do i migrate these to their own function that i can call so i don't have to keep them hardcoded?

paper zealot
# gusty iron question, how do i actually draw the ui?

If it's created and parented properly, it'll draw itself. You just need to create the type of UIElement you want, with a definition and a first node of type G.UIT.ROOT, and with the config.major set to an appropriate parent (typically G.ROOM)

gusty iron
#

so would this work?


            -- Create a UI overlay for the microgame
            local microgame_ui = {
                n = G.UIT.ROOT,
                config = {
                    align = "cm",
                    colour = G.C.CLEAR,
                    padding = 0.1,
                    r = 0.1
                },
                nodes = {
                    {
                        n = G.UIT.R,
                        config = {
                            align = "cm",
                            colour = G.C.CLEAR,
                            padding = 0.05
                        },
                        nodes = {
                            {
                                n = G.UIT.T,
                                config = {
                                    text = "Press Space!",
                                    colour = G.C.UI.TEXT_LIGHT,
                                    scale = 0.5
                                }
                            }
                        }
                    }
                }
            }
manic rune
#

do i hook into SMODS.calculate_context to always have an effect running in a certain context?

#

just to be sure

weak brook
#

does anyone have a clue as to what this crash might be caused by? im getting reports of this from playtesters and i cant for the life of me reproduce it

hasty mist
#

god this is a mess

#

i have no idea how to do any of this

paper zealot
# gusty iron so would this work? ```lua -- Create a UI overlay for the microgam...

That's a set of nodes, which you then provide as the definition when creating a UI.
Try something like:

if G.HUD_microgame then
  G.HUD_microgame:remove() --if HUD already exists, remove existing one
end
G.HUD_microgame = UIBox({    --create and initialise a new UIBox
  definition = microgame_ui, --your definition here
  config = {
    major = G.ROOM,          --attach to the room
    align = 'cm',
    offset = { x = 0, y = 0 },
    colour = G.C.CLEAR       --set background colour clear
  }
})
``` and see what happens
gusty iron
#

where/what do i replace with this?

paper zealot
#

No need to replace anything, just place it in an appropriate spot after you create the microgame_ui definition

gusty iron
#

i dont think its showing up

weak brook
hasty mist
#

ive done this wrong but i cant figure out how

#

ive tried multiple variations of this

paper zealot
# hasty mist im so lost

Almost there. You're trying to add members of the table to the table within the table.
Just define AST = {}, then do AST.etc = etc as needed

hasty mist
#

ah

gusty iron
hasty mist
#

this seems to work now, thank you!

woeful pivot
daring fern
paper zealot
gusty iron
gusty iron
#

cause it returns the RANK

gusty iron
sonic cedar
#

Will this trigger a chip gain whenever one of these certain boss blinds is triggered? That is the intent but i want to make sure that it's correct

hearty sun
#

Otherwise, trying it in game is the best way to know if it works

unborn bay
#

if m6x11 was monospace i would use it as a coding font

paper zealot
gusty iron
sonic cedar
gusty iron
#

we are one step closer to mindwave joker

paper zealot
gusty iron
#

OKAY

#

THE TEXT IS IN THE MIDDLE NOW

#

I just need to

#

check if you press space

#

how the HELL do i do that-

brazen tusk
#

anyone down to help me troubleshoot getting a sound to work that is currently crashing the game?

#

currently says the sound doesn't exist so i imagine its a naming issue

#

this is where is put the sound in, can only imagine the problem is there?

paper zealot
# gusty iron how the HELL do i do that-

Not the simplest thing, if you want to be compatible with other mods that add keybinds like Handy and typist. I'd check how they do it - would involve Controller:key_press

unborn bay
#

you could also not care about that and just use love2d input check functions

paper zealot
gusty iron
brazen tusk
paper zealot
brazen tusk
#

oh i just made the key and the file name the same and that seemed to work

#

not gonna question it

gusty iron
#

okay so like

        if context.before then
    
            microgame(self)
            repeat
    delay(0.1)
    until finished
            if pressed then
                card.ability.extra.multg = card.ability.extra.multg + card.ability.extra.Xmult
            else
                card.ability.extra.lives = card.ability.extra.lives - 1
                if card.ability.extra.lives <= 0 then
                    G.E_MANAGER:add_event(Event({
                        func = function() 
                            card:start_dissolve(nil, G.jokers)
                            return true
                        end
                    }))
                end
            end
        end

        if context.joker_main and not context.blueprint then
            return{
                card = card,
                mult_mod = card.ability.extra.multg,
                message = '+'..card.ability.extra.multg.." Mult",
                colour = G.C.MULT
            }
        end
    end
}

this just hard-crashes the game

#

any help

#

im trying to make it so that it waits to score until the microgame is finished

ancient plinth
#

I finally got that one joker working

hearty sun
# sonic cedar

The answer is YES, it does trigger!
I don't see any other problem, at all!

thorn flame
#

tooltip: triggers everything for no reason

hasty mist
sonic cedar
#

I just wanted chip gain matador is that so much to ask

brazen tusk
#

should this go down to a 2? bit easy to get mult quick

manic rune
#

really nice for deck fixing

brazen tusk
#

yeah i feel like thats a huge boon as is

manic rune
#

mhm, but thats honestly all i find it useful for

#

the Mult isnt too good

brazen tusk
#

theres an initial 39 mult off of the base 13 hearts cards then it slows down a lot

outer dagger
#

Vibe check?

brazen tusk
shut crater
chrome widget
#

How do I remove items from their default pool?

brazen tusk
manic rune
#

+50 mult isnt that good

#

but the handsize definitely is

brazen tusk
#

the hand size is great

chrome widget
#

I.E. I have a "joker" item that's meant to just be used for Challenge displays, but it's not a real joker. I can easily hide it from the collection, but what's the best way to avoid keeping it in the regular joker pool?

#

Just use the in_pool function individually?

brazen tusk
outer dagger
#

Good upsides, bad downsides

#

but evenly distributed good and bad

shut crater
#

well right now only one of the 3 buffs has both an upside and a downside

outer dagger
#

What would be a good downside for Mult?

brazen tusk
#

well you've already got random chance so

outer dagger
#

I think adding hand size but destroying cards randomly is good for hand size

brazen tusk
#

id say just have a good result and a bad one maybe?

shut crater
#

I worry that adding more mechanics to what you already have is going to make it very wordy and convoluted

brazen tusk
#

i agree

#

depends on what your mod is doing though, if its all about adding wordy jokers then thats the intention

sturdy compass
#

Does anyone happen to know how I would access the number of jokers (or any card type) are unlocked from my mod specifically?

Alternatively, how would I add new stats to a profile?

shut crater
#

I think you could make the ability choose 1 of these 3:

  • +50 mult
  • +4 hand size
  • +lose all $
#

and it would feel reasonable

outer dagger
#

Every time I tried to make a choose UI box I got crashes xD

#

if you can point me to a good example haha

shut crater
#

oh I didn't mean choose lol

brazen tusk
#

well it would be random still

shut crater
#

I meant the joker chooses

outer dagger
#

Hmmm this is the "Demonic Ritual" meaning something is sacrificed

#

and something is gained

#

but I hear yall

brazen tusk
#

maybe it takes $10 and does one of a couple good things?

shut crater
#

what about essentially being a rental joker and randomly select one buff?

outer dagger
#

HMMMMM

#

Good vibes

#

okay thank you

brazen tusk
#

easier to balance then bc you just change the money it takes based on how good your effects are

#

& what rarity you want it ig

naive raptor
#

im trying to make a joker that creates a spectral card when both blinds are skipped. im assuming the best way to do this is just a variable that goes up 1 whenever a blind is skipped, resets to 0 when a blind is selected, and when it it = 2, set it to 0 and create a spectral card. how would i detect when the blind is skipped?

subtle hawk
#
            isDoorult = false
            card:start_dissolve()
        end```
This one is meant to set isDoorult to false before dissolving so if you get the joker again it would usable. But that doesn't seem to work
shut crater
#

probably should have the variable in card.ability.extra?

#

then it would die with the joker

naive raptor
shut crater
icy oak
#

how do i split my main mod file into multiple files?

outer dagger
icy oak
#

i see other mods doing it but idk how

shut crater
outer dagger
#

hmhmmamamam thank you! 🙂

brazen tusk
shut crater
brazen tusk
#

i can show you guys my set up

brazen tusk
#

so in the main folder i have a jokers folder and in that i have the luas for all my jokers

#

those are set up like jokers would be in main

icy oak
subtle hawk
subtle hawk
brazen tusk
#

like this

shut crater
#

G.GAME is where global variables should usually go, and in this case it seems like the right place for your isDoorult variable

daring fern
icy oak
#

smods.load_file i see

#

looks like a pain to copy paste tho

brazen tusk
#

in what sense?

unborn bay
#

you'd have to manually add each joker to the list instead of automatically adding each of them

#

i guess

icy oak
#

^

brazen tusk
#

i'd argue its a lot easier than scrolling through a gigantic lua file with all of your mods code in it

icy oak
#

thats true, thats what im looking to do

unborn bay
#

personally i just do something like this

-- Load all files in a folder
function PTASaka.RequireFolder(path)
    local files = NFS.getDirectoryItemsInfo(PTASaka.Mod.path .. "/" .. path)
    for i = 1, #files do
        local file_name = files[i].name
        if file_name:sub(-4) == ".lua" then
            assert(SMODS.load_file(path .. file_name))()
        end
    end
end

PTASaka.RequireFolder("content/jokers/rare/")
#

PTASaka.Mod is a shortcut to uhh SMODS.current_mod btw

brazen tusk
#

see thats a lot of words i dont know the function of xD

dense adder
#

is there a way to only retexture some of the boosters in the booster png, rather than all of them
SMODS.Atlas {kind = 'Celestial', key = "Booster", path = "boosters.png", px = 71, py = 95, prefix_config = { key = false } } im just trying to retexture the celestial boosters not all

gilded narwhal
#

okay guys if i wanted to modify the base sprites of jokers with a soul layer but not touch the sprite of the soul layer as they are being generated in a booster pack, how would I go about doing that?

#

I have this thing that's pretty advanced and I would like all the help I can get 😭

tender ermine
#

How would one create a tarot card with a specific key? I have been trying forever and I can’t stop this error about an error about center being nil. This only happens when I use the key property to force a specific card.

daring fern
shut crater
shut crater
subtle hawk
#

How do I enable G.deck optional feature?

gilded narwhal
#

I've gotten step 1 but that's basically it

daring fern
subtle hawk
daring fern
subtle hawk
#

Thanks!

tender ermine
#

OOOH, I was missing the c_ (responding to some 2 people a couple messages up) thank yall!

shut crater
heady siren
#

Is it possible to add extra layers to a card? Non-legendary / floating / whatever

#

Worst case scenario I can use stickers

heady siren
#

Can I do it based on code rather than definition of the card?

icy oak
daring fern
heady siren
#

I wanna make the layers of the card change depending on extra variables of the card

brisk rose
gilded narwhal
#

Any

brisk rose
# gilded narwhal Any

Then an additional thing to account for is not all legendaries actually having soul layers

hearty sun
#

How do you fetch the localize name of a Poker Hand?
Cause I'm doing something wrong, but I don't know why...

-- jokers.lua
config = {
  extra = {
    hand = "aod_sequence",
    xmult = 2,
  },
},

loc_vars = function(self, _, _)
  return {
    vars = {
      self.config.extra.xmult,
      localize(self.config.extra.hand),
    }
  }
end,
-- en-us.lua
misc = {
  poker_hands = {
    ["aod_sequence"] = "Sequence",
  },
},
brisk rose
daring fern
unborn bay
high sinew
#

anyone know why this is an error?

brisk rose
high sinew
#

yea i think so

high sinew
#

idk if i need to add something for it

brisk rose
daring fern
brisk rose
high sinew
#

i thought i did

brisk rose
daring fern
high sinew
#

im still elarned localization just caught onto how it works lol thx man

brisk rose
#

Or seals don't have mod badges by default?

manic rune
hearty sun
#

Dumb question, but is there a mod to spawn in jokers for testing?

manic rune
#

i got it working :3

manic rune
#

yup, that ☝️

daring fern
brisk rose
#

I hate that then... and that blinds dint either

#

I mean... They're smods objects so it should just be built in like fir jokers abs consumables

manic rune
#

bump

#

or does anyone know a mod that uses it?

brisk rose
#

I'm pretty sure tooltips are all through the info queue?

high sinew
manic rune
manic rune
brisk rose
high sinew
high sinew
brisk rose
#

Oh it's the consumable type badge

#

The mod badge is fine

shut crater
high sinew
#

lemme try

manic rune
#

but how

gilded narwhal
brisk rose
crystal perch
#

anyone know how to set up a use function on a consumable that would destroy the selected jokers

brisk rose
daring fern
crystal perch
#

thank you!

brisk rose
#

You're using double quotes for one, I don't remember if Lua is okay with that

shut crater
brisk rose
#

In any case they're missing the collection label

manic rune
#

so its mandatory that i use something from G.P_CENTERS

#

thats not too flexible

brisk rose
manic rune
#

hm

brisk rose
chrome widget
#

For the uiheads here, is there a way to intentionally make a UI element extend beyond the bounds of its parent?

brisk rose
crystal perch
#

anyone know if there's a function i can call that opens a specified booster pack type?

#

ideally one that could be used anywhere, not just part of the calculate function, for example

brisk rose
crystal perch
#

good idea

brisk rose
#

Toga has a few

crystal perch
#

the base game also does

#

ill look in my extracted balatro code first just to see

brisk rose
crystal perch
#

yeah but it still works

#

just gotta reformat it here and there

brisk rose
#

I mean.. ofc your can usually stuff base game code in snodded but it's probably gonna be worse and less compatible

crystal perch
#

cross referencing the toga and base game stuff it's the same

brisk rose
brisk rose
#

But I'm... not by any means a proper modder

sturdy compass
#

The thing is I feel like there should be an easy way to do this since you can see the number in the mods menu under the mod's additions tab

brisk rose
sturdy compass
#

Exactly. However, I cannot find it lol

unborn bay
#

could be something in the profile

#

idk

brisk rose
#

If only memory-viewer style debugging wasn't deadass against the rules for some reason

#

At least I think that's what rule 3 means

unborn bay
#

printing the entire profile table

crystal perch
sturdy compass
sturdy compass
brisk rose
#

I'd suggest to find the code that generates the additions dialog abs see what it's doing

sturdy compass
#

I tried that too and it was not helpful at all 😭

crystal perch
#

actually it just seems like each joker just has a discovered true/false variable

#

i don't think there's a game variable that tracks total jokers discovered, especially not filtered by mod

#

you may just have to iterate through every joker with your mod key and check if their discovered is true 😭

sturdy compass
#

wait holy shit I think I found it in a very generic looking function LOL

high sinew
#

why is this happening XD

sturdy compass
unborn bay
#

green

unborn bay
sturdy compass
#

nah, modsCollectionTally

#

Welp time to derive it lol

subtle hawk
#

Not sure if it's the right place to ask, but is there any documentation to when vanilla uses bumping or floating motion modifiers?

brisk rose
#
    local consumable_nodes = {}
    for _, key in ipairs(SMODS.ConsumableType.visible_buffer) do
        local id = 'your_collection_'..key:lower()..'s'
        local tally = modsCollectionTally(G.P_CENTER_POOLS[key])
        if tally.of > 0 then
            consumable_nodes[#consumable_nodes+1] = UIBox_button({button = id, label = {localize('b_'..key:lower()..'_cards')}, count = tally, minw = 4, id = id, colour = G.C.SECONDARY_SET[key]})
        end
    end
    if #consumable_nodes > 3 then
        consumable_nodes = { UIBox_button({ button = 'your_collection_consumables', label = {localize('b_stat_consumables'), localize{ type = 'variable', key = 'c_types', vars = {#consumable_nodes} } }, count = modsCollectionTally(G.P_CENTER_POOLS.Consumeables), minw = 4, minh = 4, id = 'your_collection_consumables', colour = G.C.FILTER }) }
    end

    local leftside_nodes = {}
    for _, v in ipairs { { k = 'Joker', minh = 1.7, scale = 0.6 }, { k = 'Back', b = 'decks' }, { k = 'Voucher' } } do
        v.b = v.b or v.k:lower()..'s'
        v.l = v.l or v.b
        local tally = modsCollectionTally(G.P_CENTER_POOLS[v.k])
        if tally.of > 0 then
            leftside_nodes[#leftside_nodes+1] = UIBox_button({button = 'your_collection_'..v.b, label = {localize('b_'..v.l)}, count = modsCollectionTally(G.P_CENTER_POOLS[v.k]),  minw = 5, minh = v.minh, scale = v.scale, id = 'your_collection_'..v.b})
        end
    end
    if #consumable_nodes > 0 then
        leftside_nodes[#leftside_nodes + 1] = {
            n = G.UIT.R,
            config = { align = "cm", padding = 0.1, r = 0.2, colour = G.C.BLACK },
            nodes = {
                {
                    n = G.UIT.C,
                    config = { align = "cm", maxh = 2.9 },
                    nodes = {
                        { n = G.UIT.T, config = { text = localize('k_cap_consumables'), scale = 0.45, colour = G.C.L_BLACK, vert = true, maxh = 2.2 } },
                    }
                },
                { n = G.UIT.C, config = { align = "cm", padding = 0.15 }, nodes = consumable_nodes }
            }
        }
    end

Almost looks like this is just doing what I said in the first place

subtle hawk
brisk rose
high sinew
sturdy compass
# heady siren Bump

set_sprite_pos will be your friend. Here's an example of how I do it in a similar application

#

You can do the same thing for back and front

sturdy compass
#

wdym additional?

heady siren
#

I'm also looking to have extra non-legendary / non-floating layers on top of the card

sturdy compass
#

I think that should work just the same

heady siren
#

How do I make those layers?

sturdy compass
#

Oooooh

#

I know Cryptid adds another layer so that might be worth looking into, but I am not well versed in it

heady siren
#

I honestly really don't wanna go digging through Cryptid code

sturdy compass
#

And I cannot blame you for that in the slightest

heady siren
#

I might just be flying too close to the sun, I'm making a modular consumeable with 4 different layers

sturdy compass
#

Mayhaps

heady siren
#

First layer has 4 options, second layer has 17 options, third layer has 4 options, fourth layer has 4 options, and I just realized, there's actually a 5th layer, with 3 options

#

I also need to learn how to do dynatext

strange wasp
#

Hi, I have been having a tsunami of good mod ideas for Balatro, I've only started to learn how to code about a couple weeks ago. And so for things have been okay. When it comes to modding balatro, I find it difficult as to how to use the steammodded or love frameworks. Is there any good resources I can use to help me start creating mods?

ancient plinth
#

Is it possible to track jokers triggering?

daring fern
heady siren
#

I literally have a variable in my own jokers called "triggers" that goes up by one whenever they're triggered and resets on final scoring step

scarlet spire
#

you just need a little snippet of code in your file that looks like this

daring fern
scarlet spire
#

actually didn't unscored cards get moved out of optional features at some point? I should probably just remove that

ancient plinth
#

How do I use it to track jokers triggering also? I wanna use it to make a joker that scales when a joker triggers

high sinew
#

does anyone know issue?

daring fern
high sinew
#

plz😭

ancient plinth
#

How do I make a joker scale also?

daring fern
daring fern
ancient plinth
#

Anyone wanna hear a joker idea I had?

sturdy compass
#

This took a SURPISINGLY little amount of patches. Just three and they're all non-destructive

unborn bay
#

lovely patch ,,,

runic pecan
#

What would happen if return true in G.E_MANAGER is conditional, such as putting it under if #G.jokers.cards < G.jokers.config.card_limit?

#

Would that event keep on queuing until the condition meets?

outer dagger
#

Is there a guide on how to mod? pitfalls, functions, etc?

runic pecan
native zinc
#

pitfalls: not knowing lua

native zinc
#

also the typos in the vanilla code are pretty funny

#

and assuming some functions exist that don't

#

is_suit() and get_id()

daring fern
#

Is there a way to check if a UIBox is currently open?

runic pecan
#

Wait, I get that it's get_id instead of get_rank, but what do you meanis_suit doesn't exist?

sturdy compass
#

card:is_suit

daring fern
native zinc
#

i'm saying that is_rank and get_suit don't exist

daring fern
native zinc
#

oops

#

i've fallen in my own hole

#

oh wait i redefined get_id to be get rank in my misc functions that's why

#

i'm stupid

high sinew
daring fern
high sinew
#

it was there before it existed

#

those are background

rustic swallow
#

why is extra nil here

daring fern
runic pecan
rustic swallow
runic pecan
# rustic swallow

In this case you should return card.ability.extra.money*(G.GAME.current_round.hands_left + 1)

daring fern
heady siren
# runic pecan bump

That doesn't work that way, the return true tells the function it's done executing, if that's ever false, it will continue to run the event every frame

manic rune
#

SO CLOSE

daring fern
manic rune
#

i just need to somehow move the (0/25) to the line below

rustic swallow
manic rune
daring fern
runic pecan
rustic swallow
#

a joker

manic rune
#

what do i need to change here 😭

#

i assumed i needed to change this from G.UIT.R to G.UIT.C, but it didnt change anything

rustic swallow
manic rune
#

did you try starting a new run

rustic swallow
#

thank you all for the help, it worked

heady siren
#

Bump again

#

I just want additional sprite layers

daring fern
manic rune
#

they probably mean stuff like Souls

shell timber
#

like how cryptid has a mid layer?

#

look at how cryptid does it

brisk rose
#

If you go up they want one they can change based on values on the card

#

I think 2 layers is fine just a changing layer

#

It must be possible because aura has some dynamic sprites I think and I don't think it'd be too different

#

Idk how it's done though

heady siren
#

I'm looking for static layers, none of the floating offsets

#

Worst case scenario I can use stickers

manic rune
#

static layers?

heady siren
#

Not floating

#

Just looking like part of the card itself

shell timber
#

look into SMODS.DrawStep

manic rune
#

i have decided to just make my own ui box from scratch 😭

wintry solar
#

What’s this for?

brisk rose
heady siren
#

Now I'm just looking at Card:draw

manic rune
#

i wanted to try and use detailed_tooltip to achieve something like this

#

i wanted to make it so that it read from localization instead of a center

#

but after 30 minutes of tweaking - i genuinely dont know why it doesnt want to move the (0/25) to another line, even when i changed everything to G.UIT.C

brisk rose
brisk rose
wintry solar
#

Draw step is exactly what they need

brisk rose
#

Unless steps can be conditional

wintry solar
#

Of course they can

brisk rose
#

Fair, lol

#

I'm a bit slow sometimes ngl

#

Though the documentation is... obtuse

heady siren
high sinew
wintry solar
manic rune
#

...i wonder wheres the name

#

unless im doing something wrong im not aware of, hm

heady siren
wintry solar
#

Just make your own

brisk rose
#

And then making it as used

high sinew
#

yea

heady siren
# wintry solar Just make your own

I'm currently staring at card_draw.lua and trying to figure out what I'm supposed to copy and what I'm not supposed to copy, I have no idea

high sinew
#

im just making it be where u can always use

brisk rose
wintry solar
high sinew
brisk rose
# brisk rose I mean in the booster logic
        local c = create_card("Snack", G.pack_cards, nil, nil, true, true, nil, 'mills')
    
        -- auto-use the snack card immediately
        if c and c.use then
            c:use(c)
            -- optionally mark as used
            c.ability.used = true
        end
    
        -- optionally remove the card afterwards so it doesn't clog inventory
        c.remove_from_deck = true
    
        return c
    end```
heady siren
#

I feel like a fucking idiot

brisk rose
high sinew
#

i put that in cause it wasnt working

manic rune
#

added {E:1} and shi straight up disappeared 🥀

heady siren
#

How do I reference an atlas, where do I put the position, what variable do I tell to :draw? I do not know how this works

brisk rose
high sinew
heady siren
high sinew
#

yea i think this is what u mean

manic rune
#

i think this looks good enough

heady siren
#

Mults everywhere

manic rune
#

fr...

#

upgrades in I'm Multin' it pretty much just gives you free Mult :p

heady siren
#

She Mults on my Jimbo 'til I The Water

manic rune
#

Splash

heady siren
#

So good I'm Seeing Double

#

Okay, so, if I'm referencing this, what do I replace these variables with to render my own sprite from a specific atlas?

daring fern
rustic swallow
#

why does this not retrigger even when i have oops all 6s

heady siren
daring fern
heady siren
high sinew
heady siren
#

Just like, SMODS.Atlases['atlasname'], and then define a pos somewhere

sturdy compass
manic rune
# daring fern

huh, so blueprint is pretty much the same as brainstorm?

wintry solar
#

It just randomly selects?

manic rune
#

i am so close to

daring fern
wintry solar
#

Oh I see

manic rune
golden lake
#

chat i remember this was answered here before but i lost the place where it was answered

#

what causes these white alpha artifacts around the edges of cards in 2X?

#

i remember this being an encoding issue

#

this issue is exclusive to 2X/pixel art smoothing

brisk rose
golden lake
#

i upscale from aseprite

shell timber
#

the pixels on the outside are probably white with 0 alpha

golden lake
#

this is with no pixel art smoothing

golden lake
#

i deleted the whole 2X sheet

#

re-exported it from Aseprite

brisk rose
#

Just normal exporting at 2x? Weird

tall wharf
#

p sure there is a script that makes it look better

golden lake
#

does this issue persist if even one of my atlases is wrong?

manic rune
#

i think im cooking

golden lake
#

i don't care

manic rune
#

:(

golden lake
#

i'm troubleshooting an issue

#

read the room please

manic rune
#

sorry

unborn bay
#

why are you roffle lite bepis

golden lake
unborn bay
#

the creator of balatro star rail would never be roffle lite

golden lake
manic rune
golden lake
#

which is why i'm thinking if a single atlas being wrong could affect it

brisk rose
tall wharf
#

i don't

heady siren
brisk rose
#

This chat always has multiple threads of conversation going and it's no one's place just to hog it

golden lake
#

i just asked a question and I'm trying to get an answer so I can move on with this

#

this is already frustrating as is

#

forgive me if i'm a little on edge but i've been trying to solve this for an hour

#

and i just want to get this done and over with

heady siren
#

This channel isn't typically known to be consistent, don't shut people down from sharing things because you're personally in a bad mood

tall wharf
golden lake
brisk rose
heady siren
#

Because bepis is actively working on their custom UI system

manic rune
#

i added the " (0 SP)" to show how many skill points you accumulated throughout the run

manic rune
#

so not exactly a repost

golden lake
#

i'm sorry then, it just seemed like one

manic rune
#

its fine

tall wharf
#

okay i found that script

golden lake
#

i didn't notice there was any change

tall wharf
#

the addition of 0 SP

brisk rose
# tall wharf

If it's 2x upscale with no interpolation it's going to be identical regardless of how it's done. That is how it is in aseperite

golden lake
#

the ui system is neat this has just been a headache for me because it's been fine until some other people working with me on the mod insisted that uploading jokers directly to 2X is fine

golden lake
#

and then these artifacts happened

tall wharf
#

if you export 2x directly from aseprite you'll have that weird glow

#

in game

unborn bay
#

i feel like in this case its less of an issue with upscaling and more with love2d being a goofhead

tall wharf
#

which is why that script exists

unborn bay
#

i personally just don't play in 2x so i don't have to worry about it too much 😛

brisk rose
#

Then either aesperite or the script is doing something different than normal nearest neighbor 2x

#

I wonder which it is

wintry solar
scarlet spire
#

due to the way balatro displays 2x sprites, it is going to be different depending on how the upscaling handles fully transparent pixels
the white outline comes from pixel interpolation between transparent pixels, which just happen to be white because I assume aesprite blanks them to save file size or something, but in turn some interpolation techniques see them as white pixels that need to be blended to, introducing the artifact

wintry solar
#

I’ve seen some people before saying you need a transparent outline of your sprites that is the same colour as the adjacent pixels but I’ve never had the weird white glow on my stuff and I just upscale using aseprite 🤷‍♂️

unborn bay
#

i upscale using a python script i stole from morefluff

wintry solar
#

Maybe it’s a screen res issue?

scarlet spire
#

just fix the rendering its so easy (lie)

golden lake
#

for whatever reason just upscaling the sprite not using the export option works

#

this is plain silly

#

i need a break

brisk rose
#

That's what nearest neighbor is

manic rune
#

moved the cost to bottom

scarlet spire
#

yes, but balatro renders the 2x sprites with slight interpolation, thats the whole point of the pixel art smoothing setting

#

the interpolation is on balatro's side, not on the process of creating the 2x sprites

brisk rose
#

Which is why i said one of the methods must not be actually doing scaling sans interpolation

#

For the following interpolation to be different

scarlet spire
#

and that's what I'm saying

#

the game interpolates the sprites on purpose for pixel art smoothing mode

#

the game only uses nearest neighbor sampling when pixel art smoothing is off

golden lake
#

btw for anyone who encounters this issue in the future

#

the solution is to literally upscale *2 in "Sprite Size" in aseprite or whatever program you use

#

do not use export options, they have some weird encoding crap that causes the artifacts

unborn bay
#

when are we getting a lovely patch to fix pixel art smoothing

scarlet spire
#

take it up with whoever invented bilinear sampling

unborn bay
#

bilinear filterz

#

,,,,

#

when are we normalizing bicubic

crisp coral
scarlet spire
#

it might be bicubic I have no idea I just thought that was a funny thing to say

crisp coral
#

bruhhh

#

oh wait i don't use that lol i have an upscale script

unborn bay
#

hi myst

scarlet spire
#

but yeah I assume the export function of aesprite blanks out transparent pixels for... extremely slim file space savings?

#

you're really saving a handful of bytes with this one

golden lake
#

export upscale does some weird stuff

#

sprite size keeps the thing right

#

it is the most painfully weird thing i've encountered

wintry solar
#

I’ve always just exported at 1x with the open spritesheet option checked, then resized that and exported again

heady siren
#

How would I get a DrawStep to draw onto a specific card? It's a consumeable card

unborn bay
#

just use a normal draw function on the card

wintry solar
#

Check the key of the card

unborn bay
#

alternatively just make the drawstep check for the key

#

yeah

scarlet spire
#

I need to get my hands on an upscale script, the number of spritesheets in my mod keeps growing and the only ones I have 2x versions of is an extremely outdated jokers sheet and enhancements sheet

unborn bay
#

we should add hq2x to balatro so that upscaled cards look WORSE

#

emulator filters

scarlet spire
#

script that purposefully applies gaussian blur to your spritesheets and saves over them

undone maple
#

how do i draw a specific thing after each discard? for example, 3 random diamond cards from the deck

hushed field
#

It's the one thing I keep forgetting to fix. The outline artifacts can be ignored sometimes but they look really off on seals

tall wharf
heady siren
wintry solar
#

card.config.center_key

faint yacht
#

card.config.center.key

heady siren
#

Got it

#

Prefix for consumeables is c_ correct?

faint yacht
#

ye.

brisk rose
scarlet spire
#

in this case it's that the export function of aesprite is overwriting transparent pixels to be white, for whatever reason

thorn flame
brisk rose
scarlet spire
#

well it is

wintry solar
#

It’s to do with how the engine up scales the images with pixel smoothing on

heady siren
#

It just renders in the corner

brisk rose
# scarlet spire well it is

But it supports transparency in general so as I said the already fully transparent pixels /should/ be turning into 4 which are thus

paper zealot
golden lake
#

it's solved already

heady siren
golden lake
#

i did post the solution

#

also hm

thorn flame
# thorn flame

is it for k v in ipairs? this happened when i was trying to code insane joker too

paper zealot
scarlet spire
brisk rose
#

As opposed to having a hue too

#

As well as being transparent

golden lake
#

and i did say what i did to solve the issue

#

my obligation is done

heady siren
#

It's probably because the alpha and color interpolation are done at the same time, so it interpolates towards the color alongside interpolating towards the alpha, making it turn halfway to white while halfway to transparent

scarlet spire
#

yep, the exporter botches transparent pixels and causes unexpected artifacts when the pixel art is displayed in an unconventional way, like balatro does with pixel smoothing on

golden lake
#

yeah so basically you have to upscale using the sprite size operation

#

rather than using the exporter

#

which is annoying

#

but not the end of the world

rustic swallow
brisk rose
# brisk rose Oh you mean white as in ffffffff

Also I think that might be ffffff00. I forget whether transparent is 00 alpha or ff alpha. I think it's 00 egged though ff makes more intuitive sense to me despite knowing that alpha means lack of transparency abs ff is 255

undone maple
#

is it possible to reorder cards in the deck?

daring fern
brisk rose
undone maple
manic rune
#

it does

undone maple
#

well is it possible to order specifically?

#

can i put the cards i want on top of the deck

heady siren
manic rune
#

im pretty sure how cards are drawn in the deck is that it goes from index 1 to index n, so you will need to shuffle the entire table around manually

manic rune
undone maple
#

alright

daring fern
heady siren
#

Could I store the sprite somewhere in the card table?

hushed field
heady siren
#

Would I need to make a new sprite for each individual atlas position I'd like to use?

shell timber
#

here's how morefluff does the sts mana values, this should be useful

#

where G.mf_mv_spr is set up earlier

heady siren
#

I'm adding an extra layer on top of the base card sprite

shell timber
#

that's what this does

heady siren
#

I also wanna have multiple instances of the card that uses different sprites, so making an individual sprite for each one would probably work better

shell timber
#

you can have an atlas with different positions

#

if you look at the code you can see how

heady siren
#

Can you post what G.mf_mv_spr looks like?

shell timber
#

wdym

heady siren
#

That's a variable it's referencing

shell timber
#

it's a sprite that's set up before

heady siren
#

Does set_sprite_pos override the position for all cards that use that sprite?

shell timber
#

yes, but if you call it before every draw then it can be in multiple places

heady siren
#

Ah, that makes sense

#

Should I make one sprite per layer, or just render it all using the same sprite if it's in the same atlas?

thorn flame
heady siren
#

Set the third argument of set_ability to true, that'll delay the sprite change until it's processed

daring fern
manic rune
# thorn flame

first of all - the context is wrong, you should put it to context.before instead

#

reason being: exactly what smt said, im too slow 🥀

thorn flame
#

thats what i FIGURED but i dont know how ipairs works 💔

manic rune
#

runs through a table from index 1 to index #table

heady siren
#

context.individual = for each card
for k,v in ipairs(context.scoring_hand) = for each card
So for each card... you're checking each card

manic rune
#
local a = {1,5,9}
for i,v in ipairs(a) do
  print(i.." has "..v)
end

=>
1 has 1
2 has 5
3 has 9

heady siren
#

This is how I did a played hand full enhancement change

manic rune
heady siren
#

Which means you're doing UI right but regardless good job

manic rune
#

it was honestly SO painful to get everything like how i wanted 😭

#

especially the info box - i had to manually create it myself

#

and thanks :3

heady siren
#

And it looks official

zealous glen
#

They'd be proud

heady siren
# shell timber

I still wanna see what G.mf_mv_spr looks like so I can figure out where to put card.T.x, card.T.y, card.T.w, card.T.h

manic rune
#

so true

#

its so sad bepis died of ligma

shell timber
#

it's just a normal 71x95 atlas

heady siren
#

Yeah and the first 2 are the position of the sprite

#

And the card isn't full size

#

If I do this it's just gonna be like wtf do you mean "card.T.x"

#

Because card isn't defined as a variable

shell timber
#

just do whatever your card is

#

0, 0, 71, 95 whatever

heady siren
#

How do I make it follow the card itself then? Wouldn't that just render the sprite at position 0, 0 with default sizing?

thorn flame
#

i might not be underttsanding right because it IS 4 am

shell timber
#

this is why you do

    G.mf_mv_spr.role.draw_major = self
``` or whatever
heady siren
manic rune
heady siren
#

So each card is checking every other card including itself

#

25 total card processes instead of 5

heady siren
heady siren
# daring fern

What function is that in? It's throwing an error because it can't find the atlas

manic rune
#

is it a good approach to have stuff saved to G.GAME first, then when the run is over - save those back to G.PROFILES?

heady siren
thorn flame
manic rune
#

its the origin of my name too :3

heady siren
#

Congrats on your transition

daring fern
rapid stag
# manic rune jesus christ, get some sleep 😭

laughs in having woken up after getting only roughly 2 hours of sleep because people in the house were loud and continued to remain loud for multiple hours and prevented me from getting back to sleep

manic rune
#

does everyone here have a fucked up sleeping schedule or something

#

because me too

#

🥀

heady siren
#

Went to sleep at 9:30 AM woke up at 4 PM

#

Currently 2:30 in the morning

#

Probably won't sleep for a while

thorn flame
heady siren
undone maple
#

doesnt seem to work well, how can i limit the deck reordering to a maximum of 3 times

daring fern
#

What is the goal?

faint yacht
#

If a Joker is .getting_sliced, I can assume it doesn't have its' calculate go through?

undone maple
daring fern
thorn flame
#

sorry if these all seem like stupiud questions or whatever but like im majoing in biochemistry not coding

daring fern
undone maple
#

how would i do it?

thorn flame
#

ok it works now

#

THANK YOU GUYS 🫀

heady siren
# undone maple how would i do it?

I was able to make a card draw to your hand from your deck but it copies the card to your hand and deletes the original from your deck ;~;

undone maple
#

sounds pretty unoptimized

heady siren
#

Yep

undone maple
#

but if it works i guess

faint yacht
#

Though, I suppose it still might do its' remove_from_deck call...

heady siren
#

IT'S WORKING

thorn flame
#

whats iut do

heady siren
#

Damnit it doesn't work with resizing

karmic arch
heady siren
#

It even goes into it's own cardarea

#

It can give chips, mult, xmult, or money when scored, discarded, held in hand, or in deck, and it can trigger on any default suits and ranks

undone maple
zealous glen
manic rune
#

ligma balls

thorn pumice
#

hiii meow

zealous glen
heady siren
zealous glen
high sinew
thorn pumice
heady siren
#

Put a sprite on a card using a DrawStep that matches the card's size, I've done everything except the last one

heady siren
heady siren
wintry solar
#

What does the draw step look like?

heady siren
zealous glen
heady siren
#

This is where G.buffsprite is defined

heady siren
#

G.buffsprite.role.draw_major = self

#

It follows the card properly, but doesn't resize itself to match the card's scale

zealous glen
thorn pumice
zealous glen
#

if you just want to attach it to another object

#

I've also done confused cards

zealous glen
thorn pumice
#

i’ve been using debug plus 💔😭

daring fern
thorn pumice
#

oh okie bet

heady siren
thorn pumice
heady siren
#

And in a DrawStep

heady siren
thorn pumice
heady siren
#

🤯

daring fern
zealous glen
#

then it makes sense to define a single one

#

to reuse

heady siren
#

My main problem is that it doesn't resize, that's it, besides that it's working just fine

#

Wrong image

#

This is where I've told the card to resize itself, is this wrong?

zealous glen
#

I think either you're not setting the major correctly or the atlas is wrongly sized

heady siren
#

At full size it works fine

#

It looks perfect

zealous glen
heady siren
#

But once the size of the card changes, it becomes out of sync

heady siren
# heady siren

This is the DrawStep for the card, the major is being set in the same way as with yours, just with a single sprite instead of an individual sprite for each card

#

Do you think the individual method would fix the problem?

zealous glen
heady siren
#

Moving it to the draw function did not solve the problem

#

It's the exact same

#

But I'll move them to the draw function for simplicity's sake

zealous glen
heady siren
#

Ya think set_sprites would fix it?

manic rune
#

do i hook here to do smt like

give +4 mult in context.joker_main everytime

heady siren
#

I think you'd hook calculate_joker not calculate_context

manic rune
#

oh

#

:3 my bad

heady siren
#

That's what I'm doing to force certain jokers to trigger

daring fern
heady siren
#

I wasn't sure if that's specifically what they're looking for or not

manic rune
#

its a passive-kinda thing

#

not a joker effect

heady siren
#

Ah, not triggering on every joker, just triggering as if from a joker

manic rune
#

mhm

heady siren
#

I have no idea in that case

#

Very helpful I know

manic rune
#

lmao

#

all good, i will eventually figure this out myself :p

eager pendant
#

Help make the joker immediately polychrome in the store, how to implement in the

zealous glen
#

either that or whatever I did for confused cards

manic rune
#

...i cant tell which context i need to use

#

😭

wintry solar
heady siren
wintry solar
#

the draw step all looks fine

heady siren
#

Well now I put it in the card draw function, so

manic rune
#

i should

#

try printing all contexts and see what im working with

wintry solar
#

A drawstep allows you much more control over when and at what layer it's drawn