#💻・modding-dev

1 messages · Page 485 of 1

molten relic
#

so just the entirety of my main.lua

#

dont look at the top i didnt use jokerforge lol

rotund sable
#

🤔

molten relic
#

i didnt bother to remove it from my first time using jokerforge and i used the same file

chrome widget
#

Keku put up a PR for a jimboquip object but it hasn't been reviewed

#

I just did mine with patches

rotund sable
#

shorten the description in the header 🙏

stiff locust
molten relic
modern kindle
#

because i still havent changed it yet one of my cards still tells me to end myself when it triggers

stiff locust
#

I want to make a common joker in tsunami that makes splash say motivational quotes randomly

#

that's all it does it doesn't contribute to score or anything

modern kindle
#

make one that just starts rotating the screen

red flower
red flower
molten relic
#

its about G.P_CENTERS.poisoned

red flower
molten relic
#

oki

#

1 sec

red flower
molten relic
#

yeas

molten relic
red flower
#

it should be G.P_CENTERS.m_modprefix_poisoned

molten relic
#

and replace modprefix with my mod prefix

red flower
#

yes

molten relic
#

ok

brittle yacht
#

darn

molten relic
red flower
#

pls send code and crash always

molten relic
#

yeah it dont work

molten relic
red flower
#

if its the exact same code and crash then you didnt change anything

molten relic
#

i mean

#

the same part

#

but ill senc it

#

and i did change what you said to change

red flower
#

is there any other mention of poisoned

molten relic
#

in the code for the joker?

red flower
#

yes

molten relic
#

because the id for the poisoned enhancement is poisoned and in the code for this joker its also mentions another time

red flower
#

this has to also be m_modprefix_key

molten relic
#

it does? oh ok

#

do i have to change the enhancements id to be that aswell?

rapid stag
#

how can i halt card selection

molten relic
#

ok

#

oh it works

#

thanks

autumn brook
#

Hi quick question, i wanted to try making an music pack, but i got 2 songs, and i would like so the first one plays in the start menu, and the other in-game. Is it somehow possible? i am aware that music1 plays in menu, and in game too

ashen adder
sonic cedar
#

bumpicus von bumperton the 3rd

sullen brook
#

How do I check a card's key as opposed to its ID?

ashen adder
#

bruh i can't believe someone already did the 'supertrash' joker idea

ashen adder
red flower
sullen brook
#

Right now I'm using this as an identifier, but is there a way I can use the key instead of the ID?
if value:get_id() == variablename then

ashen adder
#

oh well ig i can try to take it to another lvl

sullen brook
red flower
sullen brook
#

I apologize, there's a lot more cards than playing cards in this.

ashen adder
#

like yeah ok these are literally what i did already i..... ok

sullen brook
# red flower card.base.value

OK, let me see if I can wrap this into my loop. Thanks for this help, but also for all the help over the past few weeks.

pastel remnant
#

What does the game use for the localise function for upgrade text?

sonic cedar
#

'k_upgrade_ex'

pastel remnant
#

Thanks

#

Including the ‘s?

pastel remnant
mild grove
#

i figureed out how to cut the name and desc from my jokers and stuff and have it load via en-us.lua

wintry solar
#

Look at my lovely release notes 👀

rotund sable
#

I reverted the probability port of my release like 4h ago😭

wintry solar
#

shame on you for making a release based on dev branch

rotund sable
#

I didn't

#

I reverted for 1.0

wintry solar
#

also to people who actually read the release, is it worth me writing up a full release like this with docs for the new content?
-# I'll also port them into the wiki at some point T_T

sullen brook
#

110% @wintry solar

#

The more documentation of this tool the better, in my opinion.

red flower
#

it allows me to link to it while theyre not in the docs at the very least

wintry solar
#

I just wish git's markdown highlighting was prettier

maiden phoenix
#

noraml balatrojoker

modern kindle
#

blud wants me to change all my probabilities what da helly

wind steppe
#

how do i stop a rarity from appearing in booster packs

red flower
#

vanillaremade is merged with the new probability stuff + is poker hand visible + is eternal

modern kindle
#

it just sounds like a whole lot of effort

red flower
#

it took me like 5 minutes

wind steppe
modern kindle
#

it would take me 0 to do nothin as the alternative

#

which is therefore a whole lot of effort

red flower
#

unless you name every card's odds something different

sullen brook
#

"Take time to schedule maintenance for your equipment, or your equipment will schedule maintenance for you." 5 minutes of work now is better than chasing bugs when something breaks later down the line.

modern kindle
#

everybody loves sayin things like that but then forget the age old adage of 'if it aint broke dont fix it' smh my head

red flower
#

i mean you dont need to, it wont break

maiden phoenix
#

I'm so glad I used an util for proba check I just need to modify one thing

red flower
#

oh unless you have your own oops all 6s

maiden phoenix
#

Wait I have to modify the loc vars too iirc

modern kindle
#

wheres oops all 12s

maiden phoenix
#

Is trigger mandatory for SMODS.is_eternal?

red flower
#

no

wind steppe
#

how do i stop a joker rarity from appearing in booster packs but still have it appear in the shop

rotund sable
crystal pivot
#

Dumb question how do I create a king with create_card? This doesn't seem to work

SMODS.add_card({ set = "Base", area = G.hand, rank = 13 })
red flower
#

rank = "K" (or "King")

sturdy compass
#

It’s finally here yaaaaaa

#

Now I gotta wait 2 hours to push 1.1

red flower
#

[Maximus 1.1 OUT in 2 hours!!]

crystal pivot
rotund sable
#

does a change so big as porting to new smods version deserve a Patch in the versioning 👀

maiden phoenix
#

Why does SMODS.pseudorandom_probability have a card argument?

pure salmon
#

how exactly would i check if a card has a listed probability

red flower
pure salmon
sturdy compass
red flower
#

sounds very hard

#

I don't think there's an way to check until they call the new functions

molten relic
# pure salmon

you could make a list of all cards and jokers that have probabilities

#

but that would be tedious

#

i think

red flower
#

i mean i can do that in 2 minutes for vanilla

#

mods are the problem

pure salmon
wind steppe
molten relic
maiden phoenix
#

Won't each mod have their own numerator/denominator addition? there's no global variable to fetch..

molten relic
pure salmon
#

i was going to check for certain variables present in ability.extra, what else is used aside from odds?

maiden phoenix
#

I don't use numerator for my stuff and I'm not sure what I'm supposed to add to make it crossmod compatible

red flower
#

this is crossmod compatible by default

maiden phoenix
#

Oh it has a default value?

#

But like if a mod modifies the numerator and I don't catch that won't that cause issues?

wind steppe
#

literally just use the new thing and smods will handle it for you

#

thats why its in a function

red flower
maiden phoenix
#

Wait so I shouldn't replace my usual pseudoranom check by the SMODS one?

pure salmon
#

are vanilla cards patched to use SMODS.pseudorandom_probability yet

wintry solar
red flower
wind steppe
#

because thats what handles the crossmod

