#💻・modding-dev

1 messages · Page 611 of 1

daring fern
#

if self.ability.set == 'Booster'

next timber
#

is there like, an alternative to context.before or something else i can do to make it consider retriggers? i have a seal that gives other played cards +10 chips and the effect feels like retriggers should affect it, but because its done in context.before so that the cards scored before it still get the boost in time, it only ever triggers once

wintry solar
#

you'd have to rewrite how calculation is handled in that stage

next timber
#

no way to get how many retriggers the card is going to recieve?

#

darn

vale grove
slim ferry
#

not really

#

i guess you could check if string.find(self.config.center.key:lower(), "mega") since usually people put mega in the keys of mega packs

#

which should work most of the time

vale grove
#

nah its not a huge deal

#

i was thinking maybe mega's get reduced by 2

#

but 1 is already pretty powerful in itself

#

completely different question how do you generate a random tag?

#

ive been looking at things like diet cola but they use

add_tag(Tag('tag_key'))
slim ferry
#

alternatively you can use get_next_tag_key("seed") i think

daring heron
#

so i have the code for the plant, but how would i make it disable 2s, 3s, 4s and 5s instead of face cards?

vale grove
daring heron
#

SMODS.Blind {
key = "plant",
dollars = 5,
mult = 2,
debuff = { is_face = true },
pos = { x = 0, y = 19 },
boss = { min = 4 },
boss_colour = HEX("709284")
}
well this is the plant's code in vremade

slim ferry
daring heron
#

wouldnt this work?

SMODS.Blind {
key = "birch",
dollars = 5,
mult = 2,
debuff = { value = '2', value = '3', value = '4', value = '5' },
pos = { x = 0, y = 30 },
boss = { min = 1 },
boss_colour = HEX("a84024")
}

slim ferry
#

no

#

because duplicate table entries

daring heron
#

ah i see

slim ferry
#

the next one just overrides the previous each time

#

also holy shit the plant if it was evil

daring heron
#

the plant is already evil

#

wait so how do i debuff ranks 2 to 5

slim ferry
#

just copy hack for the rank check

daring heron
#

oh lol

#

also whats the vscode lua extension called again

#

is it just the first one when you search up lua?

#

would this work?

    key = "birch",
    atlas = 'blind_chips',
    pos = { x = 0, y = 30 },
    boss_colour = HEX("56789A"),
    discovered = false,
    dollars = 5,
    mult = 2,
    debuff = { value = '2', value = '3', value = '4', value = '5' },
    boss = { min = 1 },
    calculate = function(self, blind, context)
        if not blind.disabled then
            if context.other_card:get_id() == 2 or
                context.other_card:get_id() == 3 or
                context.other_card:get_id() == 4 or
                context.other_card:get_id() == 5 then
                return {
                    debuff = true
                }
            end
        end
    end
}
daring fern
daring heron
#

still doesnt work

slim ferry
#

should be near the top

daring heron
#

also for some reason my balatro is just not saving at all

slim ferry
#

wdym

daring heron
#

idk every time i start up balatro it gives me the tutorial again and my settings are reset

slim ferry
#

wtf

daring heron
#

but yeah it still doesnt work

#
SMODS.Blind {
    key = "birch",
    atlas = 'blind_chips',
    pos = { x = 0, y = 30 },
    boss_colour = HEX("56789A"),
    discovered = false,
    dollars = 5,
    mult = 2,
    boss = { min = 1 },
    calculate = function(self, blind, context)
        if not blind.disabled then
            if context.debuff_card:get_id() == 2 or
                context.debuff_card:get_id() == 3 or
                context.debuff_card:get_id() == 4 or
                context.debuff_card:get_id() == 5 then
                return {
                    debuff = true
                }
            end
        end
    end
}
red flower
#

if context.debuff_card and (context.debuff_card:get_id() == 2 or ...)

umbral spire
#

when using SMODS.create_card()

is the 'area' arg required? or will it default to something based on 'set'?

wind steppe
#

create_card doesn't emplace by default

umbral spire
#

?

wind steppe
#

if youre looking for automatic emplace try SMODS.add_card

#

all the same parameters are taken

umbral spire
daring heron
#

well uh

#

SMODS.Blind {
key = "birch",
atlas = 'blind_chips',
pos = { x = 0, y = 30 },
boss_colour = HEX("56789A"),
discovered = false,
dollars = 5,
mult = 2,
boss = { min = 1 },
calculate = function(self, blind, context)
if not blind.disabled then
if context.debuff_card and (context.debuff_card:get_id() == 2 or 3 or 4 or 5 ) then
return {
debuff = true
}
end
end
end
}

slim ferry
#

context.debuff_card:get_id() == 2 or context.debuff_card:get_id() == 3 ...

daring heron
#

oh i see

slim ferry
#

or just context.debuff_card:get_id() => 2 and context.debuff_card:get_id =< 5

#

which should work too i think

#

well it would include ids between 2 and 5 from modded ranks potentially

wild berry
#

how can i clone a card

wind steppe
#

takes the card you want to copy

#

returns the copy of the card

umbral spire
#

does ease_hands_played change the current hands? like the number near your discards?

slim ferry
#

yeah

daring fern
slim ferry
#

just current

umbral spire
#

how do you change hand size?

slim ferry
#

G.hand:change_size(amount)

#

to make it temporary you have to additionally increment G.GAME.round_resets.temp_handsize by the same amount

wind steppe
#

why is there a function for that as opposed to all other cardareas where you set the config directly

slim ferry
#

wdym

#

CardArea.change_size is a method of the CardArea gameobject

#

you can use it on any card area

wind steppe
#

oh

umbral spire
wind steppe
#

im suing vanillaremade

slim ferry
#

but other than that yes

loud summit
#

is it possible to change how many picks you get from a pack mid pack

willow scroll
#

bump

#

