#💻・modding-dev

1 messages · Page 425 of 1

red flower
#

there's no context for non-playing cards being destroyed

crude kite
#

Oh wow I'm a genious

blazing salmon
#

yeah yeah

red flower
#

you would probably need to patch or take ownership of food jokers honestly

blazing salmon
#

ill check it out

crude kite
#

I don't think your unhighlighting your cards

pure salmon
#

i shouldn't have to, right? if they're being discarded they should be unhighlighted

cobalt vector
#

what does pcard mean?

unborn bay
#

i mean can't you just hook card: remove()

scarlet imp
hybrid shadow
unborn bay
#

though that means you have to determine if that card is either sold to be consumed

#

or eaten

red flower
obtuse silo
#

would this work?

unborn bay
#

which is another problem

cobalt vector
red flower
#

yes

red flower
pure salmon
#

actually i think i got it

#

how do i check if a card is highlighted

cobalt vector
#

well, now it works!

#

hell yeah!

daring fern
chrome widget
#

oh god more recursive table searching uhhh

obtuse silo
daring fern
# obtuse silo

You're not putting those values in config.extra, you're just putting them in config.

obtuse silo
#

ohhhh

obtuse silo
pure salmon
#

ok cool this works on discard now but NOT on play, where the played cards flip around and their scoring values appear above the deck

red flower
obtuse silo
#

what?

#

here's the code again btw

red flower
# obtuse silo

the config in this screenshot was correct, from the logs it seems like you changed it

#

the loc_vars had the problem something mentioned

obtuse silo
#

yeah
i did have to change it because even looking at the object would have crashed the game

#

the difference now is that it crashes when i open the thing

red flower
#

yes but the problem is in loc_vars, not in the config

hybrid shadow
#

theres only one spectral that has a "negative" effect that im not letting this one change

red flower
#

ecto?

hybrid shadow
#

nah, immolate

obtuse silo
hybrid shadow
red flower
obtuse silo
#

oh
sorry
lemme try your way

obtuse silo
#

because I changed those to how you prefer to do em'
and i'm getting the exact same error

red flower
obtuse silo
red flower
#

did you restart the run?

subtle merlin
#

I have an issue (yes, another one and yes, with the same enhancement as earlier, shocking.)

I have an enhancement that counts each time it's played. On the third time its played, it self-destructs granting 3x mult. The issue is, that when scored with other cards that self-destruct on the same turn, they retrigger the 3x mult, leading to scores that shouldn't be possible ante 1, but i have no idea where to start with fixing it (Video is there in case my explanation wasn't good enough to understand the issue)

obtuse silo
#

alright
lemme try that cuz i continued instead

#

i continued the run after restarting the game, i mean

red flower
#

yeah boosters save config values like jokers do

obtuse silo
#

that makes sense

agile night
#

sorry for disrupting but do any of you guys know what the key to replace the tarot merchant and tycoon vouchers? i was searching for the wiki for like an eternity and couldnt find it (in malverk)

sonic cedar
#

how would i have like a constant check for if a joker is to the left of a joker? like what would the if statement be

subtle merlin
hybrid shadow
#

is there a parameter that i can use to check if the player isnt on the main menu/ in the collection menu (evidently some of my stickers crash the game when you attempt to view them in the main menu due to their apply function being called and blind being nil in the main menu)

hollow snow
#

guys my mod is done, i just need to do the info_queue to explain some of my joker, how do you add that

hybrid shadow
north lodge
#

G.STAGE == G.STAGES.RUN

daring fern
obtuse silo
#

probably because there's no iteration

hollow snow
#

also does the SMODS.add_card take care of not adding it in case of card_limit reached?

daring fern
red flower
hollow snow
#

ok thanks

red flower
obtuse silo
#

lemme try that

scenic steeple
#

so right now, it's meant to destroy the current joker (Alt) and create this other joker (Devotion) when it detects that a fourth of the deck is wild cards. Instead it's turning into Devotion whenever

  1. I play a hand (not automatically)
  2. it's ignoring the fact wilds are not making up a fourth of the deck
obtuse silo
hybrid shadow
hybrid shadow
sonic cedar
woeful obsidian
#

Hi papus

north lodge
woeful obsidian
#

anyone knows what method is used to apply a variable to the first card figure of the hand, similar to photography

sonic cedar
daring fern
daring fern
hybrid shadow
north lodge
#

Do a check for the CardArea it exists in

sonic cedar
woeful obsidian
#

PUTOS

daring fern
sonic cedar
#

im listening

hybrid shadow
daring fern
north lodge
sonic cedar
north lodge
#

^^^^

#

That's the better way of doing it though

hybrid shadow
woeful obsidian
#

Hey does anyone know what method is used to add a variable to the first card of the hand

north lodge
#

What do you mean by "a variable"? What are you trying to accomplish?

#

If you're trying to achieve a similar result to The Photograph, then I would suggest taking a look at the photograph source code.

if self.ability.name == 'Photograph' then
    local first_face = nil
    for i = 1, #context.scoring_hand do
        if context.scoring_hand[i]:is_face() then first_face = context.scoring_hand[i]; break end
    end
    if context.other_card == first_face then
        return {
            x_mult = self.ability.extra,
            colour = G.C.RED,
            card = self
        }
    end
end
woeful obsidian
#

Thanks a lot

hollow snow
#

what is the normal info_queue structure?

scenic steeple
#

so right now, it's meant to destroy the current joker (Alt) and create this other joker (Devotion) when it detects that a fourth of the deck is wild cards. Instead it's turning into Devotion whenever

  1. I play a hand (not when a fourth of the deck is wild)
  2. it's ignoring the fact wilds are not making up a fourth of the deck
daring fern
north lodge
sonic cedar
#

otherwise good?

north lodge
daring fern
sonic cedar
#

ill test it in a bit though,i gotta leave rq

scenic steeple
woeful obsidian
#

Hey last question is there any place that documents all the skills of jokers in script or written somewhere that are compatible with steammoded?

woeful obsidian
#

Thanks

north lodge
#

Clearly @daring fern has something to say about that but won't actually type it out, so I may be incorrect.

normal crest
#

no, I think what you sent is exactly what they asked for

#

it's just not really "documented"

daring fern
normal crest
#

more like a showcase

north lodge
red flower
#

im bad at docs

normal crest
#

you're not the only one

modern kindle
red flower
#

for legal reasons I would like to say that I'm not and have never practiced medicine

sonic cedar
zealous glen
modern kindle
hollow snow
#

how can i make it so my joker can't be deleted by ceremonial dagger?

scenic steeple
zealous glen
modern kindle
daring fern
sage crater
#

how do I make a joker take up no space in the joker slots?

#

like if I have four jokers, one of them being this joker, the slots would say 3/5

red flower
#

i dont think you can without a lot of jank, I wouldn't recommend it

sage crater
#

damn

north lodge
#

Just make it negative :)