pure salmon
#

wait do they not

wintry solar
#

I even wrote a guide for how to update your code 😭

autumn brook
#

Hey quick question, how can i implement that when the player is in the shop, it plays another music? I wanted so when the player is in the shop, it plays shop_theme.ogg, but i can't get it working. The only thing i got to work is when player is in the main menu, and in-game.

red flower
maiden phoenix
wind steppe
red flower
maiden phoenix
#

Omg no wonder I'm confused the parameters aren't written like in the release...

maiden phoenix
#

Well it's written improperly

red flower
#

looks fine to me

maiden phoenix
#

it doesn't mention the num and den as the base one which is important and wouldn't have led to confusion

red flower
#

fair

ivory coral
#

what exactly is the identifier in the new pseudorandom stuff, its just stated that "it is suggested to use an identifier" but its never elaborated what that means
should each individual get_probability_vars() or pseudorandom_probability() have its own identifer? should it be unique per card? should it be written a certain way? if a card has multiple listed probabilities should they use separate identifiers?
the whole thing is mostly fine but this is really bothering me because it never explains what the identifier is or what it does

red flower
#

look at the cool screenshot extension

wind steppe
#

chat does anyone know if i can stop joker rarities from appearing in booster packs but not in the shop

red flower
rotund sable
#

oh so i don't have to put the seed there 2 times? cool

ivory coral
rotund sable
#

the lsp def needs updating 👀

red flower
#

yeah

rotund sable
#

oh god i can finally delete that lovely patch from my mod. Ty SMODS 🙏

sturdy compass
#

Pessimistic Joker crossmod compat will be real Prayge

ivory coral
red flower
#

no it's just to ensure it's unique

sonic cedar
#

im so damn close
i just need to somehow get the button back behind the card

and to make it apply the new highlight code without me having to click and unclick it first

#

does anyone know how to do either of those

#

the function if it'll help

#

and i have this in the joker's add_to_deck

marble axle
#

any chance anyone knows if theres a mod that can enable you to auto buy and use planets if you have astronomer?

sonic cedar
#

there's always someone that just knows something for some reason

marble axle
#

didnt want to just repeat the same thing over and over so figured id try askin here first

sonic cedar
#

unlucky

sturdy compass
#

Agreed, unlucky lol

sonic cedar
#

oh hey astra

sturdy compass
#

We make the mods here, not necessarily have the mod database in our heads like some players

#

Hi toma

modern kindle
#

alright ive done the probability changes begrundingly

fallow breach
#

bump pareidolia

sonic cedar
#

oh hey dilly

modern kindle
#

hi toma

marble axle
sturdy compass
#

Oh yeah toma your chud joker can have crossmod with the new probability stuff now

sturdy compass
marble axle
sonic cedar
#

brb all
gonna get this canine out before the storm starts

wind steppe
#

if the shop or a booster pack wants to spawn a joker rarity but can't find any jokers for it it'll just spawn jimbo right?

red flower
#

probably not, but I remember someone posting a flowchart for the game states, does anyone have it or something like that?

marble axle
#

🙂

modern kindle
#

can i get an example on what initial scoring step would be good for as opposed to before?

autumn brook
#

Hey so i have an issue. i tried transitioning to the new headers from file headers, but the mod loader doesn't seem to see it. Did i do something wrong?

wild zinc
#

Chat I dunno what I did wrong

rotund sable
wild zinc
#

Doesn't gain chips

formal parrot
wild zinc
#

Good question!

wind steppe
#

how would i stop a joker from appearing in any booster packs? (can be manual crossmod)

formal parrot
#

Use context.other_card

#

And context.individual

autumn brook
wind steppe
#

which it does

#

but it also appears in booster packs rn

rotund sable
wind steppe
autumn brook
#

And yes it was the badge text color. I was looking at this for good 10 minutes and didn't saw the empty string

#

sorry about that

wild zinc
sonic cedar
sturdy compass
#

Bump? Ouch

sonic cedar
#

you're thinking of lump

#

if you have a lump as big as your code, i recommend a doctor

sturdy compass
#

Yeah probably a good recommendation

#

I’ll put in an appointment for next week /j

sonic cedar
#

hwarharhar

#

i contracted illiteracy
came free with my balatro

#

the effects are normally temporary but i play yugioh

sturdy compass
sonic cedar
#

...i havent eaten dinner yet no wonder i cant think

#

i should do that

sturdy compass
#

EAT

sonic cedar
#

ALRIGHT

hallow slate
#

How would i get all pairs in a played hand?

formal parrot
#

Like a boss

red flower
wind steppe
#

how would i stop a joker from appearing in any booster packs? (can be manual crossmod)

red flower
#

for crossmod you would need to check the key_appends

#

OR you could do the reverse and opt-in to the shop and other abilities manually

wind steppe
#

that sounds better

red flower
#

args and args.source == 'sho'

sonic cedar
rough furnace
#

Evening Chat

red flower
#

hi wilson!!

sonic cedar
#

holy shit its john dp

primal robin
red flower
#

john diamond and pearl

sonic cedar
#

john degree of polymerization

red flower
#

anyway now i shall have dinner

sonic cedar
#

oh hey it's like we're tagging

autumn brook
#

Hey so i have an little problem. I wanted to add music to G.STATES.SHOP, and everything looks arlight, but when i try to buy a voucher, it has the same music as G.GAME. I don't know if this is intensional, or is there another G.STATE for buying vouchers?

#

damn

#

i hate mkv

#

lemme convert it

sonic cedar
#

is that jesus

#

THATS SPAMTOn

rapid stag
autumn brook
#

WELL CRUCIFIED SPAMTON IS PLASMA DECK FROM NOW ON 😭

daring fern
lament agate
#

what to hook if i want to change something from the game over screen

daring fern
#

A gradient is just a normal colour that keeps changing.

rapid stag
modern kindle
#

Well a normal color doesn't change so it cant be a normal color silly

daring fern
autumn brook
daring fern
lament agate
daring fern
daring fern
rapid stag
#

best yes, i want to basically deselect all cards in hand and temporarily prevent any cards from being selected

daring fern
rapid stag
#

that makes sense

sonic cedar
#

i just need to figure out the layer

red flower
rapid stag
#

how do i deselect any current highlighted cards though

red flower
#

G.hand:unhighlight_all()

rapid stag
red flower
#

now they do

rapid stag
#

nice

sonic cedar
#

ok between the two which one would i change to render behind the joker

autumn brook
sonic cedar
daring fern
sonic cedar
#

is it something obvious am i cooked

#

why am i getting bonesreacted

red flower
#

because its hard

sonic cedar
red flower
#

good luck

sonic cedar
#

it is something with instance_type right

red flower
#

i would imagine though i have tried that for something similar and it didnt work

autumn brook
sonic cedar
# red flower good luck

wait what layer are jokerdisplay boxes on cause what if i can render the clickbox above the visual

sonic cedar
#

shit,,,,

#

Wait no thats no underscore nvm we're finw

foggy ginkgo
#