i still dont know 😭

clever wasp
#

does someone understand this?

wintry solar
wind steppe
#

im suing everyone

red flower
#

i should change all of them to change_size that's true

wintry solar
#

It doesn’t matter which you use though

#

They both do the same thing

willow scroll
#

how can i make a lovely patch not end with a newline

#

i want to turn an if into an elseif by prepending some stuff

wintry solar
#

use a regex patch

willow scroll
#

uh oh im not smart enough for regex patches apparently

#

10 trillion trial and errors go

final jewel
#

how do I make a global for this and a config thing so it easy to add some

viscid talon
#

ok so, complete coding noob here

#

how do i make a consumable that like

#

when triggered ten times, allows a specific consumable to show up in a store

#

sorta like antimatter

daring fern
viscid talon
#

hmmm, so id make a flag?

daring fern
viscid talon
#

o

#

hmmmm

slim ferry
#

look at how ectoplasm does it in vanillaremade

#

it uses a global to check how much hand size to take away

viscid talon
#

ooooh okay

#

ill check that out

viscid talon
#

looking for ectoplasm,,,

#

on the wiki

#

cannot find

slim ferry
#

not wiki

#

the files

viscid talon
#

o

#

hmm

slim ferry
#

src/spectrals.lua

viscid talon
#

oke i found it

solemn shuttle
#

is there a way to have tags add a specific voucher to the shop as opposed to just One in general

viscid talon
#

just took a look at the code

solemn shuttle
#

-# for reference im making a tag that works like the voucher tag but automatically gives you an upgraded version of one of your already redeemed vouchers [and blank if you have none]

viscid talon
#

im guessing G.GAME.ecto_minus is their variable

slim ferry
#

G.GAME.ecto_minus yeah

viscid talon
#

okok

slim ferry
#

inside of G.GAME because that gets saved with the run

#

and the G.GAME.ecto_minus = G.GAME.ecto_minus or 1 is to set it to 1 if the value doesnt exist yet

viscid talon
#

so would something like this work then?

slim ferry
#

yeah

#

also i assume youre trying to do like G.P_CENTERS something for the info queue

viscid talon
#

P_centers?

slim ferry
#

thats like

#

all the cards

viscid talon
#

oo i c 🤔

slim ferry
#

so G.P_CENTERS.modprefix_key for the info queue

