#💻・modding-dev

1 messages · Page 372 of 1

manic rune
#

i think im good at them

#

but

#

i havent figured out how to indent properly in patches yet

#

😭

sonic cedar
#

oml

manic rune
#

so it always takes the second try to get the indentation right

#

istg

manic rune
vast fractal
#

bump

sonic cedar
# manic rune since yggdrasil uses patches, heavily

like literally why i paused ijiraq to go to isaac is cause none of the ijiraq patches are doing their damn job 😭 (thank you delirium for helping with those if you're out there)

but i have ONE isaac patch and it works perfectly like i cant win or lose

primal robin
#

So if you display config.name then

{
  ref_table = config,
  ref_value = "name"
}
#

Ui will automatically insert and update value

tawdry oriole
#

line 777 of overrides.lua (cryptid) makes me crash but like how do i avoid that

manic rune
#

what is that line

tawdry oriole
manic rune
#

a

#

idk, it seems whatever forced_key is, thats not a valid object type for G.P_CENTERS

red flower
#

you're creating a card with the wrong key basically

tawdry oriole
#

oh

#

yeah that might be it

#

i'll try and fix it

cyan lagoon
#

how do i change the chances on a lucky card?

#

there's mult and money in G.P_CENTERS, but where are chances?

manic rune
cyan lagoon
#

they're hard coded!?

manic rune
cyan lagoon
#

fuck-

manic rune
#

you will want to patch

#

:p

modern kindle
#

or you can do what i did and accidentally guarantee the 20 mult every time

manic rune
#

:3 idk patching seems cleaner

modern kindle
#

tell that to my 1k line patch file

cyan lagoon
manic rune
#

yup

cyan lagoon
analog spoke
#

how does one make a level DOWN ? I'd like this joker to REDUCE the level instead of raise it

cyan lagoon
#

look at the boss blind

#

the arm

analog spoke
#

I don't know where I'd find that :<

short girder
#

is there a variable that counts how many cards of a certain enhancement you have in your deck? would be really useful for a joker im making

cyan lagoon
manic rune
#

run through G.playing_cards, use SMODS.has_enhancement

short girder
#

gotcha

exotic totem
analog spoke
#

hmm, okey, I'll see, hehehe

exotic totem
timber oriole
#

how do i add plus mult because for some reason config = { mult = 4 } does not work

manic rune
#

you need to return it

#

what config does is just creating variables for code to read from

#

they dont do anything on their own

timber oriole
#

oh

#

i think 1 joker i made with xmult does work

#

like that

exotic totem
manic rune
#

p sure you returned xmult in calculate

exotic totem
manic rune
#

oh, actually?

exotic totem
#

yeah just like vanilla jokers

manic rune
#

mm i see

#

better to rely on calculate instead, though

timber oriole
#

oh wow that's totally not confusing

exotic totem
#

its one of the values copied from the card config table besides extra

#

maybe its not x_mult id have to test but it def happened w a joker i was working on

static valley
#

hey so does anyone know where would be a good start to making a mod?

split saddle
#

hi i'm back :P
i was told to check the extra credit mod for reference on stuff and it's worked out great so far but now something doesn't work

calculate = function(self, card, context)
  if context.check_enhancement then
    if context.other_card.config.center.key == "m_stone" then
      return {m_gold = true}
    end
  end
end

it's supposed to calculate all stone cards as gold but currently does nothing. am i doing something wrong?

split saddle
#

yes

manic rune
#

if so, its broken as hell rn even if you got the code correct :3
-# which isnt btw

split saddle
#

???

exotic totem
manic rune
#

quantum enhancement is currently broken/unstable, p sure

split saddle
#

dang

exotic totem
exotic totem
split saddle
manic rune
#

it basically allows cards to have more than one enhancement

exotic totem
#

oh cool

#

and broken lmao

manic rune
#

❤️ yeah

wintry solar
manic rune
#

oh

#

people said it was broken, idk

sullen fern
#

i wanted to start working on the jokers for my mod but i have other matters to attend to

manic rune
#

i never used quantum enhancements myself so im just basing on what i heard from everyone :p

#

i think the assumption primarily came from extra credit(?) (the joker that makes it so all cards are lucky cards or smt)

wintry solar
#

It just crashes if you aren’t careful with your context checks sometimes

manic rune
#

a

#

i see

exotic totem
manic rune
#

🔥

analog spoke
#

I'm having an issue with the fusions in my mod ;-;

red flower
#

you know what mod has fusions that let you select which cards to use directly?

red flower
#

JoyousSpring :3

analog spoke
#

hmmmmmm, I guess I'll check it out then maybe, hehehe

woeful stratus
manic rune
analog spoke
woeful stratus
#

yeah

cyan lagoon
#

question where does the game set G.P_CENTERS?

red flower
#

game.lua

analog spoke
#

idek what I'm doing here waaaah dbhfjsbjhsf

red flower
#

lol

#

if you have debugplus give yourself 3 "Lady's Dragonmaid" (should be in the first collection page)

#

that should be enough to check how the fusion interface works

analog spoke
#

ok, I shall see how this works, lol

cyan lagoon
#

alright, now where are the descriptions?

red flower
#

the localization files

short girder
#

how would i make a joker like cloud nine which awards money for each card with specific parameters that you have
didnt find anything about it in the wiki

grand sage
#

Excuse me but does anyone know how I would do compatability between mods specifically to both make a joker only appear when the mod is active and make the joker use a modded suit

red flower
#

next(SMODS.find_mod("modid")) tells you if a mod is installed

analog spoke
grand sage
#

I did see that when looking through the code

cyan lagoon
#

am i doing this right?

red flower
#

i don't think that will be saved in between loads

#

the games saves some specific keys

#

you want to put those in extra

cyan lagoon
#

self.ability.extra you mean

red flower
#

yes

cyan lagoon
#

thanks

#

like that?

red flower
#

in the last patch it should be extra.*_chance instead of extra_*_chance

short girder
cyan lagoon
#

thanks again

red flower
short girder
#

ah

#

okay !

#

worked !

#

thanks you :D

cyan lagoon
#

uhh... it... didnt work

#

nothing changed

somber kiln
#

can someone help me creating the sprays of jokers for my mod please?

pure salmon
#

this is probably more of a lua question but how would i define global variables and tables that can be accessed from any lua script in the mod? can i just do that in my main file?

crisp coral
#

yeah, just declare the variable normally outside any code block

cyan lagoon
cyan lagoon
split saddle
#

destroying a joker is the same as destroying a card, right?

#

as in they both use return {remove = true}

split saddle
#

then why does this not work 😭

#

it does print the text, but doesn't destroy the joker

red flower
#

for jokers do

joker.getting_sliced = true
joker:start_dissolve()
split saddle
#

inside the return func?

red flower
#

no, outside

split saddle
#

alr thx

cyan lagoon
#

do i need anything else to make this work?

split saddle
#

something about indexing joker (a nil value)

#

do i have to replace joker with something else?

red flower
#

joker is the card you want to destroy, yes

shut crater
split saddle
#

in this case, self is the right choice i guess

shut crater
#

Not if you're in a calculate function

#

Never use self in calculate

#

If you want a joker to destroy itself you can use card

#

(but also I just jumped in so I'm missing context)

#

(no pun intended)

split saddle
shut crater
#

Because it doesn't refer to what you think it refers to

#

I think it's the center of the card? But tbh idk what it even represents because I have never needed to use it

split saddle
#

ok thanks

wintry solar
#

A better naming system would probably be (proto, object, context) for calculate functions, I think that’s more clear what things actually are

red flower
cursive sentinel
#

hello, quick question, trying to call a joker hand_drawn although when you have more cards than handsize it doesn't get called at all (the purpose being to draw more cards than handsize), is there another context i can use?

#

(also dont know why but not blueprintable but if 2 sample of the joker, both activate)

red flower
#

hand_drawn is when a hand is drawn, it doesn't let you draw more cards
you need to manually call draw_card for that

analog spoke
red flower
#

or draw_from_deck_to_hand or whatever that's called

red flower
maiden phoenix
#

N stop carrying balala modding you'll break your back

red flower
#

i need something to do while i dont work on my mod

split saddle
#

when context.buying_card, using card refers to the joker reading the context. which object refers to the card bought?

cursive sentinel
#

so as a patch? is it blueprintable?

split saddle
#

documentation says self apparently, but yeah

#

wait i think i'm stupid, it says below that the one i want is c1

#

nevermind

#

it's not that

primal terrace
#

Currently attempting to make a deck where my modded Jokers appear more frequently, similar to this, how would I go about doing that?

red flower
red flower
short girder
#

how do i give money when a joker is triggered sob

red flower
#

try card.ability.extra.dollars

chrome widget
#

Hmm..... I'm trying to replace G.SPLASH_BACK in the middle of the game and for whatever reason it gets a white streak through it?

#

Like??? why are you white?

#

I honestly wouldn't mind it if only I knew what caused it

short girder
red flower
#

do you have the Lua extension installed

short girder
#

found it

#

nevermind :D

#

middle line trying to index 'card' but its nil (probably has to do with G.GAME.probabilities.normal)

split saddle
#

whoops, forgot to destroy the card before copying egg

analog spoke
red flower
short girder
#

OH makes sense actually

wintry solar
#

classic cryptid code styling

analog spoke
# red flower yugioh!

but yeah, idk if I am smart enough to be able to do anything like this fusion page thing 😭 lol

split saddle
analog spoke
#

(I'd also need changes to it, as the whole "summon" thing kind of works in reverse from what I was wanting, lol, with the joker being found first then being, like, activated? idek what's going on lmaooo)

red flower
#

i mean that's the most complicated part of the mod yeah

#

the ui part is simple tho

analog spoke
#

oo? it is? hmmm :3333

#

(this is making me wanna make an "api" mod bsajhbfueb)

#

(if I got the term right, lol)

split saddle
red flower
analog spoke
#

😭 😭 😭

red flower
#

i like formatting my ui like that : (

analog spoke
#

adhsajknakj that's 14 lines 😭
(I don't know if it's formatting or not that's the issue, my brain's just confused af msakfnshdbj idk anything idk)

#

this situation is making me say "I don't know" a lot lmao

#

I feel like ui might be a whole seperate coding type lol, sadbjhbfsj I'm already learning joker code, shader code, now ui code I guess, abnsdhbjhsjhsd

#

I am headache

cyan lagoon
#

why this patch no workie?

red flower
red flower
cyan lagoon
#

no

#

the values stay as they are

#

and when i use the ones i added it crashes

red flower
#

if it crashes then it should be in the lovely/dump

analog spoke
red flower
#

it's called building ui or something like that

analog spoke
#

hmm

#

I... don't think I have the energy for this rn 😭 this ui stuff on top of the other 2 coding styles is 70% of the way towards maddening

cursive sentinel
#

whats the "match_indent = true" in patches mean? is it always necessary?

split saddle
#

using this code makes the game give way too many copies and idk why. am I doing somehting wrong?

#

OH NO WAIT

#

brainstorm is copying the effects i'm so dumb

grand sage
#

ok so only the paperback partner is loading now i think i messed up somewhere in this file

split saddle
#

ok so how do you stop blueprint/brainstorm from copying this?

#

it says that blueprint_compat is purely cosmetic

red flower
#

not context.blueprint

cursive sentinel
#

pasted your patch but didn't change stuff :c

split saddle
#

how do you know if a joker came from a booster pack?

red flower
cursive sentinel
#

oh wait im completely idiotic

#

i didn't call you context- at all

#

so ofc it doesn't change

red flower
#

yeah

chrome widget
#

gripping my head and my hands why is there a white stripe why is this happening I don't understand

red flower
#

did you drop white paint accidentally

chrome widget
#

i hope notttttt

hybrid shadow
hard mica
#

this doesnt seem to show the message , am i doing something wrong?

chrome widget
#

Okay I figured out why the white stripe happens

split saddle
#

what's the correct way to reference a joker by name/key?

split saddle
chrome widget
#

hehehehehe

#

Basically I copied the code that does the intro screen flash, and it adds a modifier to the return color. The main issue is that it ever slightly doesn't return the modifier completely tozero

#

I have to figure out how to do the intro screen flash fade out while also eventually receding to the original return color for the shader

split saddle
#

that sounds so annoying xd

cursive sentinel
# red flower if you return { hand_space = 1 } it should always make you draw a card, unless i...

functions, although i have no idea why but my calculate wont be blueprint despite it working twice if i have my joker twice

if card.ability.extra.flag == 1 and context.hand_space then
                card_eval_status_text(context.blueprint_card or card, 'extra', nil, nil, nil, {message = localize('k_safe_ex'), colour = G.C.CHIPS})
                for i=1, card.ability.extra.draw do
                    draw_card(G.deck,G.hand, i*100/(card.ability.extra.draw), 'up', true)
                end
                card.ability.extra.flag = 0
            end
#

(and thank you very much for your patch)

red flower
#

no idea

wintry solar
#

no return

#

game doesn't know you triggered if you don't return

cursive sentinel
#

ah so should swipe the card eval for a return in the same process?

wintry solar
#

or that might just be for retriggers, I dont remember

#

you can just put return nil, true at the end

cursive sentinel
#

ok will do that

#

didn't change

#

maybe my flag sucks?

red flower
#

i mean you're setting the flag to 0 immediately after

cursive sentinel
#

i did it as a card.ability.extra bcs i wanted to change it on next(poker_hands) although i dont seem to be allowed to call it without before/after stuff

#
if context.cardarea == G.jokers then

            if context.after and next(context.poker_hands['Straight']) and not context.blueprint then
                card.ability.extra.flag = 1
            end

            print(card.ability.extra.flag)
            if card.ability.extra.flag == 1 and context.hand_space then
                card_eval_status_text(context.blueprint_card or card, 'extra', nil, nil, nil, {message = localize('k_safe_ex'), colour = G.C.CHIPS})
                for i=1, card.ability.extra.draw do
                    draw_card(G.deck,G.hand, i*100/(card.ability.extra.draw), 'up', true)
                end
                card.ability.extra.flag = 0

                return nil, true
            end

            if card.ability.extra.flag == 1 and context.end_of_round then
                card.ability.extra.flag = 0
            end
        end

perhaps is it the area joker?

wintry solar
#

no it's because you set the flag to 0

cursive sentinel
#

ah i should reset it before playing the hand

hybrid shadow
#

where do localized messages go in the localization file? do they just go in dictionary?

cursive sentinel
#

bad logic from me, sorry for disturbance

grand sage
#

How would I use a different mods custom suit

hard mica
#

not sure how i can play a sound since it gives me an error

red flower
#

modprefix_key

hard mica
rapid stag
#

what's the best way to get what chips a played card scored? cirThink

hybrid shadow
hard mica
#

also these messages dont appear when the cards score

red flower
#

i dont really see why

hard mica
#

But not sure why it doesn't appear like his

rustic swallow
#

anyone know why the cards are permanently stuck at +2 mult?

short girder
#

not working :[ i may be stupid

wintry solar
red flower
red flower
split saddle
#

how can i know if a joker comes from a booster pack?

hard mica
#

why does it show nil?

unborn bay
#

#23#

#

lmao

hard mica
#

?

ivory coral
unborn bay
# hard mica ?

general order of loc vars' vars are indexed from 1
so

vars = { 1, 3, 4 }

would correspond to for example in the localization as

#1#, #2#, #3#

which would show up in game as

1, 3, 4
#

basically if it shows nil that means the game cannot find a corresponding value for that index in the returned vars table

hard mica
#

damn

unborn bay
#

and i doubt you have 23 entries on that vars table lmao

hard mica
#

nope

#

not sure how i can go with it

ivory coral
unborn bay
# hard mica not sure how i can go with it
config = { extra = { funny_value = 3 } },
loc_vars = function(self, info_queue, card)
    return { vars = { card.ability.extra.funny_value } }
end

in localization file: "X#1# Mult"
in game: "X3 Mult"

#

just remember the index of the thing you want to show

hard mica
#

ooooh

#

i get it

#

thank you

split saddle
runic pecan
#

In playing cards' calculate function, what context is for when this card is removed or about to be removed?

minor magnet
#

wait what does it do tho

#

OH IT CHANGED THE JOKERS?

zealous glen
turbid maple
#

does it drop you in a new random timeline

pure salmon
#

that is a sick effect holy

dull sage
#

Me: Why isn't my enhancment picking up the seal that's on my card???
The Sealless card i'm selecting: clueless

lofty sand
#

hey, does anyone know if I can make a joker affect the blind scaling directly?

chrome widget
zealous glen
wheat pulsar
#

hii, how do i check if i discard for example this hand, only the queens destroy?

chrome widget
#

Ghfjsjdhdhdhd CattoBlush thanks Victin

zealous glen
#

:3

minor magnet
zealous glen
minor magnet
#

can i do something similar

hard mica
#

how can i make the moeny sign for my joker description?

zealous glen
turbid maple
#

you tyoe the dollar sign

ivory coral
short girder
#

how do i write pseudorandom logic!!! do i just type a table of values or!!!

lofty sand
ivory coral
# lofty sand that should work for what I'm trying to do, thanks.

heres the code i used to do this

  G.GAME.blind.chips = math.floor(G.GAME.blind.chips*<some multiplier>)
  G.GAME.blind.chip_text = number_format(G.GAME.blind.chips)
  local chips_UI = G.hand_text_area.blind_chips
  G.FUNCS.blind_chip_UI_scale(G.hand_text_area.blind_chips)
  G.HUD_blind:recalculate()
  chips_UI:juice_up()
  if not silent then play_sound('chips2') end
return true end}))```
lofty sand
#

I assume <some multiplier> you'd replace with the value

ivory coral
#

yup
can be a config or whatever

lofty sand
#

dope, I'll give it a shot

hard mica
#

how can i make text yellow?

short girder
#

{C:attention}text{}

hard mica
#

and orange?

ivory coral
hard mica
#

thank you

#

for green?

ivory coral
#

C:green

hard mica
#

oh lmao

ivory coral
#

theres also C:mult, C:chips, C:inactive (for grey), and probably more

#

definitely more

hard mica
#

where can i find all of them?

ivory coral
#

idk if its documented

gentle cloud
#

hey so i need some help, I'm making a(n Un)Planet that basically just ups a random hand, but for some reason the code im using is, instead of being normal isn't showing what hand it's upgrading?
Said Code:

use=function (self, card, area)
        local leveling_hand = G.handlist[pseudorandom("justspace",1,#G.handlist)]
        level_up_hand(card, leveling_hand, nil, 1)
end```
turbid maple
#

im 50% sure that has to be done manually

short girder
ivory coral
glad osprey
#

anyone know how i would visually remove the suits

#

i already have a spritesheet for suitless ranks but idk how i would apply the sprite

pine turtle
#

How can I score consumables because currently they are only scored when no context is used in calculate?

chrome widget
hard mica
pine turtle
#

Also how do I keep consumable data saved between saves

shut crater
#

I think it's in smods/card_draw.lua or something like that

sullen fern
#

how do i make a card locked behind using multiple consumables

#

because much like in yo-kai watch, the legendaries in balatro-kai will be locked behind obtaining the medals of specific yo-kai

split saddle
rustic swallow
#

how would i make it so that the joker always has a poker hand set, even when he isnt present, or it is the start of the run? like to do list

hard mica
#

how can i add a card with eternal on it?

#

like through code

ivory coral
split saddle
#

hmmm

#

what about checking if a joker came from another joker? (e.g. invis copy)

#

maybe set a variable inside the joker to track this?

rugged helm
#

how does one get the civil chatter role

#

probably wrong channel actualy lmao

split saddle
sullen fern
split saddle
daring fern
rugged helm
#

ohcool

hard mica
daring fern
shut crater
#

take a look at add_card and create_card

hard mica
#

thank you

rustic swallow
#

how would i make a joker that changes what hand it requires at the end of the round, even when its not present or it is the start of a run

#

like to do list

shut crater
split saddle
#

yeah that's what i'm thinking

#

thanks

daring fern
analog spoke
#

what does this mean in laymans terms?

#

I'm making my first ever true function here and it's supposed to input 2 numbers and output one

sturdy compass
#

Can you show the code?

shut crater
analog spoke
sturdy compass
#

That should be fine to do... hmm

analog spoke
#

I'm hoping to get better at code here, and like, truly understand WHY my things aren't working

analog spoke
#

I can also show the function itself if that helps

sturdy compass
#

first off you're defining arch as a global variable. Should definitely be local

analog spoke
#

ok, that's probably it lol, hehhe

sturdy compass
#

second off you're assigning card.ability.extra.mult to arch, which is a number value and not a table. All you really need to do is remove any '.mult' from all 'arch.mult' usages for it to work

analog spoke
#

poor spelling/memory strikes again, lmao

analog spoke
#

I didn't mean to put the .mult into the local lmao

#

ok, thank you lol

sullen fern
sturdy compass
#

that'll do it. doing that change will make it work as well

sullen fern
analog spoke
sullen fern
#

which are all seperate object types

#

i know you can add modded jokers to an object type by specifying their key

sturdy compass
glass snow
#

Hey, new to the modding community, is there any resources to write and create mods that work with the balatro mod manager?

sturdy compass
sullen fern
#

in this case it would be like
mymodid_j_myjokerkey

split saddle
shut crater
#

I might've missed it

split saddle
#

ok

sleek cliff
sullen fern
red flower
split saddle
# shut crater can you explain in more detail what you're trying to do

i have a joker that copies another joker when it is purchased. there are two parts to it: from shop and from packs. the copying of jokers from the shop works perfectly, but copying jokers from booster packs is harder because a) the game apparently doesn't track the source of [free] jokers and b) my joker tries to copy every other joker when acquired before dying , so it stack overflows trying to copy the new jokers. and don't even get me started on multiple copies of it (but that is for later and i might have the solution)