What's the context to detect how much money you have

#

If there is one

red flower
#

there isnt one because money is a value not an action

#

G.GAME.dollars

foggy ginkgo
#

Ah right

#

Thank you

urban wasp
#

what is used for the floating effect on not discovered jokers? i tried soul_pos but it looks a little different

chrome widget
#

Released a new Cardsauce update salute

urban wasp
#

my joker on top, not discovered joker on bottom

urban wasp
#

that might work maybe

#

would be best in text

daring fern
buoyant crag
#

how would i have a joker add a wild ace to the deck? i currently am using SMODS.add_card and it adds a wild card to the deck, but even though i specify rank = 'Ace' like in documentation it just picks one at random

lament agate
#

do any of you guys ever mess with restarting a run?

red flower
modern kindle
buoyant crag
red flower
chrome widget
buoyant crag
modern kindle
chrome widget
#

I mean my plane got canceled and my new flight isn't until tomorrow morning

#

Not much I can do now

modern kindle
#

I thought you weren't even here yet
Thought you was still en route

chrome widget
#

No I never even left home

#

I had to get someone to pick me back up from the airport

modern kindle
#

Ooo
Icic
I thought you were getting here and that one was canceled icic

#

I totes misunderstood

buoyant crag
red flower
#

yw i added that feature :3

modern kindle
red flower
#

yes

lament agate
#

@daring fern what do i put here if i want it to play a sound

daring fern
lament agate
daring fern
lament agate
#

sure

faint yacht
#

-# Ack, Virtual PC be causing infinity loops somewhere again on stable.

sonic cedar
#

does base game have any toggle buttons am i forgetting one
buttons that toggle

chrome widget
#

Im sad gang I wanted to be gay with my partner but instead im at home making mods

sonic cedar
#

mad

#

*man

#

is it fun modding

chrome widget
#

Ehh it's dragging close to the end here

sonic cedar
#

twinning Why

faint yacht
#

Gonna slap next() around some vars...

sonic cedar
#

but thats probably just cause its ui
you probably over there with rocket science

faint yacht
#

...did SMODS.merge_effects change..?

sonic cedar
#

_ _

#

what

red flower
sonic cedar
#

how much

red flower
#

the change is that empty tables are skipped

sonic cedar
#

hardest sigh of relief ive had all day

faint yacht
#

Buying causes that familiar infinite loop.

local returns = nil
local merge = {}
for i = 1, #G.jokers.cards do
    local other_joker = G.jokers.cards[i]
    if other_joker and other_joker:can_calculate() and other_joker.config.center.key ~= self.key and SMODS.pseudorandom_probability(card, "virtualpc2004sp1", 1, card.ability.extra.odds) then
        local other_joker_effect = SMODS.blueprint_effect(card, other_joker, context)
        if other_joker_effect and not other_joker_effect.was_blueprinted then
            other_joker_effect.was_blueprinted = true
            if next(other_joker_effect) ~= nil then
                if context.repetition then
                    returns = returns or {}
                    returns.repetitions = (returns.repetitions or 0) + other_joker_effect.repetitions
                else
                    table.insert(merge, other_joker_effect)
                end
            end
        end
    end
end
print(merge, next(merge))
if next(merge) ~= nil then returns = SMODS.merge_effects(merge) end
if returns and next(returns) ~= nil then
    return returns
end
red flower
#

i might have done something wrong

#

what does the print do

faint yacht
red flower
#

like this is the only change

sonic cedar
#

i thought i was gonna have to rewrite ijiraq

#

again

faint yacht
#

I'd assume SMODS.blueprint_effect returns nil for no "blueprint" effects...

red flower
#

yes

red flower
#

i noticed an unrelated bug testing merge_effects just now lol

faint yacht
#

So something changed elsewhere, because the loop occurs with or without the commented out end.

local returns = nil
local merge = {}
for i = 1, #G.jokers.cards do
    local other_joker = G.jokers.cards[i]
    if other_joker and other_joker:can_calculate() and other_joker.config.center.key ~= self.key and SMODS.pseudorandom_probability(card, "virtualpc2004sp1", 1, card.ability.extra.odds) then
        local other_joker_effect = SMODS.blueprint_effect(card, other_joker, context)
        if other_joker_effect and not other_joker_effect.was_blueprinted then
            if next(other_joker_effect) ~= nil then
                other_joker_effect.was_blueprinted = true
                if context.repetition then
                    returns = returns or {}
                    returns.repetitions = (returns.repetitions or 0) + other_joker_effect.repetitions
                else
                    table.insert(merge, other_joker_effect)
                end
            end
        end
    end
end
-- if next(merge) ~= nil then
    -- print(next(merge))
    -- returns = SMODS.merge_effects(merge)
-- end
-- if returns and next(returns) ~= nil then
    -- return returns
-- end
#

Or the other added probability-related contexts are not checked for.

red flower
#

oh yeah thats probably it

faint yacht
#
INFO - [G] card_added: true
main_eval: true
cardarea: table
card: table

INFO - [G] main_eval: true
buying_card: true
cardarea: table
card: table

INFO - [G] trigger_obj: table
pseudorandom_result: true
identifier: virtualpc2004sp1
main_eval: true
result: false
denominator: 15
cardarea: table
numerator: 1

That last one repeats on.

#

Reverted main block, only changed the

if context and not (context.mod_probability or context.fix_probability or context.check_enhancement or context.blueprint or context.pseudorandom_result) then

line.

#

All of this was just because I was migrating the two probability vouchers to also use calculate

if context.mod_probability and not context.blueprint then
  return { numerator = context.numerator * (card and card.ability.extra or self.config.extra).probabilitymult }
end

from

for k, v in pairs(G.GAME.probabilities) do
    G.GAME.probabilities[k] = v*(card and card.ability.extra or self.config.extra).probabilitymult
end

in redeem.

#

Anyway, I feel like the probability contexts should also have a warning about being copied. 😅

pure salmon
#

ok i think i'm fully moved over to new probability

#

reading eremel's writeup has me excited about new jokers

thorn furnace
#

Where are the colours for text formatting stored?

red flower
thick drift
#

Hey guys, does anyone know if the game allows for a booster pack to allow you to select other booster packs instead of cards? I want to implement some kind of chest system and I'm just wondering if it'd be best to have it be implemented through boosters instead of consumables

thorn furnace
red flower
thorn furnace
#

o

#

just need all the values for a thingy

red flower
#

it's in misc_functions

#

i recommend checking the modded wiki too as it has many modded ones if you're doing it for the manager

thorn furnace
#

thank uuu :3

thorn furnace
#

it's the only thing left i need to finish the wiki

#

does it have all the modded ones? Don't wanna miss one and have to go back
Tho i guess it would just be adding to an array anyway

red flower
wheat jewel
#

If i wanna take a name of a joker from a list and have a deck spawn a random one from the list, how could I do that? because this code generate a random joker

thorn furnace
#

i thought it was like maybe 70

red flower
wheat jewel
#

or is it to set it to a specific sticker

#