viscid talon
#
        info_queue[#info_queue + 1] = G.P_CENTERS.hatchet_key
        return {vars = {G.GAME.daat_summon or 1} }```
#

oh vscode doesnt like that

#

the little lightbulb just showed up

slim ferry
#

lightbulb doesnt necessarily mean something

viscid talon
#

o oke

slim ferry
#

but also what type of object is it

red flower
slim ferry
#

since class prefix

#

for the tooltip[

viscid talon
#

so now it has an internal variable then? that keeps track of the kether uses?

solemn shuttle
#

ty lol

slim ferry
#

should be

#

c_hatchet_kether then

viscid talon
#

yeah it is

slim ferry
#

for tooltip

#

but yeah it should have that

viscid talon
#

info_queue[#info_queue + 1] = c.hatchet.kether

slim ferry
#

G.P_CENTERS.c_hatchet_kether

viscid talon
#

oh oke

slim ferry
#

and then the variable should work as long as you actually increment it in the use function for kether

viscid talon
#

ok so thats been done, rn i need to make it so that the function returns with +1 to daat.summon

#

yesyes

#

im currently reviewing the code for Blank rn

#

since Kether is meant to function similarly to Blank#

slim ferry
#

i mean blank works differently since that uses lifetime uses

#

instead of per run

viscid talon
#

yeah true true

slim ferry
#

and total uses per card are stored by default

#

for the profile stats page

viscid talon
#

hmmm, okay now im confused

#

im unsure how to code the incremental joker thing

#

i tried checking ectoplasm's code and it doesnt feel right

slim ferry
#

how so

viscid talon
#

would it be something like
G.GAME.daat_summon = G.P_CENTERS.c_hatchet_kether + 1
or

#

idk what im doing 😭 😭

#

my code rn

#

hold on wheres the fcucking key

#

here we go

slim ferry
stoic void
#

my edition isnt working, i know there isnt a shader im talking about the effect

frosty rampart
#

i don't think editions auto-calculate from config values, you still need a calculate function

slim ferry
#

they do for some

frosty rampart
#

oh hm

slim ferry
#

also use card.edition.chips and card.edition.x_chips

#

for loc_vars

#

also G.GAME.edition_rate is meant specifically for foil/holo/poly for hone and glow up to change their rates fyi

stoic void
#

that crashed

slim ferry
#

what crashed

slim ferry
#

yeah because

#

your loc_vars

stoic void
slim ferry
#

doesnt have that argument

#

self, info_queue, card

stoic void
#

ah ok

viscid talon
stoic void
#

its doing nothing

frosty rampart
#

not even the -chips?

viscid talon
#

is that all id need to do then

slim ferry
#

yeah

stoic void
slim ferry
#

for incrementing the value thatll work

slim ferry
#

i forget

stoic void
#

neither of them do anything tho

frosty rampart
slim ferry
#

i know xchips and xmult effects that are <= 0 get ignored

#

so like

#

idk

#

but anyway you can just make a calculate

stoic void
#

yeah i could

faint yacht
#

x_chips is not procced automatically, it seems.

slim ferry
civic solstice
#

okay its back to hell LOL

#

since last night i coded these things i understood from the vrm castle script

frosty rampart
#

you took the wrong lesson from castle lol
you don't need any of the current_round stuff because you're always hardcoding it to 8 of hearts

civic solstice
#

oh

#

LOL

frosty rampart
#

you did also take the right lesson from castle though, in that you added a separate mult variable to your config table

stoic void
#

Ive done something wrong

slim ferry
#

yeah

daring fern
slim ferry
#

the context in the corner of the room

stoic void
#

yeah, but is there one for both cards and jokers?

civic solstice
stoic void
civic solstice
stoic void
#

yeah

red flower
stoic void
stoic void
#

thx

civic solstice
viscid talon
#

whats stack overflow

civic solstice
#

wait then it just does this

slim ferry
viscid talon
#

ruh roh

slim ferry
#

usually because of an infinite loop

frosty rampart
#

no ==

civic solstice
#

oh im blind

viscid talon
slim ferry
viscid talon
slim ferry
#

hmmm

#

oh

#

youre adding a tooltip for itself

stoic void
#

It works!

slim ferry
#

so it infinitely adds tooltips for itself

civic solstice
frosty rampart
stoic void
#

now i just need to make the shader

viscid talon
#

HUH

#

WHAT DO I DOOOOO

red flower
#

remove the info_queue line

slim ferry
#

why are you even adding a tooltip for the card itself

#

actually

viscid talon
#

tooltip,,,

#

whats a tooltip again

frosty rampart
#

the floating box that appears next to some joker descriptions that includes the description of another object

#

e.g. Stone Joker would have a tooltip with Stone Card's description

slim ferry
#

which is what info_queue does

viscid talon
#

oh right that

#

ohhh

#

i only added that bc ectoplasm's code had that

#

ok, got rid of the info queue part

frosty rampart
#

ectoplasm has it for the Negative edition's description

viscid talon
#

new error babeyyyyyy

#

so it looks like daat_summon is valueless by default

#

but not as like, 0

#

so id have to define it as zero first

#

and then do arithmetic?

frosty rampart
#

yea you need to initialize G.GAME.daat_summon in a hook to init_game_object

slim ferry
#

i mean you could also just

red flower
#

you can just do G.GAME.daat_summon = (G.GAME.daat_summon or 0) + 1

slim ferry
#

G.GAME.daat_summon = (G.GAME.daat_summon or 0) + 1

frosty rampart
#

true lol

slim ferry
#

yeah

viscid talon
#

ok lemme try that

#

ok, that seems to work

#

now to give daat unique spawn conditions

civic solstice
#

okay so would this be right for checking if a card is 8 of hearts

red flower
#

"8" instead of Eight

viscid talon
#

im checking the soul code rn

civic solstice
red flower
#

but it's usually better to use context.other_card:get_id() == 8

civic solstice
#

so this

umbral spire
#

Can you make a custom sticker in JF? (jokerforge)

slim ferry
#

no

frosty rampart
# civic solstice so this

sure yea
although you can simplify even further by just doing

if context.other_card:get_id() == 8 and context.other_card:is_suit("Hearts") then
  -- do the effect here
end
red flower
#

doesnt seem like it

slim ferry
#

theres a lot you cant do yet

umbral spire
slim ferry
#

awesome

clear ocean
#

gonna try out malverk texting packing and not sure why it is crashing

winter flower
#

-# we don't really care that much

umbral spire
lucid owl
frosty rampart
clear ocean
#

ohh

zealous glen
umbral spire
umbral spire
#

im working on it

clear ocean
#

it worked

frosty rampart
# civic solstice

getting there
but now you don't need to set a variable at all, you can just do the effect you want directly inside that if statement
in this case, it's scaling the card, right? so increment card.ability.extra.mult by card.ability.extra.MultAdd and return a message, all inside the if statement

civic solstice
frosty rampart
#

yes, a lot of that is wrong anyway

civic solstice
#

alright

viscid talon
#

i just made this for the booster pack

#
        local _card
        if G.GAME.daat_summon > 10 then
            _card = {
                set = 'daat',
                area = G.pack.cards,
                skip_materialize = true,
                soulable = true,
                key_append = "hatchet_sephirot_pack2"
            }
        else
        _card = {
            set = "sephirot",
            area = G.pack_cards,
            skip_materialize = true,
            soulable = true,
            key_append = "hatchet_sephirot_pack2"
        }
    end
    return _card
end,
}```
#

would this work

slim ferry
#

i assume you want to be using key for spawning a specific card?

#

also needs class and mod prefix

viscid talon
#

o how do i do that

slim ferry
#

replace set with key

#

and then

#

class prefix depends on what type of object it is

viscid talon
#

hmmm

#

the other booster is virtually the same code wise, it just has a different key

#

i can do that part myself

slim ferry
#

okay

#

but what is the issue

viscid talon
#

thats not good

#

idk, i havent tested it yet

slim ferry
#

im pretty sure there is an extra closing bracket that shouldnt be there

#

right at the top of the screenshot

civic solstice
frosty rampart
#

not quite

#

first, get rid of is_8_of_hearts entirely. you don't need it at all.

#

inside the if statement with the get_id and is_suit checks, just have card.ability.extra.mult = card.ability.extra.mult + card.ability.extra.multAdd. don't return it, that's not how that works

civic solstice
#

so that

viscid talon
#

ruh roh

#

if G.GAME.daat_summon > 10 then

#

maybe something like if G.GAME.daat_summon > 10 or 0 then ???? idk

frosty rampart
# civic solstice so that

there we go
now, still inside that innermost if statement, add this:

return {
  message = localize("k_upgrade_ex"),
  colour = G.C.MULT
}

this will add a message when the joker upgrades

frosty rampart
viscid talon
#

new error

#

ok this one i have no idea how to fix

civic solstice
#

i see that theres this entire section in vrms thing but idk if thats necessary or not

frosty rampart
# civic solstice anything else

we're done with the first part, which is making it upgrade properly
the second part is actually returning the mult
after the second-to-last end, but before the last end, you'll need to add a context check for joker_main and return { mult = card.ability.extra.mult } inside it

frosty rampart
civic solstice
#

alr

viscid talon
#

🤔 what is index local center

clear ocean
#

got it set up but not sure why it looks like this

#

i have original_sheet on

viscid talon
civic solstice
frosty rampart
#

sending the code and error would be helpful

civic solstice
#

true enough

clear ocean
#

woops i forgot i had pixel smoothing on 😭

civic solstice
#

it says theres no ) even tho there is