sage crater
#

guaranteed negative it is 😔

red flower
#

yeah

sage crater
#

actually, if I just put +1 joker slot in the stats, that should work lmao

north lodge
red flower
#

you can make an edition with a card_limit

#

and not have a shader

daring fern
sage crater
#

oh, fascinating

mild olive
#

I'm trying to make my joker do a X5 mult when having a Flush of diamonds but it doesn't really do it, did i do something wrong

#

or probably i did everything wrong idk

hollow snow
obtuse silo
granite nymph
#

does anyone know the shop rate for spectrals?

daring fern
north lodge
#

Otherwise, if you're referring to like pulling The Soul or Black Hole it is .3%

daring fern
north lodge
#

I corrected myself

proud ridge
#

Ok so i am having an issue where i am trying to make a joker trigger +chips then xmult, but it triggers both of them at the same time, rather than one after the next. Would anyone know how to make them trigger one and then the other?

granite nymph
daring fern
#

You are defining the message twice.

nova eagle
#

hey guys, what is the reference key for tier 2 vouchers?

#

im making a joker that after a while creates a tier 2 voucher of an already owned tier 1

#

for example if you own seed money: it would give you money tree

daring fern
nova eagle
#

so if i want it to hit a random: would i have to list all possible vouchers?

azure plinth
#

If I'm trying to get something to trigger after beating a boss blind, but before receiving the payout of this boss blind, how would I achieve this?

proud ridge
daring fern
#
return {
    chips = card.ability.extra.chips
    xmult = card.ability.extra.Xmult
}
red flower
azure plinth
proud ridge
granite nymph
#

does anyone iknwo how to put a card on the title screen?

#

kind of like cryptid

daring fern
proud ridge
#

ok that worked, thanks!!

#

ehy did thag send 5 times

granite nymph
#

cryptid code is incoherent black magic

proud ridge
#

there we go

subtle merlin
daring fern
subtle merlin
#

Hold on, let me check my mods

granite nymph
daring fern
subtle merlin
#

I was thinking of Aiko

granite nymph
#

yeah but aiko has like 40 lua files

#

i didn’t feel like looking through all of them

subtle merlin
#

fair

obtuse silo
daring fern
granite nymph
#

i didn’t know what i was looking for

blazing salmon
#

hi im back, how would you go about this?

mild olive
#

is there something wrong with this code that it doesn't work

scarlet imp
# blazing salmon hi im back, how would you go about this?

Never done something like that myself, but if you look at Jokers like the Tarot one or Throwback, the game keeps track on the stats they rely on from run start. You probably just wanna do the same thing by declaring your own global variable

mild olive
daring fern
# mild olive what is it

Replace center in the functions with card and do x_mult = card.ability.extra.Xmult in the return.

blazing salmon
daring fern
mild olive
daring fern
# mild olive

You didn't change the return also you swapped context and card

mild olive
#

wdym swapped context and card

daring fern
shell kite
#

Is possible to get the score of a played hand?
I want to make a joker that trigger if a certain score is reached

shell kite
daring fern
daring fern
daring fern
shell kite
final monolith
#

I'm trying to make a mod and it magically isn't crashing the game anymore

#

(i have barely any experience with Lua)

obtuse silo
wintry solar
shell kite
mild olive
#

gen question btw

wintry solar
#

if you've changed your config it does yeah

#

anything in here won't update until it's a new instance of the card

nova cedar
#

cavendish final form

#

(effects incomplete)

sage crater
#

is that a shader??

mild olive
#

thanks

#

😭

nova cedar
sage crater
#

ah, ok

#

it looks amazing

final monolith
#

Is there any documentation listing properties, names etc? I know there's many examples around but it would be a lot easier

nova cedar
#

ty!

sage crater
nova cedar
#

got it from this discord, someone regex'd every single mention of each context within the code

final monolith
nova cedar
#

for a lua API without ldoc or anything, this is one of the best-documented APIs i've seen

final monolith
#

Currently I'm trying to figure out why my joker gives the message pretty much always

hybrid shadow
#

so glad that im finally done coding this one

hollow snow
#

what is the property of G.jokers that dictates the size

wintry solar
final monolith
nova cedar
#

i've made modding APIs before and making a documentation as concise and understandable as the smods wiki is not an easy task

wintry solar
hollow snow
sage crater
#

oh lol

#

card_limit

hollow snow
#

thanks

final monolith
wintry solar
#

context.individual is a flag in certain contexts that indicates an individual palying card is being evaluated for some step

zealous glen
hasty mist
blazing salmon
#

how can i spawn jokers for testing

north lodge
#

DebugPlus makes it easy

hasty mist
#

i think it's close, but the numbers dont seem to be exact

#

not sure why

blazing salmon
zealous glen
#

CTRL+3

#

Or CTRL+C

zealous glen
blazing salmon
#

thank you!

hasty mist
#

ok that is NOT right

#

@wintry solar sorry for the ping, you were helping me with this yesterday

#

i am quite confused

final monolith
#

modding Balatro has made me so crazy that I accidentally booted up Everhood instead of Balatro

wintry solar
hybrid shadow
hasty mist
final monolith
#

Guys my code is working
Not properly, not at all
But at least it's working

normal crest
hybrid shadow
normal crest
#