didn't work unfortunately

red flower
wheat jewel
#

now it doesn't spawn anything

red flower
#

can i see the entire code

thorn furnace
red flower
#

math

thorn furnace
#

wat does "math" mean

wheat jewel
#

Here you go ^^

#

gonna fix some stuff since we're mainly doing add_card without creating a card obj

red flower
thorn furnace
#

o

#

i wudve guessed aiko first

red flower
#

that looks correct to me

wheat jewel
thorn furnace
#

i somehow completely forgot about that

red flower
faint yacht
#

...why not move the local vars inside the event?

pure salmon
#

ok now that new probability is out, assume i don't care about old probability compat. how do i check if a joker has a listed probability (or can perform a probability roll)

red flower
#

play every mod and make a list of them

#

or regex the code for the new functions

pure salmon
#

fuck

#

do i look like i know how a regex works

wheat jewel
thorn furnace
wheat jewel
#

so it might be an issue with my list??

red flower
thorn furnace
red flower
#

but yeah theres no real clean way to know if a joker has probabilities

umbral zodiac
#

how does the new smods probability api work so i can make my stuff work w/ it

red flower
#

read the docs there

faint yacht
#

Something something hook the prob-functions, store initial num/denum, perform the functions, check against stored values...
-# Alternatively, my brain is fried.

umbral zodiac
#

oh i didnt realize it was in that

thorn furnace
#

Lua does have its own version of regex but it's terrible

wheat jewel
modern kindle
sonic cedar
#

is something like this possible or can you not do this with buttons?

wheat jewel
red flower
wheat jewel
#

it stops at the third option in my list

chrome widget
#

The new identifier concept kind of informs that a center can have a probability roll even if it doesn't directly subscribe it anywhere

#

It just does allow you to correlate instances of the roll being displayed in the UI

red flower
#

no, because that's also only given if you call the function

i guess hovering over all jokers is a way haha

wheat jewel
faint yacht
#

Inside the func.

sonic cedar
faint yacht
#

Card:click() hook?

sonic cedar
#

these hooks will be the depth of me

faint yacht
#

🪝

sonic cedar
#

ok yeah that looks simple enough

#

now how to link it to the button being clicked instead...

#

wait i can do that already

thick drift
#

I was going to say, wouldn't it be easier to have a button to have the joker flip through different states (ie. consumable_copy = true or false)?

sonic cedar
#

ok if i have a function in my gfuncs right
can the variables it uses be used in the joker caue then how do i link the button to the joker itself

red flower
#

you can add it to the card

sonic cedar
#

im listening

red flower
#

but they wont be saved on reload unless you do stuff or save it to .ability.extra

sonic cedar
#

i mean it's a gimmick for a joker--oh unless you mean like within the run too

red flower
#

is this always the same joker

sonic cedar
#

yes

#

this is made for only this joker

red flower
#

then you can do card.ability.extra.yourvariable in the g funcs function

#

you already have the card

sonic cedar
#

oh ok awesome

thorn furnace
red flower
#

ur missing a comma

thorn furnace
#

im missing two :3

sonic cedar
red flower
#

looks fine

#

card.ability.extra.toggle = not card.ability.extra.toggle is shorter

sonic cedar
red flower
#

yeah

sonic cedar
#

got it

#

can you run set sprites in a situation like this or no? want the sprite to change depending on the setting

nothing animated, just two still images

#

or even just changing the atlas, swap between the normal perkeo's floating sprite and the fake one's

#

or would doing that change the card's base too

red flower
#

card.children.center:set_sprite_pos({x=0, y=0})

#

idk how to do this with the soul sprite but it should be possible

vast bough
#

how difficult would it be to make a joker that allows your consumable slots to be used as joker slots

vast bough
#

but you can still use consumables if they have space ofcourse

sonic cedar
red flower
#

consumable slots run joker calculations

sonic cedar
#

shouldnt be too hard i believe?

red flower
#

the problem is the UI i think

sonic cedar
#

truth nuke

vast bough
#

surely it would just be the same

red flower
#

it has different values for consumables

#

idk if it looks bad or not

#

the buttons i mean

vast bough
#

is there any jokers that use this idea or is this an original thought

red flower
#

i havent seen it like that, ive only seen stuff that let you transfer jokers as a gimmick

#

like aiko's freedom deck

#

but i also dont play mods

sonic cedar
#

RAAAAAAAA FREEDOMMMM

pure salmon
#

ok why does this throw up an attempt to index "extra" nil error when it IS the nil check

#

am i stupid

hasty mist
#

what is the context for a probability succeeding

red flower
sonic cedar
#

i almost answered make one but who knows there might b-fuck....

#

i dont wanna update chud but i know its gonna be so much better......

daring fern
red flower
pure salmon
#

like card_check.extra.odds??

unborn bay
#

vanilla jokers do not use extra table

daring fern
pure salmon
#

oh

red flower
#

im pretty sure one of the odds ones has it in extra.odds
cavendish or something

pure salmon
#

bloodstone has it by the looks of it

red flower
#

yeah

hasty mist
#

tyty

quick scarab
#

I literally don't know what is happening, its probably some sort of error when the card appears in the shop, trying to find a value or something.