frosty rampart
#

by a context check i mean

if context.joker_main then
  -- do something
end
civic solstice
#

ohh

#

that makes more sense lol

#

so like that

frosty rampart
#

yea looks good

civic solstice
#

alrighty

#

lemme test it out now

#

yippee

#

now i just needa make the thing that displays how much mult its currently at

#

shouldnt be that hard

viscid talon
#

woohoo

civic solstice
#

hopefully

slim ferry
#

at least

#

not a card with it

winter flower
viscid talon
#

what do i do

slim ferry
#

show the create_card code

viscid talon
#
        local _card
        if (G.GAME.daat_summon or 0) > 10 then
            _card = {
                key = 'daat',
                area = G.pack.cards,
                skip_materialize = true,
                soulable = true,
                key_append = "hatchet_sephirot_pack2"
            }
        else
            _card = {
                key = "sephirot",
                area = G.pack_cards,
                skip_materialize = true,
                soulable = true,
                key_append = "hatchet_sephirot_pack2"
        }
    end
    return _card
end,```
daring fern
civic solstice
#

how the FUCK do i concatenate this properly

daring fern
#

Also remove the {}

civic solstice
#

thanls

#

now it does this

slim ferry
#

card.ability.extra.currentMult

civic solstice
slim ferry
#

oh

#

yeah you

#

need loc_vars

#

to have the variables in your description

viscid talon
red flower
# civic solstice

i think most of these things you have been asking about are in the vanillaremade examples

slim ferry
viscid talon
#

okey

slim ferry
#

c_modprefix_daat

#

with modprefix being your mod prefix

civic solstice
#

i might have fucked smth up here but i tried

viscid talon
#

i get the same error

slim ferry
viscid talon
slim ferry
#

in the actual consumable

#

still

frosty rampart
slim ferry
winter flower
civic solstice
#

do i have to add all this in

winter flower
#

if you’re not using it no

viscid talon
slim ferry
#

it says all the return values are optional above

civic solstice
#

i added the vars = { thing i missed originally

frosty rampart
#

you're making a joker right?

slim ferry
#

this is the localization wiki page

frosty rampart
#

oh right

#

i can't read

slim ferry
#

🥀

slim ferry
#

when you dont have 10 uses of the one card

#

and without prefixes

#

since im assuming youre still just making random cards of the type there

viscid talon
#

yeah i am

#

vscode is fun

#

ok it loads now

slim ferry
#

awesome

viscid talon
#

new error

#

this occurs once daatsummon is over 10

#

line 99 is area = G.pack.cards

slim ferry
#

oh

#

you put G.pack.cards

#

instead of G.pack_cards

viscid talon
#

oh ok

#

we r back to this error

#

maybe key = 'c_hatchet_daat' should be set = 'daat' instead

slim ferry
#

no

#

because set is for a pool

viscid talon
#

oh, well i tried that and daat did show up, but with two jokers

#

yeah, daat is in its own separate set

slim ferry
#

and key is for a specific card

viscid talon
#

oh hm

civic solstice
#

you were working perfectly fine 20 minutes ago

slim ferry
#

so only the first card gets replaced

slim ferry
civic solstice
#

well yeah

slim ferry
#

well then

viscid talon
#

oh hmm

slim ferry
civic solstice
slim ferry
viscid talon
#

oke

#

random question, is lua case sensitive

#

wuh woh

#

my code is set = 'daat' and i == 1

wintry solar
#

Thats evaluating to a Boolean

#

Delete the and i bit

slim ferry
#

G.GAME.daat_summon > 10 and i == 1

#

in the if statement

civic solstice
#

idek what im doing bro im so fkin confused LOL

#

i just realized i put p_centers twice

#

look at me go

slim ferry
#

youre making a consumable definition with only a loc_vars

#

thats

#

what youre doing\

#

the loc_vars should just be in the object definition you already had

viscid talon
#

its okay pivit im new to this too

#

i am starting to learn how locvasrs and stuff work a bit more

#

ok this seems to work

slim ferry
#

epic

elder rune
#

ERROR 🗣️

viscid talon
#

theres only one issue, which i think i can fix

#

once daat is used, i want to set daat summon back to 0

#

i think i know how to do that, but ill need to test it out

#

also idk why it says error LMAO

civic solstice
#

okay question about vscode how to i toggle off the tab key navigation

viscid talon
#

i lowk fw it

civic solstice
#

nop

elder rune
viscid talon
#

in a sec, im currently trying to figure out how to reset daat summons

slim ferry
#

for packs

viscid talon
#

NEVERMIND LMAO

#

i did my best

#

guessing theres a stray } somewhere

slim ferry
#

G.GAME.daat_summon = 0 should probably go outside of the event

viscid talon
#

lets give that a try

#

wuh woh

slim ferry
#

uh

viscid talon
#

OHHH

#

G.GAME

slim ferry
#

show code

viscid talon
#

WAIT

slim ferry
#

because

viscid talon
#

lemme cook

elder rune
#

G.GAME just doesn't exist smh

slim ferry
#

that doesnt happen unless you add values in G.GAME during load

red flower
viscid talon
#

my fellow modding devs....

#

i have fixed an error without help for the FIRST TIME...

#

IM SO PROUD OF MYSELF

civic solstice
#

GG

viscid talon
#

(i did GAME instead of G.GAME)

#

now to fix some of the smaller issues

#

mainly with Chesed and such

civic solstice
#

i was able to code the display of my joker ingame without it crashing

viscid talon
#

first ill need to make backups of these preexisting luas

slim ferry
#

oh

civic solstice
#

it didnt do jack shit but the game launched and everything else worked

viscid talon
#

theres a few more errors ill need to fix,,,

civic solstice
#

ima cash out 🤑🤑🤑🤑🤑🤑🤑🤑🤑🤑🤑💸💸💸💸💸💸💸💸💸💸💸

viscid talon
#

first some testing

civic solstice
red flower
#

hard to know without seeing the previous line but it seems like it's using return as a variable

civic solstice
#

heres the full thing

red flower
#

yeah the comma in the previous line is wrong

but also that whole previous line is nonsense

#

delete that line

#

also you're still making an empty consumable

civic solstice
#

bro what is a consumable?!?!?!

#

i dont understand this shit at all 😭

red flower
#

something you consume

civic solstice
#

helpful

red flower
#

like a tarot or a planet

#

what are you trying to make

civic solstice
#

just the description thing that some jokers have that show you how much mult you have on the card as it scales

red flower
civic solstice
#

thats not my problem tho i cant get the center key to make the code work

#

whatever the fuck a center key is idk

red flower
#

what center key

#

your problem is that you dont know how a joker is structured as i see from your screenshot

#

my link shows you how to do it

civic solstice
red flower
#

yes because you're making a consumable without a key

#

you don't want to even make a consumable

civic solstice
#

I WAS LEAD TO THAT PAGE WHERE- sorry i need to calm down

#

im just aggravated asf rn

#

i was literally told earlier to go to a page thats supposed to fix my problem now it apparently isnt???

red flower
#

the page is an example on how to use loc_vars

#

you're supposed to already understand how to make an smods object

#

that's why I linked the example

civic solstice
red flower
#

yeah that's why vanillaremade exists, so you can see how jokers use loc_vars

civic solstice
#

okay so is this what i have to do

#

WHAT THE FUCK ARE YOU ON ABOUT???

red flower
#

you're still trying to make a consumable...

civic solstice
#

oh

#

nvm i see the issue

red flower
#

you're now trying to make a new joker

#

you want those things to be in the joker you were making

#

not calculate, i think you already have that

civic solstice
#

im going to lose it

#

its some kinda progress at least

#

its tryna call the smods.customjokers as a nil value when it shouldnt even be nil???

viscid talon
#

uh what the fuc

civic solstice
red flower
#

😭

#

sorry..

civic solstice
#

?

red flower
#

SMODS.CustomJokers doesn't make sense

civic solstice
#

wdym

viscid talon
#

its ok i fixed it

red flower
#

like, it doesn't make sense. it's not a thing

civic solstice
#

when i was typing it in it said it was a real thing

red flower
#

before this loc_vars stuff what did you have

civic solstice
#

just the configs

red flower
red flower
civic solstice
civic solstice
red flower
#

i dont remember rn sorry, im not on my pc

civic solstice
#

its alr

red flower
#

you want just the loc_vars

midnight trellis
#

hey bro

#

if I spawn a card with DebugPlus

#

does it get removed from the pool?

red flower
#

nope

midnight trellis
#

ty

civic solstice
#

AND WERE BACK TO WHERE WE FUCKING STARTED YAHOOOOOOOOOOOO 🎊🎊🎊🎊🎊🎊🎊🎊🎊🎊🎊🎊🎊🎊🎊🎊🎊🎊🎊🎊🎊🎊🎊🎊🎊🎊🎊🎊🎊🎊🎊🎊🎊🎊🎊🎊🎊🎊🎊🎉🎉🎉🎉🎉🎉🎉🎉🎉🎉🎉🎉🎉🎉🎉🎉🎉🎉🎉🎉🎉🎉🎉🎉🎉🎉🎉🎉🎉🎉🎉🎉🎉

#

i love coding

red flower
#

it seems like a problem later in the code

civic solstice
#

actually wait lemme try smth

#

nope nvm

#

i tried adding it to this thing

#

didnt fix it

red flower
#

can you post the whole file

#

honestly a couple of lines at a time is hard to parse

civic solstice
#

heres everything you havent seen

red flower
#

ok the crash says the problem is earlier than that

#

in line 18

civic solstice
#

this is line 18 but the problem is what i was crashing out coding for the past hour

red flower
#

ok, remove that and replace it for [3] = "currently #1#"

#

#1# points to the value in loc_vars

civic solstice
#

okay it didnt crash this time

#

lemme spawn in the joker rq

#

i mean

#

not quite

#

also in terms of text coloring does {C:mult} exist for that text style

red flower
#

ok that makes sense because you're not assigning anything to currentMult

civic solstice
#

that some other jokers have

civic solstice
red flower
civic solstice
#

alr

civic solstice
#

i tried turning the MultCurrentlyIs thing to a string instead of an integer

#

didnt work lol

red flower
#

just change that for 0

civic solstice
#

wdym

red flower
#

the values in config are the defaults

#

you don't want to use a variable, you want to set the default number usually

civic solstice
#

im sorry im dumb this is what it currently is what do i set it to instead

red flower
#

oh.. do you have two configs???

civic solstice
#

yeah

#

one for the incriment and one for the tracker

red flower
#

you can't have 2

civic solstice
#

thatd explain why

#

almost

#

actually ykw fuck it 1 sec

viscid talon
#

theres currently a weird bug going on with sulfur cards. for some reason, theyre disabled whenever i get into suit disabling blinds

slim ferry
#

what is their effect

civic solstice
#

LMFAOPOOOASOAOO

#

OOPSIES

chrome widget
#

Gonna see if I can come up with some easier credit/config automation via my API mod

#

doing credits and config are all kinda boring boilerplate so I'm sure other modders might appreciate tht

chrome widget
#

Basically, all of my mods use basically the exact same framework for config/credits, and the config elements are used to filter item loading automatically

#

I'm thinking I can have a basic framework for the UI for both that can be automatically filled in based on other supported elements in the API, I.E. I have a set thing to detect that items have an 'artist' and 'programmer' field on them

zealous glen
#

And so far I’ve seen people copy Cryptid and maybe now how Hotpot does credits

gusty compass
#

could anyone find the reason behind this error (i assume its because of my mod):

zealous glen
#

I have particular opinions about credits and my mod is mostly single-dev so my janky implementation does what I want

chrome widget
#

fair, but this will also be opt in

zealous glen
#

Which I think would be group projects

#

But then again those might want Credits with specific visuals you know

#

Although IIRC the mods you worked on had a very cool Credits collection menu

#

Which would be interesting to feature artists

zealous glen
chrome widget
zealous glen
#

I’m trying to remember what else people argued when I brought up this topic recently but I can’t think of an useful insight

chrome widget
#

Oh hi marisa!!

zealous glen
zealous glen
chrome widget
#

no

civic solstice
slim ferry
#

#1# in the variable

#

like N said before

#

and you dont need to concatenate

civic solstice
slim ferry
#

what

#

?

civic solstice
#

n said you cant have 2 things in config

slim ferry
#

you can

zealous glen
# chrome widget no

I’d say Cryptid and Hotpot, maybe Ortalab, are the big ones. Aikoyori’s is mostly single dev but has an awesome custom Credits page that wouldn’t work for other mods. Cosmos was developing a Credits system but I don’t think it was released, maybe ask @shell tangle or @cinder briar

There’s a few other big mods but I don’t remember how they do Credits or if it’s significant

I would maybe tell you how I do it for my own mod but I don’t know if it’s particularly useful

civic solstice
#

@red flower liar

slim ferry
#

you cant have 2 seperate configs

#

is what he said

civic solstice
#

oh

#

@red flower not liar

slim ferry
#

you can have 2 values in a single config

civic solstice
#

wait so how does that work

#

you can have multiple values but not multiple variables???

slim ferry
#

multiple variables

#

same thing

civic solstice
#

oh

zealous glen
#

Aikoyori’s

chrome widget
#

Oh that's cool

civic solstice
slim ferry
#

well

#

the config itself is marked yellow

zealous glen
#

Hotpot’s has something like this (this was a dev version of my credit ironically missing credit for this specific artwork)

slim ferry
#

so that means its a duplicate table entry

#

all the values should be in a single config

civic solstice
#

thatd make sense bc theres one down here

chrome widget
#

I do want to have hoverable things like this in the credits where possible, but that's a stretch goal for my current implementation

zealous glen
civic solstice
#

i thought that was vscode not recognizing it like it did with other stuff

#

oops

zealous glen
#

Ortalab has ugly tooltips

#

My personal mod has cool tooltips

chrome widget
#

I don't do badges, I use infoqueue tooltips

slim ferry
#

hold on

zealous glen
#

I don’t remember how Cryptid does it

zealous glen
slim ferry
#

this bit

#

has stuff about setting up the steamodded lsp

zealous glen
#

I like my tooltip style because it’s very visibly not a gameplay tooltip and looks like film credits

civic solstice
#

yeah i alr did that

chrome widget
#

Show me

slim ferry
#

i see

zealous glen
#

Here’s an example

slim ferry
chrome widget
#

Oooh yeh don't like that, takes up too much space on the screen imo

zealous glen
#

The text is written individually because it’s unique for each Joker

civic solstice
#

okay so this is what the config thing is now

zealous glen
civic solstice
chrome widget
#

I don't personally

#

Specificity can be saved for the main credits or not at all

slim ferry
civic solstice
#

and the current mult is the value i used to try and separate the uses from the increment display to the actual text

slim ferry
#

that seems not very useful

#

to have two of the same value

#

you dont need seperate values for loc_vars

frosty rampart
#

^^^

civic solstice
zealous glen
#

For example, Ouroboros here

civic solstice
#

i dont even use addmulttocard anyways

zealous glen
#

So I’d either show it during gameplay or not at all

#

I dislike a brief, incorrect attribution

chrome widget
#

personally idrc. If I don't personally think something should be credited to me I just don't credit it

#

Whoever is primary credit gets primary credit

zealous glen
#

As it is my personal project, I have to predict what issues external contributors might have

#

Typically when working in group projects, most people don’t seem to care

civic solstice
#

okay i got rid of the useless shit and any lines that pertained to them

zealous glen
#

So if I edited their artwork minorly and didn’t say anything I don’t think they would care

#

However, my system needs to be robust against every possible contributor

civic solstice
#

now how do i get this shit to work

zealous glen
#

Hence I need to foresee that someone could take issue and act accordingly

chrome widget
#

personally I mostly just would say that if contributors don't like the way I do things they just don't have to be part of the mod

zealous glen
#

In group projects normally every member gets a say

chrome widget
#

Although for that specific example I'd mostly just put myself as art supervisor in a separate credit

slim ferry
zealous glen
slim ferry
#

and then where you want the variables

civic solstice
slim ferry
#

#n# will be replaced by the nth value returned in loc_vars

zealous glen
#

If your experience is different it would seem to me as a bit exclusive among Balatro mods

#

But perhaps I’m making too anecdotal a statement

slim ferry
#

when displaying the description

zealous glen
#

I don’t know every group mod

cinder briar
#

I'm not super expert but for credits I think the one used for Hotpot was pretty good

chrome widget
#

I mean don't get me wrong, I'm doing a collaborative mod. But when I've done the largest majority of the work to actually push the mod to completion, wrangle artists, etc, I get largest say. If I didn't, I wouldn't work on it, and it wouldn't have access to my contributions

zealous glen
cinder briar
civic solstice
#

for fucks sake

cinder briar
#

Been a while since I paid much attention to Cosmos Pack 2™

zealous glen
slim ferry
#

on the joker

civic solstice
cinder briar
slim ferry
#

for the value

civic solstice
slim ferry
#

yeah

zealous glen
civic solstice
slim ferry
#

thats usually what n means for like stuff but i probably also shouldve been clearer about that

zealous glen
#

Maybe Ortalab was a bit similar but even then the main programmer was Eremel while the original creator was Shinku

civic solstice
#

it still says nil

#

it never ends

slim ferry
#

wh

#

it is #1# now right

civic solstice
#

yeah

zealous glen
#

Jest is based on Nevernamed’s fanart through one or two programmers who asked permission to turn them into functional Jokers

slim ferry
#

and loc_vars is in the right place?

civic solstice
#

it should be

zealous glen
#

There’s a few other artists with similar mods, although most are smaller

slim ferry
#

hmmm

zealous glen
#

Anyways sorry I got off-track

zealous glen
#

People aren’t asking me to participate and then trying to tell me what to do

zealous glen
red flower
#

i think people should do art for my mod

chrome widget
#

People did ask me to participate. If they didn't ask to be part of it, then I'd just make it without them

civic solstice
red flower
#

whats the issue

zealous glen
civic solstice
#

what the fuck am i doing wrong to make the message thingie keep saying (Currently +nil mult)

red flower
#

are you restarting a run before testing

civic solstice
#

do i have to

wind steppe
#

yes

civic solstice
#

thats probably why then

zealous glen
red flower
civic solstice
#

1 sec

#

i actually didnt know that

#

thats my fault

zealous glen
# zealous glen Ms. Popular

I’ve had people offer me art which I like but I feel a bit bad so I avoid it. (I try to ask for a piece which I think would highlight what I like the most about a particular artist’s style which usually means I overthink it and don’t ask.)

#

That reminds me I have a few unused artworks like the one by @hushed field

zealous glen
wind steppe
#

programming is also work no

#

that also deserves credit

civic solstice
#

that should not have taken me almost 2 AND A HALF HOURS

chrome widget
#

Though I normally don't bother with them (I don't have individual credits for them in my mod as it stands), if I want to do this automation thing, I'd need to list individual programming credits on each item for them to be automatically collected into the programming tab

zealous glen
chrome widget
#

The idea here is that when a joker is loaded, it reads if the center has artist, programmer, etc and then builds the credits table based on that

zealous glen
#

I think it makes sense on the level of the entire mod or maybe individual systems

chrome widget
#

None of my items currently have a programming credit, so I'd have to add them to make this work

zealous glen
#

It has artist, programmer, and concept IIRC

#

Maybe a team name too

chrome widget
#

does it build the full credits menu from this?

wind steppe
#

a Team Name you say...

zealous glen
#

I think so

#

Although if you wanted something truly scalable

#

Maybe you could have a single Credits table

#

And it parses the job and person from that

chrome widget
#

the thing being that it's creating the single credits table this way

#

and then it builds the tab itself based on the info it has

zealous glen
#

object.artist_credit = … and object.credit = {artist: …} seem pretty close

#

Although I guess the latter would need custom localization for custom jobs

chrome widget
#

That's what im trying to automate is the focus of this

zealous glen
#

But once each object has the info I don’t think building that table is too hard

zealous glen
civic solstice
#

okay quick question

is it possible to spawn in jokers with the debug mod

civic solstice
#

how

zealous glen
#

Then read

civic solstice
#

i forgot ab that function LOL

#

i ask bc im gonna be changing some of the vanilla cards as well to work differently (mainly the legendaries so theyre actually unique to eachother)

#

wait okay how do i find the vanilla code for the jokers if possible

chrome widget
#

The basic idea is this:

  • by base, credits has some default categories (artist, programmer, direction, etc)
  • upon loading a joker, if it has information for a category, it appends the info to the category and adds onto a list of the contributions that specific user made to that specific category
  • the overall credits has x and y dimensions, by base 20x10. It can be provided custom dimensions
  • each category has a start position and an end position within the dimensions. Once information is collected, and to build the credits menu, it loops through the categories and minds nesting levels by arranging the dimensions on the grid and defining sections that it needs to make
  • the end result is essentially this:
frosty rampart
# civic solstice wait okay how do i find the vanilla code for the jokers if possible

use the take ownership function
https://github.com/Steamodded/smods/wiki/API-Documentation#taking-ownership
you'll have to rewrite some code depending on how much you change, but it's by far the easiest way to modify vanilla content (the only other way i can think of is lovely patching)

GitHub

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

chrome widget
#

it's not nearly as simple as I made it sound since I'll have to experiment with a ton of constants for how to range text scaling

zealous glen
#

Stickers

#

If you can figure it out, it could be used to allow for automatic positioning of stickers

slim ferry
obtuse forge
#

GUYS HOW DO I USE IMMOLATE

slim ferry
#

thats also a thing to remember

zealous glen
#

I had discussed it with, I want to say Aure, but I couldn’t figure it out

frosty rampart
obtuse forge
#

I DONT UNDRESTAND

chrome widget
#

I could definitely figure out automated sticker positioning sure
<------ overconfident and egotistical

slim ferry
#

doesnt display_size handle that already

frosty rampart
# obtuse forge GUYS HOW DO I USE IMMOLATE

you should ideally use it in contexts where your hand doesn't have a lot of cards you want to keep, because then it thins out your deck along with giving you the money balatrojoker

zealous glen
frosty rampart
#

yes that's why i appended balatrojoker to my message. because i am making the silly. the jokes. i am the jester here

civic solstice
#

so would i be able to take the highlighted text here and just paste it into the take_ownership table?

obtuse forge
#

I HAVE JUST NOTICED THAT CAPS LOCK IS ON AND I WILL NOT TURN IT OFF FOR DREMATIC EFFECT

slim ferry
#

as if you were making another joker

zealous glen
# chrome widget I could definitely figure out automated sticker positioning sure <------ overcon...

What we had discussed was having a standard size, we had a specific number which I forget, which would be positioned automatically.

I was interested because I was curious about the possibility of stacking multiple of the same sticker in ways that would overlap, which sounds fun to me.

An issue with this approach is that I don’t know if it would work with the way Balatro handles sprite rotation.

Oh also

#

There was a different application

#

CardAreas

chrome widget
#

Sprite rotation in balatro is inherently a major issue yeah

zealous glen
#

With each mod adding a billion CardAreas, the introduction of a system that automatically positions them has been brought up

chrome widget
#

I've had some issues with some cards being offset specifically because of that

zealous glen
#

Honestly forget the credits if you figure out grid positioning you’re solving a billion problems /hj

#

@chrome widget I don’t know how LaTeX handles text and floats but it seems to me like it would be an useful reference for learning how to handle text scaling and positioning in the Credits

civic solstice
slim ferry
#

yeah you only need to put in the values youre changing for take_ownership

civic solstice
#

alright

#

so if i were to make triboulet give all face cards 2x luck instead of just kings and queens this is the setup id need for it?

slim ferry
#

should be =

#

instead of ==

frosty rampart
#

across the board, yes
and you shouldn't have the second calculate function at all

slim ferry
#

also if you want it to be face cards you should check context.other_card:is_face()

civic solstice
slim ferry
#

yeah

#

its

#

not a table

#

currently

civic solstice
#

so just leave it alone with the one?

slim ferry
#

select everything from calculate to the end

#

and then do a {

#

should put the brackets around the entire selected field

civic solstice
#

i assume them being red is okay

slim ferry
#

being red is the one thing thats never okay

sharp arch
#
    function SMODS.showman(card_key)
    if next(SMODS.find_card('j_jabong_soulbottle')) then
        return true
    end
    return smods_showman_ref(card_key)
    end``` this goes outside the joker right