makes sense

#

good choice

wintry solar
# hasty mist yes

can you paste the code directly then I can add some debug stuff in for you to run?

obtuse silo
#

i could really use some help with making a new consumable type, last thing i tried came up with this error

zealous glen
#

destroying cards is the upside so the money must be the downside

hybrid shadow
wintry solar
# hasty mist hope this works
local congruentia_mult = mod_mult
mod_mult = function(mult_change)
    local result = congruentia_mult(mult_change)  
    if next(SMODS.find_card('j_ast_congruentia')) then
        print('mult_change: '..result)
        print('current mult: '..mult)
        print('current chips: '..hand_chips)
        print('change? '..(to_big(mult+result)>to_big(hand_chips)))
        if (to_big(mult)) + (to_big(result)) > (to_big(hand_chips)) then
            hand_chips = (mult+result)-hand_chips
            print('chips set: '..hand_chips)
        end
    end
    return result
end

just change this mult one for now and run the single 6 again please

hybrid shadow
proud ridge
#

are there any mods for assistance when mod developing? ones that let u spawn jokers, clear blinds, get money, stuff like that

proud ridge
#

oohhh hell yeah!!!

wintry solar
#

probably need a (hand_chips or 0) too

hasty mist
wintry solar
#

yeah

#

or

#

at the top you can put mult = mult or 0

final monolith
#

Probably noob question but how do I check how many cards with a specific rank/suit there are in the full deck?

#

I tried copying the code from cloud 9 and bloodstone but it didn't work

hasty mist
#

that seems easier

proud ridge
#

i know that the cryptid mod has a special qualification for food jokers, is that cryptid specific?

hasty mist
#

or should it be in a diff place

proud ridge
#

i wanna make a joker that scales when u purchase food jokers but not sure how ><

wintry solar
hasty mist
#

alrighty

wintry solar
#

oh hold on, I missed a tostring too

#

print('change? '..tostring(to_big(mult+result)>to_big(hand_chips)))

hasty mist
#

alr it looks like this now

#

or wait

#

oh

#

it replaces line 96

#

i see

subtle merlin
wintry solar
#

yeah, try running it now

hasty mist
#

that seems right i think

plush depot
wintry solar
#

wtf why doesn't it do the prints properly

#

oh

#

I guess you don't add any mult here

hasty mist
#

it seems to function at least

wintry solar
#

give yourself a mult joker and try it again

coarse plank
#

how do you check for a minimum number of cards played?

wintry solar
#

if you could remove the chips function prints too that would be handy

hasty mist
wintry solar
#

no

hasty mist
#

because rn it looks like this

wintry solar
#

I just want to see the mult values for now

hasty mist
#

alr

subtle merlin
wintry solar
#

looks like it works fine to me

#

I'd remove all the prints and copy the mult=mult or 0 and handchips ones into the chips function too

hasty mist
#

alr

coarse plank
#

how do you check for first discard used?

formal parrot
#

CODING HUH

final monolith
#

How would I go about checking for cards with specific suit/rank in the full deck?

formal parrot
#

You need to make a for

solid mesa
#

sorry, whats the context when a round ends?

formal parrot
#

for i = #G.playing_cards, 1, -1 do

formal parrot
final monolith
solid mesa
granite nymph
formal parrot
# solid mesa thx, i will try that

if context.end_of_round and context.cardarea == G.jokers then { cardarea = G.jokers, -- G.hand, (G.deck and G.discard optionally enabled) end_of_round = true, game_over = game_over -- true or false }

#

Give me a kiss now

formal parrot
subtle merlin
solid mesa
#

yea i find him, now i have issues

#

ty all

formal parrot
#

😭🫡just read the wiki

formal parrot
solid mesa
subtle merlin
#

we should get someone to pin the wiki in this channel

solid mesa
formal parrot
narrow pollen
#

would be nice, yeah

solid mesa
granite nymph
final monolith
granite nymph
#

this crashes

subtle merlin
formal parrot
solid mesa
final monolith
solid mesa
#

im trying to do a scalating joker, but, eh

final monolith
#

I can't really find what I'm looking for

granite nymph
#

does anyone how to put a card on tyh title screen

#

like cryptid or aiko

formal parrot
subtle merlin
formal parrot
#

But you can look in other people’s codes and find it

subtle merlin
#

but it can still be somewhat helpful rn

solid mesa
#

tf i do wrong, now mult is stuck in e11

final monolith
formal parrot
#

I think its a draw function

final monolith
#

I got some "ipairs" in my code idk what it means

formal parrot
#

Forgot what it meant

final monolith
#

It doesn't give me any errors that's the funny part

obtuse silo
# obtuse silo

one last time before i head to bed
could someone please help me out with this
this happens as soon as i click the button to see the "consumables"

final monolith
#

So uhhh

final monolith
granite nymph
final monolith
final monolith
granite nymph
formal parrot
#

Change the

#

Local newcard

granite nymph
formal parrot
#

Im too stupid for this shit

subtle merlin
#

Stupid card idea that i had and want to share despite it's probable unoriginality:

"Armed and Dangerous"
"If the current hand scores [x]% of the blind requirement, retrigger all cards scored for every 10% of the blind requirement scored and raise [x] by 10"
"(Percentage resets at the end of the round)"

tight notch
#

for some reason this joker works but it doesn't destroy the card

hybrid shadow
granite nymph
subtle merlin
tight notch
#

where do i put that

hybrid shadow
granite nymph
#

j_yip_pickles

subtle merlin
hybrid shadow
formal parrot
granite nymph
#

the joker itself works perfectly fine in play

#

but it doesnt show up on the menu

hybrid shadow
tight notch
#

it still doesn't work

#

the card just stays

hybrid shadow
tight notch
#

the card doesn't do anything anymore but it stays

hybrid shadow
#

wait is this destroying jokers or destroying playing cards

tight notch
#

destroying jokers

tight notch
#

also after adding that it doesn't do anything now

#

i've been following that this entire time

hybrid shadow
tight notch
#

actually i meant ceremonial dagger

#

i thought that's what you sent