rustic swallow
gleaming jungle
#

Is there any way to load a font into Trance without putting the ttf & lua into the Trance/fonts directory? Would like to avoid having to set that up manually if possible

gleaming jungle
#

alright, thanks

shut crater
split saddle
#

not necessarily, but some way for me to know the procedence of a joker so that it doesn't try to copy the same joker several times. as it stands now, context.card_added is called for every copy of the copied joker (i.e. get blueprint > new blueprint, function called > new blueprint, function called, new blueprint, ad nauseum) and obviously this is really bad

red flower
#

can't you make it not blueprint compatible

split saddle
#

maybe blueprint was a bad example...

#

blueprint isn't the problem, it's the fact that the joker itself triggers its effect

red flower
#

can you show me the code, it would be easier to get

split saddle
#

adding a new joker triggers context.card_added, which makes a new joker and yeah

shut crater
red flower
#

oh i get it

split saddle
#

but i'm lua skill issued and idk how to do that ._ .

split saddle
red flower
#

honestly what I would do is add copy.copied_by_waiting = true and then you check if the added card has that

split saddle
#

that's what i thought

#

doing it like that will just throw "attempt to call a nil value"

red flower
#

not if you write it correctly

#

what's the issue

split saddle
#

wait nvm i'm stupid

#

it just works 🤯