slim ferry
#

yes

civic solstice
#

what do i do

slim ferry
#

like underlined

#

or fully red

civic solstice
#

both

slim ferry
#

fully red means theres no closing bracket

slim ferry
#

and the underlining is probably the same issue

civic solstice
#

it says the brackets are an unexpected symbol

slim ferry
#

uhhh

#

show the full thing

civic solstice
slim ferry
#

ah

wintry solar
civic solstice
#

i assume i also get rid of the local on the silent thing

slim ferry
#

should be after all the closing squiggly

zealous glen
civic solstice
slim ferry
#

after the cost

civic solstice
#

oh the parenthesis

slim ferry
#

yeah

civic solstice
#

okay i fixed everything

slim ferry
#

ok

#

and then the silent should be after the table

sharp arch
#

also which values do I return true to limit dupes of cards in SMODS.Showman

slim ferry
#

so you have ("triboulet", { the whole table thing }, true)

slim ferry
#

but the function itself only returns true or false

sharp arch
#

ah ok

civic solstice
faint yacht
civic solstice
#

even after moving the silent line

civic solstice
#

so example instead of 11 itd be 'Jack'

#

and so on

slim ferry
#

11 should work

#

but also for checking face cards its :is_face()

civic solstice
frosty rampart
#

just check context.other_card:is_face() unless there's a specific reason why you only want jacks/queens/kings