final monolith
#

What's the difference between base.suit and extra.suit

#

Is it like for wildcard and smeared?

tight notch
#

ah i think i forgot joker buffer

#

nope, still doesn't work

#

the joker acts like it isn't there but isn't gone

#

but still takes up a slot

hollow snow
#

what is the limit for jokers stored in? nvm its G.jokers.config.card_limit

hybrid shadow
thorn flame
north lodge
#

So I have learned that create_option_cycle has a funny thing in it where it sets the option_cycle with a value, non_recalc = true which makes me think this has been the root cause of the option cycles not updating for whatever reason. Should I just copy the create_option_cycle(args) function, remove that part, and use that modified function?

hybrid shadow
final monolith
#

MY FIRST JOKER WORKS

#

It took... Less than I expected actually

north lodge
#

The option_cycles are the only UI element that uses this 😅 god

hybrid shadow
thorn flame
#

show show show

final monolith
#

Each card gains 0.2 mult for each copy in the full deck (I didn't really think about the balance of it)

#

Like you have 3 kings of spades now a king of spades gives x1.4 mult

hollow snow
#

lowkey very good

final monolith
#

Idk if .2 is too much or too little but eh I'm gonna figure it out later

#

Now it's 3 am lmao

hollow snow
#

also is there a way to generate random float between a range, lets say 0.5 - 0.8 within smods or the game's functions?

final monolith
hybrid shadow
north lodge
granite nymph
#

?

hybrid shadow
granite nymph
#

i used c_soul

#

still broken

hybrid shadow
#

then its probably a code problem

granite nymph
#

it works in cryptid

hybrid shadow
granite nymph
#

theres like 20 files in aiko shenanigans

formal parrot
hybrid shadow
#

stupid question but is there anything in any mod that retriggers played cards in sequence from left to right disregarding when they originally trigger

hollow snow
#

what was the on_remove function for jokers?

red flower
#

remove_from_deck

modern kindle
#

I took a nap hello chat

red flower
#

was it good

modern kindle
#

I slept so sloppy I was droolin

#

So I'd guess so

subtle merlin
modern kindle
#

But now that I'm waking up, how much of a nuisance is it to add a whole new category to the stats page
I want to make a direct opposite to each of the current stats of most used cards

#

So I can do shit with the least used of eacg

#

Each

subtle merlin
#

I thought i had it working but turns out i didn't, this triggers even if the card wasn't retriggered

hybrid shadow
subtle merlin
hybrid shadow
subtle merlin
hybrid shadow
#

i will try it as is first and then change it if it doesnt work

#

yeah ok does not work as is will switch it

hollow snow
#

what is the context of the card being removed?

subtle merlin
#

Ik there is but idk the variable for it, try G.GAME.blind.reward maybe?

subtle merlin
#

(I know enough to help ppl now!! :3)

hollow snow
hybrid shadow
subtle merlin
hybrid shadow
subtle merlin
subtle merlin
granite nymph
#

is there any way to check each cards rank in a hand indivisually

#

like

hollow snow
#

ok, np ty im reading the calculate thing and i think i got what i need

subtle merlin
hybrid shadow
subtle merlin
subtle merlin
hybrid shadow
granite nymph
#

could i do something like
if card1.rank + card2.rank + card3.rank + card4.rank + card5.rank = 21 (not exactly in those words i mean)

subtle merlin
# hybrid shadow

I don't have that for my mod, i thought you meant a joker causing it or smth

normal crest
subtle merlin
subtle merlin
normal crest
#

that's high praise

subtle merlin
modern kindle
#

Srock you're a smarty marty

#

You deserve your very own mcflurry

#

With m&ms

subtle merlin
#

It isn't a high bar but you pass it by a long shot

granite nymph
normal crest
granite nymph
#

and also for a specific card played not just to look for a specific card played

normal crest
#

what do you want to do with the rank as a number

modern kindle
#

I was gonna suggest get_id myself
I be using it

subtle merlin
#

Now that there's someone else answering i feel i can go back to asking questions :3

granite nymph
normal crest
#

card being the playing card you want to get the rank of

hybrid shadow
# normal crest no

is there a way i can make my sticker retrigger all played cards when its scored (i already know that context.main_scoring is the right context for when the sticker is scored but i cant seem to figure out retriggering cards independent of their original timing)

granite nymph
#

how do i get the rank of a certain card played

#

like first card of hand

#

second card of hand

#

etc

normal crest
modern kindle
#

what exactly are you trying to figure out

#

cause im able to add ranks together in checking for things like blackjack

hybrid shadow
granite nymph
#

wahat im doing lmao

#

checking for a blackjack

subtle merlin
hybrid shadow
normal crest
# hybrid shadow damn

cus repetitions are calculated before anything is scored, what you're trying to do requires hooking whatever function is responsible for calculating the amount of repetitions a card gets

modern kindle
unborn bay
#

instead of relying on calculating retriggers

subtle merlin
normal crest
#

only itself

unborn bay
#

i mean its main effect

#

then using SMODS.score_card

hollow snow
#

so i want to do a sound effect and a message when my joker gets destroyed, how could i do that?

normal crest
#

oh right, that exists

unborn bay
#

score_card the goat

hybrid shadow
#

the whole thing not just SMODS.score_card

sturdy compass
#

I forget, does SMODS add a context for entering the shop?

normal crest
normal crest
sturdy compass
#

Sick

normal crest
#

inside the context.individual check only increment context.other_card's count

subtle merlin
hollow snow
#

how do you access the game's sfx volume setting? so i can make my sounds scale with sfx volume

normal crest
#

but idk the exact values you're looking for

normal crest
#

so it's probably wrong

hollow snow
normal crest
#

and don't return

normal crest
hybrid shadow
wild escarp
#

Any reason this doesn't work? Basically just copied from extra credit alloy joker

if context.check_enhancement then
    if context.other_card.config.center.key == "m_glass" then
        return {m_steel = true}
    end
end
hybrid shadow
subtle merlin
red flower
normal crest
# subtle merlin

looking at the code more, I'd remove the context.before part, inside context.individual remove the for loop and do context.other_card.count = (context.other_card.count or 0) + 1

wild escarp
#

Nope, thanks!

unborn bay
#
SMODS.score_card(card, context)
hybrid shadow
normal crest
hybrid shadow
normal crest
#

I mean I think you can still make them score in a void by passing a cardarea too, looking at the code

subtle merlin
chrome widget
#

is multi-line attention text a built-in feature currently?

zenith hedge
#

how do i fix this

red flower
normal crest
zenith hedge
red flower
zenith hedge
#

my 1x folder

#

should it be in x2

red flower
#

remove the prefix from the file

zenith hedge
#

the .png?

red flower
#

it should be the exact same as the path

red flower
hybrid shadow
zenith hedge
#

yea i had it without the xmpl_

#

was broken

normal crest
zenith hedge
#

thats probably why it dont work

normal crest
#

but also remove the prefix from the file

zenith hedge
#

i did that

#

it broke again and i have no idea what this means

normal crest
#

what's line 193 of your main.lua

zenith hedge
#

it has to say jokers.ability.extra.seal for jokers right

hybrid shadow
#

wow i cannot get this context right

normal crest
#

that code is not in the right place whatsoever

zenith hedge
#

add a seal to a card

umbral zodiac
#

anyone know why running this code is causing this crash?
changing discard limit in other places seems to be fine but it just doesnt work here for some reason

zenith hedge
#

through a consumable

umbral zodiac
#

oh im geeked thank you

hybrid shadow
umbral zodiac
#

i do wish that it didnt matter at all

normal crest
zenith hedge
#

whats the use function

hollow snow
normal crest
umbral zodiac
#

or not notice that you used the wrong one

faint yacht
hybrid shadow
normal crest
normal crest
granite nymph
faint yacht
#

ye.

hybrid shadow
wild escarp
#

How would I force glass cards to always shatter with a joker?

hollow snow
#

can't find it in the wiki so idk, ill keep searching

normal crest
#

if the other card is glass

hybrid shadow
normal crest
#

no no

hollow snow
normal crest
#

just SMODS.score_card(v, context)

hybrid shadow
normal crest
#

oh right

#
if v ~= card then
  SMODS.score_card(v, context)
end
#

cus it's scoring itself infinitely I assume

hollow snow
#

i mean if its context.cardarea and scoring think about it, youre re scoring every card every frame its scoring

sonic cedar
#

is it safe to update lovely 8 before i forget (as a modder i mean)

red flower
#

yes

sonic cedar
#

sick

hollow snow
modern kindle
hybrid shadow
#

oh nvm i guess its technically normal

red flower
#

what happens if you score two of them tho

sonic cedar
#

updated

normal crest
hybrid shadow
#

fuck

red flower
#

:3

proud ridge
#

:3

normal crest
#

maybe score_card isn't such a great idea

hybrid shadow
#

alr i think i know how to prevent it at least

red flower
#

i would do this

context.prefix_retrigger = true
 SMODS.score_card(v, context)
context.prefix_retrigger = nil
#

and then check that

#

that allows the card to retrigger itself too without doing the loop

sonic cedar
normal crest
#

i love my computer

umbral zodiac
#

i might be stupid but
anyone know why these info queues have no text inside them? in the localization file, they all have their name & the text "placeholder"

hybrid shadow
normal crest
#

N's way is the right way

#

unsurprisingly

umbral zodiac
sonic cedar
#

to the surprise of absolutely NOBODY /ref

modern kindle
hybrid shadow
normal crest
normal crest
hybrid shadow
umbral zodiac
#

decks is a list of decks that are valid for this voucher

normal crest
upbeat bronze
#

i feel like im doing something wrong here

wild escarp
#

How would I prevent a joker from showing up in shop? (card packs and such as well, like legendaries)

upbeat bronze
red flower
umbral zodiac
#

as in replace quantumparticle_descs with other?

red flower
#

i think it's because descriptions get parsed beforehand

umbral zodiac
#

still blank (i just renamed the section to other & changed it in the voucher loc txt)

hollow snow
#

i forgot to ask again what is the structure of a info_queue

normal crest
#

info_queue is a list of tables

#

you can append a center or a table specifying a localization set and key

red flower
umbral zodiac
#

oops nvm im stupid i cpitalized it wrong in the loc txt

umbral zodiac
#

it works when under Other

#

ty

hybrid shadow
#

well the sticker works now

#

feels a bit weird but ill have to deal with it

normal crest
#

adding repetitions would make it look good but also be way more complicated to do

hybrid shadow
#

im gonna stress test this thing rq because i know someone's gonna end up doing what im about to do and i wanna make sure it doesnt break shit

serene granite
#

is there a simple way to change how many joker slots a custom joker takes up? like without negative

hybrid shadow
serene granite
#

or how can i make it so it naturally adds a joker slot i guess

sonic cedar
hybrid shadow
#

oh boy its time to do the most weird thing of this whole ordeal (i finally get to use the sticker randomization for my tarot card)

hybrid shadow
#

i imagine i randomize outside the for loop

hollow snow
hybrid shadow
#

how to fix (tells me aspect_st is nil)

hollow snow
#

i just want to make a simple info_queue for my joker, it's kinda hard the wiki lowk doesn't explain very well

serene granite
frigid cargo
#
    config = { extra = {mult = 12}},

    loc_vars = function(self, info_queue, center)
        return { vars = {center.ability.extra.xmult}}
    end,

    calculate = function(self, card, context)
        if context.other_card then
            if card.edition.key and card.edition.key == "e_foil" then
                return {
                    play_sound = ("batrocities_MichaelKaboom"),
                    G.E_MANAGER:add_event(Event({
                            trigger = 'after',
                            delay = 0.3,
                            blockable = false,
                            func = function()
                                card:remove()
                                return true
                            end
                }))
                }
            end
        elseif context.joker_main then
            mult = card.ability.extra.mult
        end
    end,
}