red flower
#

🔥

split saddle
#

i tried something similar earlier but maybe i did something wrong

#

anyways thanks :)

rustic swallow
#

how would i make a joker that changes what hand it requires at the end of the round, even when its not present or it is the start of a run like to do list
maybe using mod.reset_game_globals(run_start) but i have no idea how

split saddle
#

does the game track if a card is queued for deletion?

#

as in, after you return {remove = true} , can you do like if remove or something

#

wait i kinda answered my own question didn't i

red flower
#

i dont think it does in an easily accessible way

zealous glen
#

card.ability.getting_sliced

#

But currently it needs to be put on cards manually

#

You can use Card.can_calculate(true)

#

To test for it or other things that would prevent it from being calculated

#

The boolean controls if you test for debuffs or not

glad osprey
#

final thing for rumpus cards how do i remove the text that says what suit it is

#

so it would just be "Jack"

placid star
#

whats the var that goes with context.after for checking how many chips a hand will score?

split saddle
# zealous glen Kinda

i don't understand.... you can:
if card.ability.getting_sliced then <do if card is removed>,
or use if card.can_calculate then <do if card is removed> and also works for debuffs
but it needs to be done manually, how?

red flower
#

hand_chips * mult if you mean the total

zealous glen
#

Card.can_calculate is a method that evaluates to true if the card can be calculated