civic solstice
frosty rampart
#

elaborate on "didn't work"

#

and i'll leave eris to help you because i need to do irl stuff

civic solstice
#

the trib didnt score the 2x on the jack at all

slim ferry
#

does pareidolia work

#

with is_face

civic solstice
#

1 sec

#

ill check that rq

#

okay weird no it doesnt

#

i also have to change the description for trib which seeing how that went an hour or 2 ago i think ill leave that for another day lol

slim ferry
#

i mean trib already has the loc_vars

#

so that wont be an issue

civic solstice
#

fair

#

but yea no peradolia doesnt work at all with is_face()

#

probably because the if statement has both that and the old setup divided by an or thing

willow scroll
#

ok no bump two is there no way to make it so a deck sets a scoring calculation once at the start of the run?

#

wait no i might be stupid

fluid steppe
#

anyone know how i'd. fix this

chrome widget
#

he's wide

red flower
#

make the jokerdisplay wider

fluid steppe
#

-# the +4 mult is a placeholder

fluid steppe
red flower
#

idk actually

fluid steppe
#

eh it's fine

#

im referring to the stickers

willow scroll
red flower
#

how are you changing the size

fluid steppe
#

i'm not i'm rotating the card.chidren.center and card.children.back

red flower
#

why

fluid steppe
#