i dont think i did my code right, i wanted to check if card is foiled but it just crashes and tells me smth about edition

hollow snow
hollow snow
serene granite
#

oo ok, and i put it in the function(self) portion?

hollow snow
serene granite
#

oo ok thanks for the advice !

frigid cargo
hollow snow
frigid cargo
#

ok thanks

urban wasp
#

could anybody help with whatever the freak this is

sonic cedar
urban wasp
wild escarp
#

How would I check whether or not all played cards are scored?

hybrid shadow
# urban wasp

it looks like your info queue is missing variables

urban wasp
#

this is seemingly what the mentioned guy wanted me to do

#

i'm js confused, is all

hollow snow
urban wasp
#

no?

#
...
...config = { extra = { retrigger_chance = 4, retriggers = 24 } } }
...
hollow snow
#

like you do config = {extra = {retrigger_blahblahblah}} but

#

then on loc_Vars

#

lenient_bignum(self.config.retrigger_chance)

hybrid shadow
#

like its just empty rn

unborn bay
#

i mean that would still return a table as a bignum is a table

hollow snow
#

like self.config.retrigger_chance aint it, its self.config.extra.retrigger_chance

unborn bay
#

return it wrapped under number_format

urban wasp
urban wasp
#

there's like 3 people trying to give me different advice rn