#

Card:can_calculate(true) does that but ignores the debuff status of the card

zealous glen
wintry solar
#

a :

red flower
#

anyway vanilla doesn't do any of that for playing cards so i dont think this will help them

zealous glen
zealous glen
#

Most mods use SMODS

wintry solar
#

you'd always have a card object when you're wanting to use this function anyway

red flower
zealous glen
zealous glen
wintry solar
#

so I'd just type card:can_calculate(true) when helping people

#

because people are dumb

zealous glen
#

But as I said, the variable in the card needs to be assigned manually right now

wintry solar
#

SMODS doesn't do it for playing cards

#

that's what N meant

zealous glen
#

We’ve been over this

red flower
#

but it doesn't check if it's being destroyed because getting_sliced is not set with { remove = true }

#

that's what the question was

zealous glen
red flower
#

well the vanilla cards don't

zealous glen
#

The correct implementation is to manually set getting_sliced

wintry solar
#

I would imagine that the only mods that do that are ones you've worked on

zealous glen
#

When I explain it to them

#

Which is how we ended up in this conversation last time and this time

split saddle
#

ok but where do i put it? inside or outside the return?

zealous glen
#

It’s the same thing with Card.is_rank or the context for removing playing cards

split saddle
#

currently inside crashes my game

zealous glen
#