#
SMODS.Joker {
    key = "r_freddy",
    atlas = 'Joker',
    pos = { x = 7, y = 1 },
     
    blueprint_compat = true,
    rarity = 2,
    cost = 6,
    config = { extra = { seal = 'Gold', chips_mod = 25, chips = 0 } },
    loc_vars = function(self, info_queue, card)
        info_queue[#info_queue + 1] = G.P_SEALS[card.ability.extra.seal]

        local gold_tally = 0
        if G.playing_cards then
            for _, playing_card in ipairs(G.playing_cards) do
                if playing_card.seal == card.ability.extra.seal then gold_tally = gold_tally + 1 end
            end
        end
        return { vars = { card.ability.extra.seal, card.ability.extra.chips_mod,  card.ability.extra.chips } }
    end,
    calculate = function(self, card, context)
        if context.joker_main then
            local gold_tally = 0
            for _, playing_card in ipairs(G.playing_cards) do
                if playing_card.seal == card.ability.extra.seal then gold_tally = gold_tally + 1 end
            end
            return {
                chips = card.ability.extra.chips_mod * gold_tally
            }
        end
    end,
    in_pool = function(self, args) 
        for _, playing_card in ipairs(G.playing_cards or {}) do
            if SMODS.has_enhancement(playing_card, card.ability.extra.seal) then
                return true
            end
        end
        return false
    end
}```
#
j_fnaf_r_freddy = {
                name = "Rockstar Freddy",
                text = {
                    "Gives {C:chips}+#1#{} Chips for",
                    "each {C:attention}Gold Seal",
                    "in your {C:attention}full deck",
                    "{C:inactive}(Currently {C:chips}+#2#{C:inactive} Chips)",
                },
            },
red flower
#

there's no card in in_pool

quick scarab
#

the problem is in the in_pool I see

hasty mist
#

how exactly would i use these?

#

trying to get the value of the denominator

red flower
#

context.denominator is just that value

quick scarab
red flower
quick scarab
#

thank you

sonic cedar
#

or even just the general atlas is fine if changing only the atlas of the floating sprite is too complicated

red flower
#

i know you can but dunno how

sonic cedar
#

do you know anything i can look at to study?

#

like how do you know it's possible

red flower
#

because of how sprites work you should be able to change the atlas of soul sprites or at last change the sprite on the fly to one with the new atlas, but i dont even know how to access the soul sprite from the card

sonic cedar
#

ohhhh i see

#

seems like that's done in set_sprites through a floating sprite child

foggy ginkgo
#

What's the set ability for editions

sonic cedar
#

set_edition?

foggy ginkgo
#

Yknow

#

Lowkey kinda dumb

#

This is what I get for lack of sleep

sonic cedar
#

bed

rare phoenix
#

so i have a thing to spawn a joker but how do i make it spawn a random joker from a certain pool?

new_card:add_to_deck()
G.jokers:emplace(new_card)```
daring fern
rare phoenix
#

thanks

modern kindle
#

just experienced some nice little stack overflow

#

weird how it never cropped up til now after this joker has existed for...almost half a year

subtle merlin
#

How could i make a joker's name change depending on the amount of rounds it's been in hand?

keen horizon
#

What are the rules around debugging? I'm trying to write a script to simulate deck shuffling, and I'm stumped trying to figure out the bugs with my implementation differing from the games. Would discussion about adding things like print statements to figure out what the values are for a hand be fine?

red flower
red flower
hasty mist
#

how do i ensure this only upgrades once per hand instead of once per card?

lyric maple
#

how do you make a custom rarity with functioning weights?
i have mine set to weight 0.1 but i can confirm i have seen three brainstorms before even one of these jokers

SMODS.Rarity {
    key = "lingo",
    default_weight = 0.1,
    badge_colour = HEX('f3d793'),
    get_weight = function(self, weight, object_type)
        return weight
    end,
}
rare phoenix
#

i dont think i did it right 💀

#
    if context.setting_blind then
        SMODS.add_card({set = "Rowansmodaddition"}) {
            set = "Joker",

        }
    end
end```
hasty mist
#

everything works mostly alright, only issue is that it upgrades once for every played card

mild grove
#

I tried to get a joker to spawn a playing card with the foil edition but i got a crash

red flower
#

actually i just read the code and you also check for hand having size for so you can just break out of the loop

#

fixed

rare phoenix
red flower
#

read the docs

red flower
rare phoenix
#

mb

mild grove
#

Still crashing, trying to get a joker to spawn a foil playing card

red flower
#

set_edition is not a valid field, and you do need a set or a key

#

again, please read the docs

mild grove
#

I am reading the docs

red flower
#

well it doesn't say set edition so you might be reading it wrong

mild grove
red flower
lyric maple
#

3 of the jokers triggered, but every time it triggers it creates this "invisible consumable" that just seems to take up a consumable slot

red flower
#

are you using add_card and then emplacing it

lyric maple
red flower
#

don't

#

add_card emplaces it

lyric maple
#

aight that fixed it thanks

foggy ginkgo
#

You guys know how stone joker detects how many stone cards are in your deck, how would one do it but for held hand instead

red flower
#

replace G.playing_cards for G.hand.cards

modern kindle
#

N its bedtime why are you wakie

red flower
#

watching anime show good fun anime

modern kindle
#

What fun cool anime

red flower
#

Aim for the Ace! (1973)

modern kindle
#

Oic
Are you liking it

red flower
#

yes it's very good

modern kindle
#

Very awesome

foggy ginkgo
#

i did that but I forgot to replace all of it

modern kindle
#

My gf and i are watching this hit fun cool not anime

#

Which is also neat

red flower
#

why are they looking at me like that

mild grove
red flower
#

now you removed everything: (

modern kindle
mild grove
red flower
sonic cedar
#

sending this for checks before i ship it for testing

mild grove
red flower
sonic cedar
modern kindle
#

Toma

sonic cedar
#

Dilly please

modern kindle
#

🛏️

wind steppe
#

how would i check if a given consumable is a planet card

sonic cedar
#

i havent used an asset object before

red flower
sonic cedar
red flower
modern kindle
wind steppe
sonic cedar
red flower
red flower
sonic cedar
#

thank

#

alrighty
gulp
test tiem

wind steppe
#

wait how do i even level up a hand

sonic cedar
#

returning level_up as true

red flower
#

in calculate?

wind steppe
sonic cedar
red flower
#

level_up_hand = "key" to specify the hand

#

ok time for bed goodnight everynyan

sonic cedar
#

goodnight n even though im about to aswelll

mild grove
#

can anyone help with this, I'm trying to get the joker to spawn a playing card with the foil edition

daring fern
foggy ginkgo
#

So when I'm viewing a joker in the main menu collection, my games crash. But when I'm viewing a joker in game collection, it doesn't crash

#
    loc_vars = function(self, info_queue, card)
        info_queue[#info_queue + 1] = G.P_CENTERS.m_stone

        local stone_tally = 0
        if G.hand.cards then
            for _, v in ipairs(G.hand.cards) do
                if SMODS.has_enhancement(v, 'm_stone') then stone_tally = stone_tally + 1 end
            end
        end
        return { vars = { card.ability.extra.chips * stone_tally, card.ability.extra.xmult * stone_tally } }
    end,

    calculate = function(self, card, context)
        if context.individual and context.cardarea == G.play then
            if SMODS.has_enhancement(context.other_card, 'm_stone') then
                card.ability.extra.chips = card.ability.extra.chips + 25
                local other_card = context.other_card
                G.E_MANAGER:add_event(Event({
                    func = function()
                        other_card:juice_up()
                        other_card:set_edition('e_negative')
                        return true
                    end
                }))
            end
        end
        if context.joker_main then
            local stone_tally = 0
            for _, v in ipairs(G.hand.cards) do
                if SMODS.has_enhancement(v, 'm_stone') then stone_tally = stone_tally + 1 end
            end
            return {
                chips = card.ability.extra.chips * stone_tally,
                xmult = card.ability.extra.xmult * stone_tally
            }
        end
    end,
    in_pool = function(self, args) --equivalent to `enhancement_gate = 'm_stone'`
        for _, v in ipairs(G.hand.cards or {}) do
            if SMODS.has_enhancement(v, 'm_stone') then
                return true
            end
        end
        return false
    end
}
daring fern
foggy ginkgo
#

So how should I get around this

daring fern
hidden sable
#

is there a way to replace all blinds with 1 boss blind for a specific ante number

foggy ginkgo
#

Interesting

foggy ginkgo
#

Man

#

Something you're a genius

hidden sable
#

again that looks like this but it's just How?

#

anyways

#

How?

daring fern
hidden sable
wind steppe
#

why doesn't this level up a poker hand

old epoch
#

How would i make a boss blind that has its chips required randomize between 2x and 5x including decimals?

daring fern
daring fern
# old epoch Once per run

You would probably hook Game:start_run and set G.P_BLINDS.bl_modprefix_key.mult to a random number between 2 and 5

toxic flicker
#

how do i see how many cards are drawn

#

cuz im tryna add chips every time a card is drawn

daring fern
toxic flicker
#

ya but

#

that could be any amount of cards

#

idk how to see how many

daring fern
toxic flicker
#

woah

daring fern
#

Or you're just returning something with no context checks.

lament agate
#

here's the code

#
calculate = function(self, card, context)
    if context.joker_main and pseudorandom('mustard') < G.GAME.probabilities.normal / card.ability.extra.chance then
                card:juice_up(1, 0.8)
                play_sound('tarot1', 1.2)
                return {
                    message = localize { type = 'variable', key = 'a_xmult', vars = { card.ability.extra.mult_plier } },
                    xmult = card.ability.extra.mult_plier,
                    colour = G.C.RED,
                    card_eval = card
                }
            else
                return {
                    mult = card.ability.extra.base_mult,
                    card_eval = card
                }
            end
    end
}
daring fern
lament agate
daring fern
# lament agate should be good now?

You would do: ```lua
if context.joker_main then
if SMODS.pseudorandom_probability(card, 'mustard', 1, card.ability.extra.chance) then
-- do things
else
-- do other things
end
end

#

Also card_eval doesn't do anything.

lament agate
toxic flicker
#

how did this happen without showman

#

am i missing something

#

🤔

wise walrus
lament agate
toxic flicker
# wise walrus whats the code for the joker? There might be a line that specifies multiples can...
SMODS.Atlas{
    key = 'saba',
    path = 'saba.png',
    px = 71,
    py = 95
}
SMODS.Joker{
    key = 'saba',
    blueprint_compat = true,
    rarity = 3,
    loc_txt = {
        name = 'saba',
        text = {
            'Gains {C:chips}+1{} chips every time a card is drawn,',
            'Currently at {C:chips}+#1#{}.'
        }
    },
    atlas = 'saba',
    pos = {x = 0, y = 0},
    config = { extra = {
        chips = 0,
    }},
    loc_vars = function(self, info_queue, card)
        return {
            vars = {
                card.ability.extra.chips
            }
        }
    end,
    calculate = function(self, card, context)
        if context.hand_drawn then
            card.ability.extra.chips = card.ability.extra.chips + #context.hand_drawn
        end
        if context.joker_main then
            return {
                chips = card.ability.extra.chips
            }
        end
    end,
}
lament agate
#

did you spawn it with

#

debugplus

toxic flicker
wise walrus
#

that too i guess

toxic flicker
#

i didnt know lol

lament agate
#

yes

wise walrus
#

i know ive seen people have a tag specifically for more to show up regardless of showman

lament agate
#

debugplus spit on the pool

toxic flicker
#

ok good to know :3

wise walrus
#

while theres a few people here, does anyone know how to calculate/read a Blind's score before it finishes? Basically just The Joke from Cryptid but if score is >= G.GAME.blind.chips/2 then it transitions into a different boss

#

tried to understand how both Cryptid and LobotomyCorp do it and my implementation of their stuff doesnt work

daring fern
humble pawn
#

Is there a way to check to see how many duplicates you have of a certain joker?

humble pawn
#

What might that be?

daring fern
humble pawn
molten relic
#

is this code like correct?

#
        if context.individual and context.cardarea == G.play and context.other_card:is_face() then
            return {
                card.ability.extra.mult = card.ability.extra.mult - card.ability.extra.mult_mod }
        end,
        if context.joker_main then
                return {
                    mult = card.ability.extra.mult
                }
        end
    end
}```
lyric maple
#

i'm getting the forbidden "attempted to compare number with table" error from this joker, which is supposed to give xmult based on jokers to the right of this one

loc_vars = function(self, info_queue, card) -- line 535
        if card.area and card.area == G.jokers then -- note: do not delete the doubling. the grouping is (card.area) and (card.area == G.jokers).
            for i = 1, #G.jokers.cards do
                if G.jokers.cards[i] == card then
                    local card_index = i
                    return {
                        vars = { math.max(1, #G.jokers.cards - card_index or 1) + 1 }
                    }
                end
            end
        end
    end,
    calculate = function(self, card, context)
        if context.joker_main and card.area and card.area == G.jokers then
            for i = 1, #G.jokers.cards do
                if G.jokers.cards[i] == card then
                    local card_index = i
                    return {
                        xmult = { math.max(1, #G.jokers.cards - card_index or 1) + 1 }
                    }
                end
            end
        end
    end
} -- line 559
lyric maple
molten relic
#

35 mult, -5 mult per scored face card

lyric maple
# molten relic ```calculate = function(self, card, context) if context.individual and c...