hollow snow
#

lowk i think im sleepy dont hear me out

unborn bay
#

if you wanna set info queue vars you have to specify specific_vars iirc

urban wasp
#

nr sure on what to do

unborn bay
#

but hm

#

this isn't related to info queue anyways

hybrid shadow
urban wasp
unborn bay
#

does it display fine in the edition collection itself

urban wasp
#

i don't really know how this works

urban wasp
unborn bay
#

Collection -> Editions

#

lmao

#

o

urban wasp
#

right

#

i know this crash

hybrid shadow
#

welp

urban wasp
#

???

SMODS.Edition {
    disable_base_shader = true,
    disable_shadow = true,
    key = "four-dimensional",
    weight = 0.2,
    shader = "fourdimensional",
    in_shop = true,
    extra_cost = 5,
    sound = {
        sound = "crp_e_fourdimensional",
        per = 1,
        vol = 0.5,
    },
    get_weight = function(self)
        return G.GAME.edition_rate * self.weight
    end,
    config = { extra = { retrigger_chance = 4, retriggers = 24 } },
    loc_vars = function(self, info_queue, center)
        local chance = center and center.edition and center.edition.retrigger_chance or lenient_bignum(self.config.extra.retrigger_chance)
        local retriggers = center and center.edition and center.edition.retriggers or lenient_bignum(self.config.extra.retriggers)
        return { vars = { card.extra.ability.extra.retrigger_chance, card.extra.ability.extra.retriggers } }
    end,
    calculate = function(self, card, context)
        if
            context.other_card == card
            and (
                (context.repetition and context.cardarea == G.play)
                or (context.retrigger_joker_check and not context.retrigger_joker)
            )
        then
            local should_retrigger = pseudorandom("crp_fourdimensional") <= G.GAME.probabilities.normal / lenient_bignum(self.config.extra.retrigger_chance)
            return {
                message = localize("k_again_ex"),
                repetitions = should_retrigger and lenient_bignum(self.extra.config.retriggers) or 0,
                card = card,
            }
        end
    end,
    crp_credits = {
        idea = { "Glitchkat10" },
        art = { "Glitchkat10" },
        code = { "Glitchkat10" },
    },
}
#

line 530 is

#
return { vars = { card.extra.ability.extra.retrigger_chance, card.extra.ability.extra.retriggers } }
#

is that not right

#

oh wait

#

yeah one sec

unborn bay
#

why is it named center 😭

#

y'all need to stop with bad coding practices

urban wasp
#

i just copied from blurred (cryptid) for the most part

hybrid shadow
sonic cedar
urban wasp
hybrid shadow
#

k

urban wasp
#

well that's weird

#

the description, not the shader lol

vale glen
#

That shader looks cool

urban wasp
#

it was literally an accident

vale glen
#

Reminds Axy of that one meme involving a falling waffle

subtle merlin
urban wasp
urban wasp
unborn bay
#

vertex distortion shaders ,,,,,,

#

mmmm

urban wasp
#

kept it for the funnyt

#

okay um

#

so what do i do here? description seems to have gotten fucked

#

(supposed to be 1 in 4 chance for 24 retriggers, not 4 in 24 chance for nil retriggers)

sonic cedar
hollow snow
urban wasp
#

yeah

unborn bay
#

yeah order issue

urban wasp
#

but idk why

unborn bay
#

stick in a (G.GAME.probabilities.normal or 1)

#

at the first one

#

assuming the format goes #1# in #2# does #3#

hollow snow
#

yeah you should be using 3 variables but you got two that seems to be the issue

urban wasp
#

okay

#

i think it works now

hollow snow
#

you use retriggers and retriggers_chance

sonic cedar
# sonic cedar h