Vanilla doesn’t handle it automatically so mods need to handle it manually

zealous glen
split saddle
#

oh wait

#

no nevermind

wintry solar
#

but also, having looked at the code, I don't think it's required at all, and is actually probably detrimental

split saddle
#

where does card.ability.getting_sliced go?

#

and since i'm doing it from a joker i should probably use context.card, no?

red flower
split saddle
#

set a card for destruction and be able to reference it later

zealous glen
#

Just card.getting_sliced

red flower
split saddle
#

playing card

wintry solar
#

the only calc step that adding the flag to cards that are destroyed in sequence would miss is remove_playing_cards, and you could feasibly want effects that happen in that context coming from destroyed cards

nova eagle
#

i know this is wrong, but how do suit colors?

zealous glen
wintry solar
#

so I think adding getting_sliced to playing cards is actually incorrect

nova eagle
#

i tried referring to the style guide, but its not working

red flower
zealous glen
red flower
split saddle
wintry solar
#

basically you're adding the flag too soon

zealous glen
#

Not with the flag

wintry solar
#

no it's not

nova eagle
wintry solar
#

it's an issue with adding the flag in the wrong palce

zealous glen
#

The flag needs to be applied immediately to prevent other effects from trying to calculate with the card

#

At a time the card wouldn’t exist

wintry solar
#

the flag should be added in time with when the card is actually destroyed, just not in an event

red flower
zealous glen
#

After the card is destroyed it’s easy to know it’s destroyed

#

But destruction happens inside Events

#

So after calculation has happened

#

Hence it needs to be flagged immediately

wintry solar
#

no

#

the destruction events aren't added immediately

#

there are other calculations that happen between checking for destruction and carrying out destruction

#

and adding the flag manually bypasses those incorrectly

nova eagle
#

thx

zealous glen
#

I think that’s just an argument in favor of SMODS needing to handle it

split saddle
#

wait i got lost... remove_playing_cards is a function that takes parameters, which ones?, do i have to set the getting_sliced flag or not?, what is the difference between this and using return {removed = true}?

wintry solar
#

I've never said smods shouldn't handle it

#

my point is that adding it manually is wrong

zealous glen
#

I never said you said it shouldn’t

turbid maple
#

is there a nice and quick way to temporarily disable some played cards while scoring

red flower
zealous glen
#

Maybe it’s not a big issue if you use SMODS’ feature to remove cards

wintry solar
#

yeah because whoever added the functionality didn't do it properly 🙃

zealous glen
#

Since it’s built to remove cards at a good time

#

But it’s still an issue

wintry solar
#

it's like a one line change I think, I can test it now if you have an example of when it would be an issue

zealous glen
#

I mostly wanted to track destroy effects outside of the automatic one, but the automatic one should be included for consistency

zealous glen
wintry solar
#

when not having getting_sliced would be an issue

zealous glen
split saddle
wintry solar
#

that's not what this conversation was about though

zealous glen
#

Ah wait actually

#

What’s the order of operations

#

Do all Jokers get calculated before setting the destruction?

turbid maple
#

card destruction always confused me

red flower
zealous glen
split saddle
#

ok

zealous glen
#

If you set the flag immediately you can avoid this

turbid maple
#

does smods ignore anything w/ getting_sliced set when calculating things?

zealous glen
#

If you wait then you can’t

#

I think most people would prefer that destroy effects don’t stack

zealous glen
#

Hence the immediate flag shared by all mods

#

Instead of different mods using different flags and being incompatible

red flower
#

i dont like that the flag also disables calculations

zealous glen
wintry solar
#

yeah if we're looking for a unique destruction flag it should be something else

zealous glen
wintry solar
#

adding getting_sliced would stop an effect such as "this card gives $3 when it is destroyed" from an enhancments

zealous glen
#

I made it a function so mods can add other checks

#

Like maybe if they move cards around, so cards don’t activate in the wrong zone

turbid maple
#

huh either guess my things happen to work by accident or I forgot to test my joker with dagger

zealous glen
#

And SMODS automatically checks for it

turbid maple
#

yeah and my joker's supposed to proc when destroyed

#

so dagger slicing it might not call its calculate function if im following

red flower
#

dagger and madness are the only ones afaik

zealous glen
red flower
#

i make my mod to be standalone to not deal with these things : )

zealous glen
red flower
#

no joyousspring is lovely only

turbid maple
#

could there be a dedicated context thats called when the card itself is destroyed (even if its getting_sliced)

red flower
#

( :

#

i think a card destroyed but not sold context would be cool

zealous glen
turbid maple
#

yeah i think a lot of mods have their own patches for that

zealous glen
#

But Eremel suggested having two flags

turbid maple
#

whatd the flag be?

zealous glen
#

[Mushu shaming Mulan GIF]

turbid maple
#

I made an issue!

red flower
#

i already pr'd all the things i want to smods

turbid maple
#

wha can i not do gifs here

wintry solar
#

getting_sliced is fine on jokers with disabling calculations, it's just on playing cards that it's not clean

red flower
turbid maple
#

😔

zealous glen
zealous glen
red flower
zealous glen
#

So if we want the flags to mean different things, there should be an immediate one and a slightly delayed one

#

Maybe

zealous glen
wintry solar
#

is there a reason can_calculate isn't passed the entire context?

zealous glen
#

I know there’s some way to do it

zealous glen
turbid maple
#

whats the usecase for "destroy but later" thats not "this thing needs to do something when destroyed"

zealous glen
turbid maple
#

you said a flag for delayed destruction

red flower
#

animations mostly

#

you set getting _sliced before the event and destroy inside the event

placid star
#

how do you make custom functions? this doesnt want to work because JJOK isnt valid

red flower
zealous glen
#

The former needs to be done immediately

#

The latter should be done just alongside the destruction Event

turbid maple
#

hmm

zealous glen
#

I’m not sure this is the best approach, but it might bridge both goals

turbid maple
#

I forgor but does destroying a card reallt need to be in an event?

zealous glen
#

Alternatively you can just have effects that respond to destruction ignore the (unique) flag

red flower
#

you can do it immediately but it looks bad

#

like it will just disappear

zealous glen
#

😐 🫥

red flower
#

it's weird that there's no helper function for a food joker getting eaten

#

i wanted to make one for vanillaremade but i thought it would be confusing

red flower
#

they all use the same code

turbid maple
#

and annoyingly long

wintry solar
#

hmmm, there are some bugs with this can_calculate check

red flower
#

why isn't there a :start_dissolve equivalent

zealous glen
#

I mean by that metric I think there’s a lot of weirder things

wintry solar
#

I think a util function to generally destroy a card might be useful to have too

red flower
zealous glen
#

I don’t know how to reply to that

red flower
#

say im funny

zealous glen
#

im funny

red flower
#

thank you

turbid maple
#

hi funny

#

im void

zealous glen
#

Hi dad

split saddle
#

this has been mildly amusing to read but i need more help xdd

zealous glen
#

im funny

split saddle
#

how do you trigger something every time a card is destroyed

turbid maple
#

any card in general?

zealous glen
thorn flame
#

workshopping

turbid maple
#

including jokers and stuff?

wintry solar
turbid maple
#

or playing cards specifically

split saddle
zealous glen
wintry solar
#

oh it could accept a table too

zealous glen
red flower
#

i think most people would still use start_dissolve or shatter so as long as those call that

zealous glen
#

People will reimplement scoring because they didn’t read the wiki

red flower
#

i will make everyone copy my bad code patterns now

turbid maple
#

you mean people will ask on this channel how to reimplement scoring necauze theh didnt read the wiki

zealous glen
#

I mean people will reimplement scoring because they didn’t read the wiki

#

I’d rather they ask here first

#

But they won’t

#

This is about someone who IIRC implemented a function to poll Editions

turbid maple
#

oh so you mean people will reimplement scoring because they didnt read the wiki and not people will ask on this channel how to reimplement scoring becaude theh didnt read the wiki

zealous glen
#

I think it was polling something at least

marble flint
#

i mean tbf i take_ownership'ed m_mult to use a calculate function to make it dynamic (although the answer for m_bonus is different because this game's code Sucks)