this is in a toml thing

#

because i dont want to make a whole nother atlas for it idk!!!

red flower
#

does the joker have the two modes

fluid steppe
#

wdym

red flower
#

or is it always sideways

civic solstice
#

okay ima come back to this later i gtg

#

the trick or treaters are (probably) waiting

fluid steppe
red flower
#

then just make another atlas..

civic solstice
#

goodbye chat o/

fluid steppe
red flower
#

why

fluid steppe
#

because i am idk

red flower
#

there are functions for this specific thing

fluid steppe
#

what are they

willow scroll
# willow scroll wait no i might be stupid

ok im still stupid but
G.GAME.current_scoring_calculation = SMODS.Scoring_Calculations["maxboism_bribe"]:new()
am i forced to call this every round or smth because i see 3 functions for a scoring calc and the load just crashes if i replace the new() with load()

red flower
#

pixel_size and display_size

fluid steppe
#

oh i have pixel_size but not display_size

red flower
#

check vanillaremade's square joker

#

idk which one it uses

fluid steppe
#

..i just ctrl-f'd "squoker"

#

because thats what i tend to call it

red flower
#

squok

fluid steppe
#

yeah it uses pixel size

willow scroll
#

im the squoker baby

willow scroll
red flower
fluid steppe
#

where do the stickers even get placed

#

i might be able to mess w that

#

ok it's not center.children