can anyone tell me what's wrong here?
(supposed to trigger that function when there's a joker to the right of it)

urban wasp
#

okay uhh hovering over a four-dimensional joker does this?

SMODS.Edition {
    disable_base_shader = true,
    disable_shadow = true,
    key = "four-dimensional",
    weight = 0.2,
    shader = "fourdimensional",
    in_shop = true,
    extra_cost = 5,
    sound = {
        sound = "crp_e_fourdimensional",
        per = 1,
        vol = 0.5,
    },
    get_weight = function(self)
        return G.GAME.edition_rate * self.weight
    end,
    config = { extra = { retrigger_chance = 4, retriggers = 24 } },
    loc_vars = function(self, info_queue, center)
        local chance = center and center.edition and center.edition.retrigger_chance or lenient_bignum(self.config.extra.retrigger_chance)
        local retriggers = center and center.edition and center.edition.retriggers or lenient_bignum(self.config.extra.retriggers)
        return { vars = { G.GAME.probabilities.normal or 1, center.ability.extra.retrigger_chance, center.ability.extra.retriggers } }
    end,
    calculate = function(self, card, context)
        if
            context.other_card == card
            and (
                (context.repetition and context.cardarea == G.play)
                or (context.retrigger_joker_check and not context.retrigger_joker)
            )
        then
            local should_retrigger = pseudorandom("crp_fourdimensional") <= G.GAME.probabilities.normal / lenient_bignum(self.config.extra.retrigger_chance)
            return {
                message = localize("k_again_ex"),
                repetitions = should_retrigger and lenient_bignum(self.extra.config.retriggers) or 0,
                card = card,
            }
        end
    end,
    crp_credits = {
        idea = { "Glitchkat10" },
        art = { "Glitchkat10" },
        code = { "Glitchkat10" },
    },
}
#

530 is the loc_vars return

serene granite
#

ok i have another question, is there a way to make a joker count for 0 joker slots ?

urban wasp
serene granite
#

if not then its ok, but i kind of want to make some jokers that dont change the slots being taken up at all

hollow snow
#

yeah if i remember correctly ability is for jokers

#

so that should be it

unborn bay
#

ok since this is an edition i believe those don't take from card.ability

#

yeah what [desert plant] said

urban wasp
#

oh wait what

#

ohh right it's like self

unborn bay
#

self refers to the center definition here

#

so you'd reference self.config.extra

#

though card.edition also works i think

#

though its still best to fallback to self.config

hollow snow
#

it is easier to read to just use config

hybrid shadow
#

fun fact stickers have a similar issue where you need to use self.config since stickers in base game for the most part work without variables needing to be set

urban wasp
#

okay i got four-dimensional to work correctly again

SMODS.Edition {
    disable_base_shader = true,
    disable_shadow = true,
    key = "four-dimensional",
    weight = 0.2,
    shader = "fourdimensional",
    in_shop = true,
    extra_cost = 5,
    sound = {
        sound = "crp_e_fourdimensional",
        per = 1,
        vol = 0.5,
    },
    get_weight = function(self)
        return G.GAME.edition_rate * self.weight
    end,
    config = { extra = { retrigger_chance = 4, retriggers = 24 } },
    loc_vars = function(self, info_queue, center)
        local chance = center and center.edition and center.edition.retrigger_chance or lenient_bignum(self.config.extra.retrigger_chance)
        local retriggers = center and center.edition and center.edition.retriggers or lenient_bignum(self.config.extra.retriggers)
        return { vars = { G.GAME.probabilities.normal or 1, chance, retriggers } }
    end,
    calculate = function(self, card, context)
        if
            context.other_card == card
            and (
                (context.repetition and context.cardarea == G.play)
                or (context.retrigger_joker_check and not context.retrigger_joker)
            )
        then
            local should_retrigger = pseudorandom("crp_fourdimensional") <= G.GAME.probabilities.normal / lenient_bignum(self.config.extra.retrigger_chance)
            return {
                message = localize("k_again_ex"),
                repetitions = should_retrigger and lenient_bignum(self.config.extra.retriggers) or 0,
                card = card,
            }
        end
    end,
    crp_credits = {
        idea = { "Glitchkat10" },
        art = { "Glitchkat10" },
        code = { "Glitchkat10" },
    },
}
#

still this though

#
loc_vars = function(self, info_queue)
    info_queue[#info_queue + 1] = { key = "e_crp_four-dimensional", set = "Edition", config = { extra = { retrigger_chance = 4, retriggers = 24 } } }
    return { vars = {  } }
end,
#

umm what do i change

unborn bay
#

im pretty sure you specify specific_vars here

#

then the stuff in order

hollow snow
#

if it displayed something earlier you were probably on the right path

#

you will need the variables inside the edition anyway

unborn bay
#

actually aren't editions centers too

hollow snow
#

i've got no idea

unborn bay
#

whats stopping you from just using G.P_CENTERS.e_whatever

urban wasp
#

which messes it up, and i want it to stay as that exact key

hollow snow
#

what

unborn bay
#

G.P_CENTERS["shit-with-dashes"] works fine too, no?

urban wasp
#

hold on

unborn bay
#

well that won't make sense if it don't

urban wasp
#

i'll try it again

hollow snow
#

ok gn people

#

hope you can fix that

urban wasp
#

alr gn

unborn bay
#

You cannot sleep now, monsters are nearby

urban wasp
#

well i have no more issues

#

thanks chat

chrome widget
#

I love modding

sonic cedar
chrome widget
#

(genuine crash log btw. It failed to write anything else)

sonic cedar
#

????

#

did you ask nicely

hybrid shadow
modern kindle
wooden nexus
#

Question: I changed the version to 1.A, and it's saying 1.A.0 is not a version later than 1.0. How does that work?

#

A > 0 in ascii text though

sonic cedar
#

have you tried

#

not using A

subtle merlin
#

I love thinking im done working on a joker then testing it with literally any other joker and realizing there's massive issues!!!!

wooden nexus
hybrid shadow
wooden nexus
#

Because the mod is literally called 1.A.0c

#

It changes the GAME version too because y'know... split update style mod

#

That's the issue

#

I don't wanna get rid of the custom version

sonic cedar
#

you lost me

wooden nexus
#

Okay

#

You know how one of the dependencies is Balatro's Game Version

#

I changed the game version

sonic cedar
#

uh huh

wooden nexus
#

How do I fix without getting rid of my version and without forcing them to make new version for compatibility?

hallow forge
#

no

wooden nexus
#

yes

hallow forge
#

that's probably the answer

#

it's probably no

wooden nexus
#

So they just gotta cope then?

sonic cedar
#

seems like

wooden nexus
#

RIP

hybrid shadow
#

i love stickers

wooden nexus
#

I'm still more confused why it's saying 1.A < 1.0 though. that's the weird part of it

#

I checked Hex, Unicode, Ascii, A should be larger than 0

sonic cedar
#

numbers before letters probably

hallow forge
#

if we assume A = 0-1, then use subsitution 1.0-1 < 1.0

frigid cargo
#
    config = { extra = {mult = 12}},

    loc_vars = function(self, info_queue, center)
        return { vars = {center.ability.extra.xmult}}
    end,

    calculate = function(self, card, context)
        if context.other_joker then
            if context.other_card.edition and context.other_card.edition.type == 'e_foil' then
                return {
                    mult = card.ability.extra.mult,
                    play_sound = ("batrocities_MichaelKaboom"),
                    G.E_MANAGER:add_event(Event({
                            trigger = 'after',
                            delay = 0.3,
                            blockable = false,
                            func = function()
                                card:remove()
                                return true
                            end
                }))
                }
            end
        elseif context.joker_main then
            return {
                mult = card.ability.extra.mult
            }
        end
    end,
}

i was wondering if i did the sound code right, the code also doesnt trigger if another card is foiled?

wooden nexus
#

All fixed

#

No joke, myself and Aikoyori found the same solution:

Instead of changing the version itself, find where the UI loads the text and load in the custom version that way

tall wharf
#

😭

wooden nexus
#

you realy like that emote

tall wharf
#

it's my most used emoji

wooden nexus
#

poor placement discord

vale glen
#

A story of six emotes

#

Person crying, is set on fire and dies, the skull learns it's trans and does a big think, then uses heart emotes

#

After many trials and tribulations, becomes an imp

worthy stirrup
#

I wanna hear my story :3

vale glen
#

Uhmmmmm

#

A star becomes a meteor, a cat reads about it on the internet and gives it a like, someone is crying because the meteor is falling on them. Various other reactions on the thread reporting the meteor, and then some nerd comes in and verifies that this is indeed a meteor

#

Also the poster gets a verified checkmark but it's pink

wooden nexus
worthy stirrup
#

I wasn’t expecting the second row to be part of it, but thanks

wooden nexus
#

My favorite balatro version

vale glen
hybrid shadow
hybrid shadow
vale glen
#

Didn't wanna figure out the rest of the emotes, so handwaved them :p

hybrid shadow
vale glen
#

Haven't played it

hybrid shadow
#

do it

vale glen
#

So many games to playyy

hybrid shadow
#

god ive still gotta finish taking ownership of like half the tarot cards

modern kindle
#

why you taking them all

#

bit greedy..

hybrid shadow
#

its so tedious to do all this

#

but it must be done

chrome widget
#

Unrelated, my frequently used

hybrid shadow
chrome widget
#

Should be fine

#

Consumeables are still given the ability table version of the config values, most of the vanilla ones just primarily use the ability.consumeable reference to the center

hybrid shadow
chrome widget
#

No clue

upbeat bronze
#

i wonder why the horse

hybrid shadow
#

i think the fandoms im in are quite obvious

hard flume
#

I'm trying to decide something. Would yall be willing to help?

chrome widget
#

Funny how I never ended up in the Homestuck/Undertale fandom train. I feel like both of them would probably be up my alley but guess the 2010s just had me elsewhere

#

Ironically the most I know about both of them is various Tumblr mutuals of mine anxiously awaiting both fandoms to spew out tgirls

hard flume
#

Should genders (or no gender if they're agender) be applied to all playing cards automatically? Or should only certain playing cards be gendered?

chrome widget
#

I feel like I need more context

modern kindle
#

dont worry about some of them

chrome widget
#

Shout-out to bowling emoji. I'm going bowling tomorrow morning

hard flume
# chrome widget I feel like I need more context

Ah! So I'm adding Genders into Balatro, which are a new modifier for playing cards. By themselves, they do nothing. But there's Jokers, Consumables, and other mechanics that do stuff with genders

modern kindle
chrome widget
modern kindle
#

automatically probably just means auto applied to deck at start of run id assume

hard flume
modern kindle
# chrome widget You tell me

thats my bestie baddie epic gamer kino gamer making strides nobody ever seen before historically since the game of bowling released in pre alpha

chrome widget
#

I guess it'd make sense for cards to be gendered just by default rather than it being selectively applied

hard flume
#

I wasn't sure, but that's what I was thinking yeah. Just wanted a second opinion

chrome widget
modern kindle
#

i bet i could lose to u in bowling

chrome widget
#

You probably could yea

modern kindle
#

but id absolutely sweep you in laser tag

hard flume
#

After I get genders working, I'm gonna try and get Pikmin working once more

modern kindle
#

i have pikmin 1

#

but not any others =[

hard flume
#

I just needed a break from making my Balatro Mod because of Pikmin. They were so hard to get the storage feature working on playing cards

#

But I'm gonna be more reasonable working on them this time

chrome widget
#

I'm up to some more weird shader bullshit because of weird pixel transformations that have to do with the dissolve mask

modern kindle
#

oh god i just remembered i now have to start dealing with shaders

#

dear lord above save me

#

i have to make at minimum one for an edition, and probably more once im comfy

hard flume
#

Oh yeah. I actually enjoy coding. I forgot about that.

chrome widget
#

I actually recently enjoy coding which is nice because my other two hobbies make me want to stab myself to even think about rn

modern kindle
#

come collect games with me winter

#

thats a fun time

chrome widget
#

Drawing sucks, writing sucks. I guess programming's all I've got for now

#

I guess I should specify "productive" hobbies

modern kindle
#

every hobby is productive because it produces enjoyment to your life

chrome widget
#

My other hobbies are slow and uneventful but that's just the breaks when you're living with clinical depression

#

Can't do much aside from managing it or replacing my whole brain

modern kindle
#

i feel that

#

i got that anxiety and ptsd too bundled

#

we make do with what we got

#

i believe in you

hard flume
#

What's the play area global for decks btw? I forget

#

Is it just. G.deck?

daring fern
modern kindle
#

hi something

daring fern
#

Is it possible to discount rerolls, like clearance sale but for rerolls?

hard flume
#

How would I get a sticker to apply to every playing card? I tried looking around and I didn't see anything

hard flume
#

Mainly, I'm stuck with getting it to apply to deck at the start of the run. I can get it to apply to every booster card, at least

daring fern
hard flume
#

I tried putting it in a game_start_run_ref style hook, and it just crashes

daring fern
hard flume
#

Ah! I want it to happen in ALL decks

#

I want all playing cards to have gender

maiden phoenix
#

Hook it in the Back:apply then maybe