zealous glen
#

And it wasn’t even the first time I saw people reimplement existing features because they didn’t read

#

Though most of the other instances are private

red flower
#

i read the entire wiki before starting my content mod

#

i read the entire manual before doing anything tbh

zealous glen
#

When I don’t know how to do something I check the wiki first

wintry solar
#

I like when people reimplement searching for editionless cards because that util function is buried in completely the wrong place and is entirely undocumented iirc

zealous glen
zealous glen
#

I think part of the reason one person reimplemented a lot of stuff is because it’s undocumented

#

But also

red flower
#

i made the vanilla remade thing to understand how SMODS.blueprint_effect works tbh

zealous glen
#

They don’t use this chat or the SMODS’ one AFAIK

#

They just mod

wheat pulsar
#

hi i have a error with my joker when destroy the cards in the next round the hand bug an looks weird

red flower
zealous glen
zealous glen
red flower
#

i think it's pretty cool

#

what's the problem

wheat pulsar
zealous glen
red flower
zealous glen
#

I think the first part is minor but it’s personally my bigger issue with it

#

The latter part is more relevant for a general modding audience

red flower
#

a helper function to combine effects would be very cool

zealous glen
#

But I can understand it being out of scope

wintry solar
#

wdym it doesnt handle multiple blueprint effects

zealous glen
zealous glen
red flower
#

you can also use SMODS.calculate_effect

turbid maple
#

true..

zealous glen
#

Though not for a Blueprint-like

#

But for custom context handling

wheat pulsar
nova eagle
#

what is the context for exiting a blind?

red flower
#

context.end_of_round

#

i dont think there's one for the cashout screen

nova eagle
#

cool, thanks

zealous glen
turbid maple
#

did you remake every vanilla joker in smods for the sake of it

#

what the hell

zealous glen
#

It’s a great modding tool

red flower
#

i like helping

nova eagle
#

no worries, the card triggers when i want it to with end_of_round

zealous glen
#

We balatroheart N’

zealous glen
#

IIRC what I did was define a custom calc_dollar_bonus and return nil

zealous glen
nova eagle
#

im working on a sort of riff raff type joker, where at the end of each blind it creates an egg

zealous glen
turbid maple
#

incredible

zealous glen
#

That’s what the nil is for

turbid maple
#

whys this called reddit jokers

zealous glen
#

You’re not calculating a dollar bonus

#

You’re just using it to execute some code at that time

nova eagle
#

i see lots of good ideas there, and wanted to start putting them in game

turbid maple
#

ah

nova eagle
#

anyways,,, how come the joker isnt stopping at one joker?

turbid maple
nova eagle
#

something about not having a repitition count, but riff raff works fine with this code, so im confused

zealous glen
#

Wait no

#

My bad I misread

#

I should go to sleep

red flower
maiden phoenix
zealous glen
red flower
#

the shop utils should get documented too

maiden phoenix
#

All the utils are mine I'll eat all the yummy utils

red flower
#

noooo

zealous glen
#

what’s up with the French

maiden phoenix
#

In fact I shall promote them w my name

nova eagle
#

where here would i set it to only ever create eggs?

zealous glen
shut crater
#
SMODS.add_card{
  key = "j_egg"
}
nova eagle
#

i made that addition, and it went back to completely filling all joker slots with eggs

maiden phoenix
#

You want to create a single egg right?

nova eagle
#

yeah

#

this is what i got so far

shut crater
#