the subtraction code is not meant to be returned, the correct code should be this

calculate = function(self, card, context)
        if context.individual and context.cardarea == G.play and context.other_card:is_face() then
            card.ability.extra.mult = card.ability.extra.mult - card.ability.extra.mult_mod
        end,
        if context.joker_main then
                return {
                    mult = card.ability.extra.mult
                }
        end
    end
}
molten relic
#

ohhh thanks

umbral zodiac
#

is there a list of cardareas anywhere ingame

umbral zodiac
#

i guess its not worth my time trying to do what i wanted to do anyway

lyric maple
daring fern
lyric maple
daring fern
lyric maple
#

where do you find that

daring fern
lyric maple
#

which folder

#

ohhhhhhhhhhhhhhhh

#
  function G.FUNCS.evaluate_play(...) -- line 1919
      G.SCORING_COROUTINE = coroutine.create(oldplay)
      G.LAST_SCORING_YIELD = love.timer.getTime()
      G.CARD_CALC_COUNTS = {} -- keys = cards, values = table containing numbers
      local success, err = coroutine.resume(G.SCORING_COROUTINE, ...)
      if not success then
        error(err) -- line 1925
      end
  end -- line 1927
#
if amt > 0 or amt < 0 then -- line 1097
        if extra and extra.instant then
            if extrafunc then extrafunc() end
            attention_text({
                text = text,
                scale = config.scale or 1, 
                hold = delay - 0.2,
                backdrop_colour = colour,
                align = card_aligned,
                major = card,
                offset = {x = 0, y = y_off}
            })
            play_sound(sound, 0.8+percent*0.2, volume)
            if not extra or not extra.no_juice then
                if card and card.juice_up then card:juice_up(0.6, 0.1) end
                G.ROOM.jiggle = G.ROOM.jiggle + 0.7
            end -- line 1113
-- (more stuff at the bottom)
daring fern
#

I think.

lyric maple
#

idk just a hypothesis

#

since the new 711 or whatever update changed quite a bit

daring fern
vague crest
#

is there a way to order jokers in the collection in a way different from the order theyre created code wise?

vague crest
#

aw sad

glass scaffold
#

How do I change the saved message?

lament agate
#

sound not playing for whatever reason

#

i already declared the SMODS.Sound

hidden sable
#