well you are calculating jokers_to_create as G.jokers.config.card_limit - (#G.jokers.cards - G.GAME.joker_buffer))

maiden phoenix
#
  • You don't need jokers_to_create
  • G.GAME.joker_buffer should be incremented by 1 only
  • You don't need a for loop in your event, just SMODS func and the buffer
shut crater
#

which would be a way of finding the maximum number of jokers you could fit in the joker cardarea

lofty sand
#

if I want to make a joker that that triggers like two jokers (for example, add +4 mult, then add +10 chips in separate messages) how could I do that?

#

or can I even

wheat pulsar
#

sorry but i put the context.destroy_card and the return remove = true and now doesnt enter in the function

maiden phoenix
#

oops don't forget the ,

red flower
nova eagle
maiden phoenix
#

Oops that wasn't a question mb

wheat pulsar
red flower
#

probably, i didnt read the whole thing

shut crater
wheat pulsar
nova eagle
gilded narwhal
#

i'm def doing something wrong here

#

honestly because I'm not really sure on the different between blueprint_effect and calculate_effect

wintry solar
rapid stag
#

question - this is going to sound completely pointless, but would it be possible to make the main menu card regularly cycle through random objects instead of picking one or two and sitting on those? cirThink like if you kept sitting on the main menu, it would just endlessly cycle through every card object that isn't a playing card. although i guess i'd like to include face cards in that lineup, too

glad osprey
#

how do i do this correctly

glad osprey
#

no niot that

#

how do i make it convert cards lol

#

its for enhancments

shut crater
#

do you want to apply an enhancement?

#

like heirophant or empress

glad osprey
#

yea

shut crater
#

most of that code is just the flip animation though

glad osprey
#

why i gotta manually do it 😭

shut crater
#

excellent question

glad osprey
#

copying the way vanilla tarots define enhancments doesnt work

red flower
#

i think tarots should have a config to do it automatically

#

but i didn't check because ive never done it before : )

gilded narwhal
#

Every time I try it just returns one effect

wintry solar
#

you want to put the returns from SMODS.blueprint_effect into SMODS.calculate_effect

#

seperately

glad osprey
#

eremal quick question

gilded narwhal
glad osprey
#

why doesnt this make my tarot card work

shut crater
gilded narwhal
#

even if I don't it doesn't work

glad osprey
#

thats how the vanilla tarot's work

wintry solar
#

🤷‍♂️ I don't use vanilla automatic stuff

glad osprey
#

grah

wintry solar
gilded narwhal
#

Well removing it didn't change anything so :/

hybrid shadow
#

crash says it expected <name> near function?

wintry solar
#

does your second target definitely have a return?

red flower
gilded narwhal
hybrid shadow
wintry solar
gilded narwhal
wintry solar
#

you only blueprint joker2 if joker1 doesnt exist

gilded narwhal
#

oh

#

mb

#

I had a brainfart and forgot what elseif meant 😭

glad osprey
#

i got it!

gilded narwhal
#

and iirc does this not work on retriggers?

glad osprey
#
config = {max_highlighted = 2,mod_conv = "m_sgbs_rumpus"}

#

thats all you need lol

#

dont need an effect = "enhanced"

wintry solar
gilded narwhal
lofty sand
gilded narwhal
lofty sand
#

oh lmao I'm making a joker very simmilar to that, also having problems with it

wild escarp
#

I'm guessing context.joker_main should be replaced with something else when giving the tag (it currently doesn't give the tag), but what?

calculate = function(self, card, context)
    local queens = 0
    local twos = 0
    local tag = false
    if context.cardarea == G.play then
        for i = 1, #context.scoring_hand do
            if context.scoring_hand[i]:get_id() == 2 then twos = twos + 1 end
            if context.scoring_hand[i]:get_id() == 12 then queens = queens + 1 end
        end
    end
    if twos > 0 and twos < 2 and queens > 0 and queens < 2 then
        tag = true
    end
    if context.joker_main and tag == true then
        return 
        {
            func = function()
            G.E_MANAGER:add_event(Event({
                func = (function()
                    add_tag(Tag('tag_ethereal'))
                    play_sound('generic1', 0.9 + math.random() * 0.1, 0.8)
                    play_sound('holo1', 1.2 + math.random() * 0.1, 0.4)
                    return true
                end)
            }))
            end
        }
        
    end
    if context.cardarea == G.play and not context.blueprint then
        for i = 1, #context.scoring_hand do
            if context.destroy_card and tag == true then
                if context.scoring_hand[i]:get_id() == 2 and context.destroy_card:get_id() == 2 then
                    return
                    {
                        remove = true
                    }
                end
            end
        end
    end
end
lofty sand
#

functionally it's fine, it just doesn't look right at all

gilded narwhal
#

Yeah it's the same thing just very weird

wintry solar
#

oh you would need to return it if it's copying repetition effects

#

not use calc effect

gilded narwhal
#

what about those on-card effects?

#

Same thing?

rustic swallow
#

is there a way to check whether a pack wasn't skipped?

gilded narwhal
wintry solar
gilded narwhal
#

Unless there's something I'm missing

#

Could I do like a for loop with a return in it?

#

Or would it just end after it reaches the first effect

red flower
#

it would end in the first return yes

hybrid shadow
#

crash says extra here is nil

wheat pulsar
#

i have a problem here i use the context.pre_discard to know if a pair of cards is discarded to later destroy them, so when i use context.discard then doesn't checks the pair and destroy all the selected discarted hand
but in the pre_discard doesnt update fine the numbers of card in my deck

#

i destroy the cards here

faint yacht
hybrid shadow
lofty sand
#

could I have a joker that operates like blueprint get the sell value of the joker it's copying?

#

if so, how would I do that

gilded narwhal
lofty sand
#

oh fr

#

oh y'know, looking at swashbuckler would have been a good idea for that

red flower
#

wait no wrong message

#

this one

wild escarp
#

Anyone know why this code doesn't give an ethereal tag? Something with the context? Also, tag does in fact == true.

if context.after and context.cardarea == G.play and tag == true then
    return 
    {
        func = function()
        G.E_MANAGER:add_event(Event({
            func = (function()
                add_tag(Tag('tag_ethereal'))
                play_sound('generic1', 0.9 + math.random() * 0.1, 0.8)
                play_sound('holo1', 1.2 + math.random() * 0.1, 0.4)
                return true
            end)
        }))
        end
    }
    
end
hybrid shadow
shut crater
digital sun
#

how would you go about making a joker disable a suit like in the boss blinds
(if this is too complex for me ill just make them give 0 chips ig)

hybrid shadow
#

random question but how do i test my vouchers to see if they work

gilded narwhal
hybrid shadow
hasty mist
#

is it not possible to add multiple lines to a joker name?

wild escarp
#

It definitely is.

hasty mist
#

i tried using the same formatting as descriptions but that didn't work

wild escarp
#

Wait, I'm thinking description.

hybrid shadow
hasty mist
#

yeah

faint yacht
#

Doesn't Kino mess with the "name" to include additional stuff before description?

hasty mist
red flower
red flower
hasty mist
#

damn

#

how would i do this then

#

if i even can

turbid maple
#

well rats joker that's supposed to proc when destroyed really doesn't work with dagger slicing it

red flower
#

rip

hasty mist
#

hm

hybrid shadow
# hasty mist

btw instead of {C:black} another thing that works is just closing the previous stylizing with {}

hasty mist
#

yeah i figured that out late in development

#

this is an old joker i made that im currently changing

hybrid shadow
#

ah

hasty mist
#

the idea is to have runic text (with a custom font, that im not dealing with right now) be on line one of the name, with an alphabetic translation under it

red flower
#

for the custom font you should wait for aikoyori's smods pr

hybrid shadow
red flower
#

you can add it to the shop and buy it

#

you can probably redeem it with commands but idk how

wintry solar
#

Or do eval dp.hovered:redeem() when hovering it in collection

hasty mist
#

so chances are it wont be done anyways by the time its merged

hasty mist
red flower
wintry solar
#

And what object is it in?

wild escarp
#
calculate = function(self, card, context)
    local queens = 0
    local twos = 0
    local tag = false
    if context.cardarea == G.play then
        for i = 1, #context.scoring_hand do
            if context.scoring_hand[i]:get_id() == 2 then twos = twos + 1 end
            if context.scoring_hand[i]:get_id() == 12 then queens = queens + 1 end
        end
    end
    if twos > 0 and twos < 2 and queens > 0 and queens < 2 then
        tag = true
    end
    if context.after and context.cardarea == G.play and tag == true then
        return 
        {
            func = function()
            G.E_MANAGER:add_event(Event({
                func = (function()
                    add_tag(Tag('tag_ethereal'))
                    play_sound('generic1', 0.9 + math.random() * 0.1, 0.8)
                    play_sound('holo1', 1.2 + math.random() * 0.1, 0.4)
                    return true
                end)
            }))
            end
        }
        
    end
    if context.cardarea == G.play and not context.blueprint then
        for i = 1, #context.scoring_hand do
            if context.destroy_card and tag == true then
                if context.scoring_hand[i]:get_id() == 2 and context.destroy_card:get_id() == 2 then
                    return
                    {
                        remove = true
                    }
                end
            end
        end
    end
end

red flower
# hasty mist im still not quite clear on how to implement this though
generate_ui = function(self, info_queue, card, desc_nodes, specific_vars, full_UI_table)
    SMODS.Center.generate_ui(self, info_queue, card, desc_nodes, specific_vars, full_UI_table)

    if desc_nodes == full_UI_table.main then
        full_UI_table.name = {
            {
                n = G.UIT.C,
                config = { align = "cm", padding = 0.05 },
                nodes = {
                    {
                        n = G.UIT.R,
                        config = { align = "cm" },
                        nodes = full_UI_table.name
                    },
                    {
                        n = G.UIT.R,
                        config = { align = "cm" },
                        nodes = {{
                          n = G.UIT.T,
                          config = { text = "second line here", colour = G.C.UI.TEXT_LIGHT, scale = (0.4 - 0.004 * #"second line here") } }
                    }},
                }
            }
        }
    end
end
wild escarp
wintry solar
#

This is a joker?

wild escarp
#

Yes.

wintry solar
#

Tag is in fact, not true

wild escarp
#

Wouldn't tag have to be true for the removal of the card though? Because that still happens.

wintry solar
#

You set it to false every calculation step, context after will never call a joker with cardarea being g.play

wild escarp
#

So what should I do then?

hybrid shadow
#

any idea why the loc_vars for this voucher ends up giving a table in the description?

wintry solar
#

Do your check once in context before and save it to the card instead of a local variable

#

And then you don’t recalculate it dozens of times

red flower
#

something like this ?

calculate = function(self, card, context)
    if context.joker_main then
        local queens = 0
        local twos = 0
        local tag = false
        for i = 1, #context.scoring_hand do
            if context.scoring_hand[i]:get_id() == 2 then twos = twos + 1 end
            if context.scoring_hand[i]:get_id() == 12 then queens = queens + 1 end
        end
        if twos > 0 and twos < 2 and queens > 0 and queens < 2 then
            tag = true
        end
        if tag then
            card.ability.extra.created_tag = true
            return
            {
                func = function()
                    G.E_MANAGER:add_event(Event({
                        func = (function()
                            add_tag(Tag('tag_ethereal'))
                            play_sound('generic1', 0.9 + math.random() * 0.1, 0.8)
                            play_sound('holo1', 1.2 + math.random() * 0.1, 0.4)
                            return true
                        end)
                    }))
                end
            }
        end
    end

    if context.destroy_card and context.cardarea == G.play and not context.blueprint and card.ability.extra.created_tag then
        if context.destroy_card:get_id() == 2 then
            return
            {
                remove = true
            }
        end
    end

    if context.after then
      card.ability.extra.created_tag = false
    end
end

hasty mist
#

i am so lost 😭

hybrid shadow
red flower
#

no i mean extra is a table

#

it's in the screenshot

red flower
hasty mist
#

basically the beginning

#

hold on though

hasty mist
#

im trying smth

#

ah

#

that would make sense

#

what's the correct implementation?

red flower
#

i edited it

rugged helm
#

how would i prevent the ante from going up with a joker?

#

i.e. when the boss blind is defeated how would i make the ante not go up

hasty mist
# red flower i edited it

it looks like a function that can be put under a joker, am i misunderstanding? when i paste it, it seems like the formatting is off, and i crash when i open the game

red flower
hybrid shadow
#

alr how do i call for a custom rarity's weight in a function

hasty mist
#

oh im just an idiot

#

yeah it works now

#

whoops

hybrid shadow
hasty mist
#

this will be amazing

#

just have to wait for that smods pr for the font now

sonic cedar
#

is this a good place to ask wiki page questions or wrong channel

hasty mist
#

i believe so

red flower
#

for the modded wiki?

sonic cedar
#

yeah im trying to make a table bigger

red flower
sonic cedar
#

oh shit real

hasty mist
#

oh i thought you meant smods wiki

rustic swallow
#

is there a way to make a joker create a joker with a sticker?

hasty mist
#

what's the standard for adding fonts to a mod?

#

like

#

the file structure

wheat pulsar
#

i have a problem i use the context pre_discard to search pair with the same rank, then i mark then to in a context_discard destroy them, but they dont destroy well

#

i try some hours and didn't find solution

hasty mist
#

oh its just assets/fonts

tight cobalt
#

I've been struggling to make this enhancement have a center, so I can't put it into a loc_vars nor convert a card to a vintage card by tarot (the tarot card being named greed). I've admittedly used chatgpt to get the code working due to my lack of prior coding experience, so it may be weird, but the vintage card works correctly ingame. I just can't seem to access it.

hasty mist
#

Trying to get fonts working ingame, copied the code for handling it from aikoyori's shenanigans temporarily until it's added to smods, but i'm getting an error

subtle hawk
#

Yo how do I prevent this from triggering for every copy of the joker at the same time

#

Currently if I have more than one copy that's ready for triggering they all destroy the same consumable

#

Could I like, put them in queue somehow or smth

lofty sand
#

does anyone know the event for the little "-$(amount of money)" that appears whenever you spend money?