i don't think you can do that without

#

idk

lament agate
#

patching

hidden sable
#

or a hook

#

that's hooking into a patched function

glass scaffold
#

oh dear god

hidden sable
#

but there is a way to change the text

#

idk how tho

#

i forogotirbainksibops

glass scaffold
#

Anyone know how to?

hidden sable
lament agate
hidden sable
#

everyone knows you have to remake the entire sound atlas system from smods to get sounds to work

#

like this is trivial

#

i'm fucking with you but uhh

#

is the keynotes correct?

#

show us the sound entry

lament agate
#

fuck sake

daring fern
hidden sable
#

i'm kidding

#

oh wait

#

i see the issue

glass scaffold
hidden sable
#

to play a sound in return you need to also supply a message

lament agate
#

oh

#

fuck

#

riiiiiight

daring fern
lament agate
#

im dumb

#

so

#

message = "blabla"

hidden sable
# lament agate fuck

you can also just call play_sound before the return if you don't want a message

hidden sable
daring fern
hidden sable
#

message = "this school makes me want to whip my

lament agate
#

i see i see

hidden sable
#

(they don't see)

lament agate
#

blind

hidden sable
#

yall gotta see this IMG_7956

lament agate
#

thanks yo mb genghis kan

lament agate
hidden sable
#

i can't read that log

#

just send the top bit

lament agate
wintry solar
#

Update smods

hidden sable
#

oh yeah that

lament agate
#

oh my god

#

another new feacher

hidden sable
#

listen to mr gligg fox

hidden sable
#

nvm no more fact check

#

what they said is false

#

n
do not listen to them

lament agate
#

THEN

hidden sable
#

we all need to normalize egg reacting

glass scaffold
#

I don't even know what the hell localization is doing here.

#

It's still not working.

wintry solar
#

Do you have a loc file

glass scaffold
daring fern
glass scaffold
#

so a misc folder leading into a dictionary folder?

glass scaffold
#

-# so close to scrapping this idea.

daring fern
glass scaffold
hidden sable
#

it's no he deep

lament agate
#

what does this mean

pastel kernel
#

How do you implement a third layer on a sprite?

lament agate
#

@daring fern is it really mandatory to change all probabilities stuff

lament agate
#

FUCK

maiden phoenix
lament agate
#

oh my god i have alot of probabilities joker

#

im cooked

pastel kernel
maiden phoenix
#

Read the docs I can't rn

daring fern
lament agate
wintry solar
#

What’s the point of typing out full docs for new updates if people don’t even read them 🥲🙃

lament agate
#

I DID READ IT JUST NOW

rotund sable
#

And some people read the docs

normal rover
#

greetings fellas
is there a state i can use to instantly win a run?
i assume that there's one since there's a state to instantly lose a run

normal rover
#

i actually had no idea that was a thing xd

#

thanks :)

#

that will be just great for this stinker

lament agate
#
config = {
        extra = {
            mult_gain = 3,
            chip_gain = 25,
            consumed = 0
        }
    },

    loc_vars = function(self, info_queue, card)
        return {
            vars = {
                card.ability.extra.mult_gain,
                card.ability.extra.chip_gain,
                G.GAME.consumeable_usage_total or 0,
                card.ability.extra.mult_gain * G.GAME.consumeable_usage_total,
                card.ability.extra.chip_gain * G.GAME.consumeable_usage_total
            }
        }
    end,

    calculate = function(self, card, context)
        if context.using_consumeable and not context.blueprint then
            G.GAME.consumeable_usage_total = G.GAME.consumeable_usage_total + 1

            G.E_MANAGER:add_event(Event({
                func = function()
                    card:juice_up(0.5, 0.5)
                    return true
                end
            }))

            return {
                message = localize { type = 'variable', key = 'a_mult', vars = { card.ability.extra.mult_gain } } ..
                    " " ..
                    localize { type = 'variable', key = 'a_chips', vars = { card.ability.extra.chip_gain } },
                colour = G.C.MULT
            }
        end

        if context.joker_main and G.GAME.consumeable_usage_total > 0 then
            return {
                mult = card.ability.extra.mult_gain * G.GAME.consumeable_usage_total,
                chips = card.ability.extra.chip_gain * G.GAME.consumeable_usage_total
            }
        end
    end
}
#

this crashes the game

#

somehow

#

trying to index consumeable_usage_total

maiden phoenix
#

G.GAME.consumeable_usage_total is a table

lament agate
maiden phoenix
#

Use G.GAME.consumeable_usage_total.all instead to do math, no need to increment it

lament agate
#

what should i change tho

maiden phoenix
#

For things like mult = card.ability.extra.mult_gain * G.GAME.consumeable_usage_total add .all to the usage total thinggy

#

And remove G.GAME.consumeable_usage_total = G.GAME.consumeable_usage_total + 1

maiden phoenix
#

same, add .all

lament agate
frigid cargo
#
--  Glitch blind
 SMODS.Atlas {
    key = "GlitchBlind",
    path = "GlitchBlind.png",
    px = 34,
    py = 34,
    frames = 1,
    atlas_table = 'ANIMATION_ATLAS'
}

SMODS.Blind {
    key = "GlitchBlind",
    atlas = "GlitchBlind",
    dollars = 5,
    mult = 2,

idk how the animation works on blinds so can anyone help me?

drowsy acorn
#

im trying to get this joker to create an exact copy of itself when it is destroyed and the way im (trying) to go about it is by having it select itself to copy sort of like invisible joker does in the code but apparently og_card is a nil value, anybody know what exactly im doing wrong? remove_from_deck = function (self, card, from_debuff) if not from_debuff and card.ability.active ~= false then card.ability.extra.Xmult = card.ability.extra.Xmult + card.ability.extra.Xmult_mod print(tostring(card.ability.extra.Xmult)) G.E_MANAGER:add_event(Event({ delay = 0.1, func = function () local my_pos = nil for i = 1, #G.jokers.cards do if G.jokers.cards[i] == card then my_pos = i break end end local og_card = G.jokers.cards[my_pos] local copy = copy_card(og_card, nil, nil, nil, og_card.edition) copy:start_materialize() copy:add_to_deck() G.jokers:emplace(copy) return true end })) end end }

unborn bay
lament agate
unborn bay
#

so my_pos remains nil

drowsy acorn
#

i see, that makes sense

maiden phoenix
lament agate
# maiden phoenix Show your whole code
config = {
        extra = {
            mult_gain = 3,
            chip_gain = 25,
            consumed = 0
        }
    },

    loc_vars = function(self, info_queue, card)
        return {
            vars = {
                card.ability.extra.mult_gain,
                card.ability.extra.chip_gain,
                card.ability.extra.consumed,
                card.ability.extra.mult_gain * G.GAME.consumeable_usage_total,
                card.ability.extra.chip_gain * G.GAME.consumeable_usage_total.all
            }
        }
    end,

    calculate = function(self, card, context)
        if context.using_consumeable and not context.blueprint then
            G.E_MANAGER:add_event(Event({
                func = function()
                    card:juice_up(0.5, 0.5)
                    return true
                end
            }))

            return {
                message = localize { type = 'variable', key = 'a_mult', vars = { card.ability.extra.mult_gain } } ..
                    " " ..
                    localize { type = 'variable', key = 'a_chips', vars = { card.ability.extra.chip_gain } },
                colour = G.C.MULT
            }
        end

        if context.joker_main and G.GAME.consumeable_usage_total.all > 0 then
            return {
                mult = card.ability.extra.mult_gain * G.GAME.consumeable_usage_total.all,
                chips = card.ability.extra.chip_gain * G.GAME.consumeable_usage_total.all
            }
        end
    end
}
unborn bay
#

just clone the card directly lmao

maiden phoenix
#

Which line is 1572?

lament agate
maiden phoenix
#

you forgot an .all

lament agate
#

fuck

drowsy acorn
lament agate
#

the rest is good tho right

unborn bay
#

you daft

maiden phoenix
#

Should be yea

lament agate
unborn bay
#

its either that or you die again nxkoo

#

pick your poison

lament agate
lament agate
maiden phoenix
drowsy acorn
#

as i i just plug in card in place of the copys i have rn?

unborn bay
#

in place of og_card

lament agate
#

should i put increments?

maiden phoenix
#

Replace og_card in copy_card by card

#

the card parameter references the card being removed, so there's no need to fetch for it

drowsy acorn
#

ok that almost works, its just missing its edition

#

unless using DebugPlus to add the edition to the joker somehow makes it not work

maiden phoenix
#

Remove og_card.edition in your copy_card, that's to remove the edition, not add it

drowsy acorn
#

thats what i was thinking after looking at Invisible Joker's code again 🤦‍♂️

#

thanks a lot for the help drspec2Aced

maiden phoenix
#

yw

hidden sable
#

yknow there's alot more shit for face cards than there is for aces and numbers

iron iron
#

is there any way to check for these values

molten relic
#

where in this code can i put a message?

#
        if context.individual and context.cardarea == G.play and context.other_card:is_face() then
            card.ability.extra.mult = card.ability.extra.mult - card.ability.extra.mult_mod
        end
        if context.joker_main then
                return {
                    mult = card.ability.extra.mult
                }
        end
        if context.first_hand_drawn then
            card.ability.extra.mult = card.ability.extra.base_mult
        end
    end
}```
#

(message when mult_mod is subtracted from mult)

near bay
#

how do i debuff a card permanently

pastel kernel
#

I wanna install the whole vanillaremade files

#

Where’s the zip though

rotund sable
pastel kernel
#

Fuck I forgot that exists

red flower
molten relic
#

yeah i already figured it out but thanks

red flower
pastel kernel
#

Wait

#

Is it allowed to

#

Put all your code in one lua?

#

Vouchers, Consumables, Jokers, all in one lua?

red flower
#

yes

unborn bay
#

its bad practice however

molten relic
#

you can, but you can seperate them to have it more easily accessible

near bay
wheat jewel
#

How can I edit the rate at which stickers are added onto Jokers?

#

need to know for a voucher i'm making

#

tried looking at documentation to no avail

modern kindle
#

Good schmorning chat

chrome widget
#

Morning Dilly

modern kindle
#

Hey I was just talkin to you :b

#

Good morning goddess of the skies

chrome widget
#

I am in the sky!!!!

#

(I'm actually on the ground rn)

modern kindle
#

What if I picked up the plane wyd

modern kindle
#

N hi N what's up N hi

red flower
#

🛌

modern kindle
#

Thats me rn lowk

#

My eyes are still desiring the closing

#

But alas, here i am

subtle urchin
#

Im having trouble with the balatro undertale mod (VioMarks on twitter), the folder has inside two folder (undertale and _MACOSX) and i dont know if i have to put both folder separately, only one, or together in the same folder, since the readme doesnt say anything about that. Anyone know how to fix? thanks!

austere schooner
#

it's only there because of the weird way Mac OS does metadata and doesn't do anything for Windows or Linux

lament agate
#

wanted this joker to spawn only 1 temp joker

#

instead it spawns multiple

red flower
#

you dont need to use the new context just because its there lol

subtle urchin
#

could be the version of the game? or the version of the mod manager?

wheat jewel
#

If i want to test how a custom made voucher works when debugging, what command should i use in the debug menu to redeem a voucher for testing

red flower
lament agate
wintry solar
lament agate
#

not gdamn

red flower
lament agate
red flower
#

instead of context.initial_scoring_step

#

i dont think it should make a difference but i havent looked at how that context is called

wintry solar
#

Did i put it in the wrong place? 🫣

lament agate
#

imma do

#

something rq

#

is if G.GAME.hands_played a thing

red flower
#

question: is the problem that this code spawn multiple or that it spawns one even if you already have one?

wintry solar
#

Oh

red flower
#

ohh ok then idk what j.ability.temporary is

wintry solar
#

That’s not what I thought the problem was

lament agate
#

nah

#

should be good now

wintry solar
#

You want to only spawn the card if it’s missing right?

mild grove
#

So when i was debuging this, I saw it was creating foil playing cards, but I don't want it to spawn playing cards with enchancements.

could anyone help with this?

lament agate
#

i thought context.initial_scoring_step will make it so that it counts both jokers

#

into scoring

#

turns out only damn scores

#

not daniel

wintry solar
#

You should change this crap to use SMODS.find_card then

wintry solar
#

You’re adding it within an event, so it’ll get added after all the calculations are calculated

wintry solar
#

I don’t know the full idea behind the joker, but it seems it’s intended to be one joker split into two cards?

lament agate
#

so here's what it does

#

the first joker only works like a normal joker

#

but has 1 in 2 chance to spawn

#

another joker

#

and adds score to the hand

#

and then destroys itself

#

after scoring

wintry solar
#

I guess just use add card not in an event within your calculate step

lament agate
red flower
frigid cargo
hidden notch
#

I have a question for "context.post_trigger":
On the wiki it says "for effects after a Joker has triggered",
but while testing I noticed it seems to trigger before the Joker triggers?
I'm currently testing something with "Lusty Joker" (I only play one hearts-card),
when I print the order of operations it goes as follows: context.post_trigger context.individual context.other_joker context.post_trigger context.other_joker

But I would expect, based on the description: context.individual context.post_trigger context.other_joker [...]

red flower
#

unless im misundertanding something

#

oh yeah sorry i misread

hidden notch
#

but the post_trigger can only come after the individual, right?
I mean, the hearts-card is triggering the lusty joker which then triggers the post_trigger, is it not?

red flower
#

yeah that makes sense

molten relic
#

why doesnt this code work?

#
        if context.individual and context.card_area == G.play and
            context.other_card:is_suit(card.ability.extra.suit) and
                 (context.other_card:get_id() == 14 or context.other_card:get_id() == 2) then
                    return {
                        Xmult = card.ability.extra.xmult
                    }
                end
            end
}```
red flower
#

context.cardarea