#💻・modding-dev

1 messages · Page 90 of 1

hybrid iris
#

did you remember to add a commit message?

#

if not it should have like a new file that opened up which you can type the message in and click the little check in the upper right

true jasper
#

oh ok ty

orchid thunder
#

how can i tell what pack i am in

elder vapor
#

there's a state for each pack

tepid crow
#

don't the states only support the base game packs though?

zealous glen
#

I remember someone else asking that question before but I forget the answer

glass crown
#

bumping this because i really want this deck to work and i have zero clue whats causing it to not
(also ive sinced changed the key from "Repetition" to "repetition"

tepid crow
#

let me guess, card.lua:2060 is

            G.GAME.round_resets.reroll_cost = G.GAME.round_resets.reroll_cost - self.ability.extra
```?
glass crown
#

no, its trigger = 'ease', but ive found that something might be wrong with how the game is trying to direct me to the correct erroring line of code because this is one of many times where something completely unrelated is what it directs me to

#

unless im supposed to be looking at something else to get card.lua:2060 besides the actual card.lua file

tepid crow
glass crown
#

ah okay that explains a lot
and you are correct, it is that exact line of code

tepid crow
#

you should almost always be referring that lovely dump when looking at an error on a specific line btw

#

since they shift around so much

tepid crow
#

it's possible the function it's part of (Card:apply_to_run(center)) is getting called incorrectly somehow?

#

how big is the rest of your mod's code? 🤔

glass crown
#

this is the entire thing

tepid crow
#

a couple of lines I see

glass crown
#

its not particularly large no

tepid crow
#

well I'm stupid

#

I don't see the issue lol

#
SMODS.Back{
    name = "Repetition Deck",
    key = "repetition",
    config = {vouchers = {"v_reroll_surplus"} },
}
glass crown
#

did it not cause a crash for you?

tepid crow
#

it does

#

which is why I'm confused haha

glass crown
#

how interesting

tepid crow
#

wait, something's just wrong with the reroll surplus voucher 🤔

glass crown
#

wait, so does the voucher itself just cause the crash if you pick it up?

tepid crow
#

no, giving the reroll voucher through the SMODS.Back config breaks for some reason

#

(I'm assuming)

glass crown
#

ah icic ok less concerning but still concerning

tepid crow
#

there's no way nobody else has run into this??

glass crown
#

id be really surprised if nobody else had run into it

tepid crow
#

I'm so confused lmao

#

well the easy work-around is a custom apply but

#

still, weird 🤔

glass crown
#

yep

#

whats the function to add a voucher?

tepid crow
#

it's in Back:apply_to_run*

#

just follow the stuff thunk does there I guess

glass crown
#

got it

tepid crow
#

and you'll probably need to wrap it in a delayed event otherwise it might crash the same way

glass crown
#

is it possible that you could point me to some kind of example? i tend to work best with examples, im not exactly a coder by nature, im kinda fumbling my way through creating all these decks to be honest

tepid crow
#

uuhhh

tepid crow
mellow sable
#

what's the crash?

mellow sable
#

other idea is that it modifies a variable that the game sets later...

#

like the table with starting reroll cost

tepid crow
#

it's crashing on self somehow

mellow sable
#

what's at that line?

#

in the lovely dump

tepid crow
mellow sable
#

maybe the card itself isn't created

#

like it is when you redeem it normally

tepid crow
#

oh that would probably be it

#

it's the only voucher with self in it's redeem

#

when it probably should be using center_table lol

#

cheers

glass crown
#

tried adding this event below, the game still crashes when giving me the reroll surplus

            trigger = "after",
            delay = 5,
            func = function()
                Card.apply_to_run(nil, G.P_CENTERS["v_reroll_surplus"])
                return true
            end
        }))```
tepid crow
#

yeah I found the underlying issue with math

#

and the event thing doesn't help with it

#

I'll bring it up in the steamodded thread regardless but I'll see if I can get you a quick fix right now

glass crown
#

okay, thank you

tepid crow
#

I mean, best case scenario Thunk fixes this himself next update but that doesn't seem very likely...

glass crown
#

yeahhhh

tepid crow
# glass crown okay, thank you

hopefully either of these 2 methods work:

-- option A: lua code where we take ownership of the vouchers and fix their redeem function

local redeem_func = function(self)
    G.E_MANAGER:add_event(Event({func = function()
            G.GAME.round_resets.reroll_cost = G.GAME.round_resets.reroll_cost - self.config.extra
            G.GAME.current_round.reroll_cost = math.max(0, G.GAME.current_round.reroll_cost - self.config.extra)
            return true 
        end 
    }))
end

SMODS.Voucher:take_ownership("v_reroll_surplus", {
    redeem = redeem_func
})

SMODS.Voucher:take_ownership("v_reroll_glut", {
    redeem = redeem_func
})
# option B: lovely patch

# the next 2 patches are to fix the reroll voucher redeem function when only the center but no card object exists
# Card:apply_to_run
[[patches]]
[patches.pattern]
target = 'card.lua'
pattern = """G.GAME.round_resets.reroll_cost = G.GAME.round_resets.reroll_cost - self.ability.extra"""
position = 'at'
match_indent = true
payload = """G.GAME.round_resets.reroll_cost = G.GAME.round_resets.reroll_cost - center_table.extra"""

# Card:apply_to_run
[[patches]]
[patches.pattern]
target = 'card.lua'
pattern = """G.GAME.current_round.reroll_cost = math.max(0, G.GAME.current_round.reroll_cost - self.ability.extra)"""
position = 'at'
match_indent = true
payload = """G.GAME.current_round.reroll_cost = math.max(0, G.GAME.current_round.reroll_cost - center_table.extra)"""
glass crown
#

used the lovely patches, they work perfectly as far as i can tell, thank you so much!

tepid crow
#

cheers, something similar should be merged in steamodded somewhat soon

faint yacht
#

🤔 Can a card modify current blind size for each time it is scored?

spare elk
#

pretty sure Jen's Almanac has a joker that does something along those lines i could send you the code (since the version it's on is deprecated)

faint yacht
#

Do, I am quite curious.

hardy viper
#

what if instead of posting mods on github we post a voice message on discord where we just speak the code aloud for 5 minutes and leave it to the user to transcribe it

cerulean rose
#

is there a good way to make something happen for all consumables of a custom type
(i'm trying to make a variant of fortune teller that counts a consumable type i've made)

hardy viper
spare elk
#

trying to make it so scoring anything except 4s 7s kings and aces gives 8 mult and i'm at a :.|:; , can't figure out what's wrong here

tepid crow
# hardy viper

You forgot to transcribe the whitespace (spaces and tabs) btw

tepid crow
#

LOSS

tepid crow
#

Great reference

hardy viper
#

idk if it even matters here

crisp coral
hardy viper
#

i don't think any of the whitespace-necessary edgecases arise

#

only for the header

#

where I didn't specify the spaces

tepid crow
#

Possibly in the header but I'm not 100% sure on that even

#

Yeah

hardy viper
#

this is why we use new metadata format egg

spare elk
cerulean rose
tepid crow
hardy viper
#

real..

elder vapor
tepid crow
#

During scoring?

elder vapor
#

the jade gemstone upgrades the card's rank by 1 before scoring

#

since the 3s went to 4s and they are all the same suit the hand type changed

tepid crow
#

Well it says "when scored" which is a big difference

elder vapor
#

oh

#

i forgot to update the description

#

was before scoring then when scored and back to before scoring

tepid crow
#

Ah alright

solid crag
tepid crow
#

Interesting either way

elder vapor
#

yeah

#

i copied the code from strength

spare elk
#

if you scored it 14 times it would change absolutely nothing egg

solid crag
#

that is very interesting

elder vapor
solid crag
#

is there any way to remove the gemstones outside of like replacing them with another one?

elder vapor
#

not atm but i can add a tarot that does so

solid crag
#

yea that could be a cool way to gain more of one rank

#

play cards with that gemstone in em til they're at the desired rank, and take the gemstones out with that tarot

#

seems very interesting

elder vapor
#

actually

tepid crow
# elder vapor

You might want to look at steamodded's implementation of strength if you want to support modded ranks btw

elder vapor
#

i can change the tarot that gives an empty gem slot to be able to override the gemstone

elder vapor
tepid crow
#

Though it's very complicated, I wouldn't blame you if you didn't use it (I know I avoided it lol)

elder vapor
#

@tepid crow could it be this? i looked through the repo for steamodded and found this when it takes control of strength

tepid crow
#

Yup. Using SMODS.Ranks

#

(though really that whole function should be separated out so anyone can use it)

elder vapor
#

true

#

alr time to see if everything is working

#

ok time to debug

tepid crow
elder vapor
#

yeah uh

#

i found out why the return true is important at the end of a event function

#

LMAO

#

anyways its fixed and should work with modded ranks

faint yacht
elder vapor
#

roulette gem: randomly assigns a card with a random rank & suit

split creek
#
    object_type = "Enhancement",
    key = "demon",
    atlas = "mtg_atlas",
    pos = { x = 10, y = 1 },
    config = { extra = {x_mult = 2}},
    overrides_base_rank = true,
    weight = 0,
    loc_vars = function(self, info_queue, card)
        return { vars = { self.config.extra.x_mult} }
    end,
    calculate = function(self, card, context, effect)
      (some code that doesn't matter)
    end
}``` So, I have an enhancement with a weight of 0, and yet it still shows up in packs?
tidal edge
#

i've been having an anyuresem for 20 years over this

#

why doesnt this wor

#

it applies stone to all played carsd

hybrid iris
#

this a weird glitch that came up

#

for some reason, loc_txt stopped updating

#

,,,but only when it comes to jokers?

#

okay, what

#

i,, removed the jokers entirely in localization

#

nevermind

#

turns out i had two copies of the mod installed

hybrid iris
#

balatro modding has gotten to the point where i pick up my phone, not hear the pick-up sound and go

#

'did i accidentally glitch out my audio? will have to fix that later'

molten ice
# tepid crow (though really that whole function should be separated out so anyone can use it)

honestly i've been thinking of doing this for my own mod, in addition to making a few other rank-related features like increase or decrease by specified value (would probably traverse them like a linked list), or even the elusive Card:is_rank.
I'm starting to wonder if I should separate this into its own Rank framework library (due to the hassle of mod installation for general folks this seems to not be the most favorable option though) or even making the pull request to the actual SMODS since there seems to be an actual demand for this

torn grove
#

what did I do wrong here? the consumable type isn't showing up in game

spare elk
zealous glen
#

Is the atlas key right?

#

Usually keys don’t have spaces

#

And they may or may not need a prefix

torn grove
#

fixed the spaces in the keys, it still doesn't exist

zealous glen
torn grove
#

wdym by prefix

#

remember I'm new to modding

wintry solar
#

what "isn't working"?

#

your undiscoveredsprite key should be exactly the same as your consumabletype too

zealous glen
torn grove
#

oh ok

cinder anvil
#

made my first crappy tarot reskin

#

will figure out how to mod it in later

zealous glen
#

I updated Steamodded after a long time and I got this error

#

The debug console doesn't even generate any output

#

This seems to be the error

fluid lagoon
#

I am struggling to update my mod of deck customizations cause when I try and call for the suit deck customizations it errors

zealous glen
#

So it's either an issue with Steamodded, DebugPlus, or Galdur

#

It doesn't seem like an issue with DebugPlus or Galdur so all that's left is Steamodded

weary jungle
#

how would i remove a specific joker?

#

i think its fine

torn grove
#

should the prefix be before the text in the key in SMODS.ConsumableType?

zealous glen
#

Actually this seems to work for me

torn grove
#

What is wrong with this?

#

@zealous glen

zealous glen
#

Idk, what was the error message again

torn grove
#

it's not an error, the uno card consumable type just doesn't exist in game

zealous glen
#

Try using the debug script to see what's happening

#

If it doesn't exist there's probably an error that prevents it from being created

torn grove
#

debug script?

zealous glen
#

yes

#

in the Steamodded folder

wintry solar
#

where is this code

#

there's no header

zealous glen
#

If you have Python and open Steamodded/debug in terminal you can run python tk_debug_window.py

torn grove
#

oh

torn grove
#

yeah, I forgot the header, but now it appears as white, will fix this

#

Now the jokers have vanished, all I did was copy this header from main.lua to consumables.lua

zealous glen
#

If the header is the same, it probably failed to resolve the second copy

#

Because each header corresponds to a mod

#

Or maybe just by having both headers in the same folder it would stop looking after the first

torn grove
#

so what do I do to make sure both the jokers and the consumables are in the mod?

mystic river
#

don't give the additional file a header, just load it from the main file
i forget the command for this off the top of my head but

faint yacht
#

SMODS.load_file("pathto/script.lua")() ?

zealous glen
#

What I'm currently doing is having the type creation in the main file and the individual objects in separate files

mystic river
#

that looks about right
and if it's wrong there are loads of other mods you can check

zealous glen
#

The important part is that it's a loop over the list of objects, and SMODS.load_file

#

I capture the error if there's one, otherwise I create the objects in SMODS.Consumable(data)

wintry solar
#

you just need to put the header in the first file and load the second file then

#

dont worry about this crazy loop that victin has

zealous glen
#

I learned the crazy loop from the elders and the yungins will learn it from me

torn grove
#

like this?

wintry solar
#

no, not like that

#

put SMODS.load_file(path)() in your main file

torn grove
#

oh

#

like this?

wintry solar
#

in inverted commas

torn grove
#

oh yeah

zealous glen
torn grove
#

btw does anyone have the sprite for undiscovered cards?

wintry solar
#

quotes and inverted commas are the same

torn grove
#

^

zealous glen
#

I didn't know they were also called inverted commas

torn grove
#

how do I change the color in the collection?

#

nvm I did it

weary jungle
#

is there a way to have 2 editions on a joker at the same time

hardy viper
#

not yet

weary jungle
#

so if i wanted a negative broken (custom editoin) joker id have to create a new negative broken edition?

hardy viper
#

you could always make your own thing instead of using an edition

weary jungle
#

but thats so much work for one (1) rune

hardy viper
#

if you think making a new edition would be easier then go for it ig

weary jungle
#

i just copy things

#

i love copying things

hardy viper
weary jungle
#

im gonna just cchange the effect im dealing with that

fluid lagoon
#

am using the most recent version of steam modded for a small thing for myself and I can't figure out what is the problem for modding additional deck customizations, is there a new thing I have to call for cause it is saying that is what is crashing it

#

the error I get is that when it attempts to get the length of the field of for Diamonds (in this case the diamonds face card customization) and the code of the line that errors is G.COLLABS.options.Diamonds[#G.COLLABS.options.Diamonds + 1] = "mia_diamonds" in the pervious version of steammodded I used this worked but now it is breaking at this line

elder vapor
#

set_ability not working?

hardy viper
#

pretty sure G.STATE will only ever be one of the enums inside G.STATES

#

I've never heard of "G.STAGES"

elder vapor
#

i got the G.STATE == G.STAGES.RUN from the base game card.lua

fluid lagoon
#

with DeckSkinsLite, what causes the error on line 305 when my code looks fine

elder vapor
noble anchor
#

I'm trying to create a new hand type based on a flush's suit, but when selected, it causes a crash with the reason: "attempt to call method 'is_suit' (a nil value)"

#

what could I do to fix this?

crisp coral
#

parts._4 is a table, with tables of cards inside i believe

#

so _four[i] here is a table, not a card

noble anchor
#

Thank you

frosty dock
#

there's G.STAGE which is different from G.STATE

crystal helm
#

Is there anygood wiki or posts/videos on where to begin making my own balatro mod? I have a couple ideas but dont know where to start 👀

teal estuary
#

there are example mods in steammodded which are pretty useful, and i remember someone was making videos on it? but i dont remember what it was called 😭

mystic river
#

#1307744498360520805 is where they posted the first video
presumably future videos will go there as well

primal robin
#

Why background color change for blinds use blockable events RUN

torn grove
#

How do I make a consumable give 1 discard for the rest of the round on use?

tidal edge
#

it basically does the same thing

elder vapor
frosty dock
#

read again

#

there's G.STAGE, not G.STATE in that line

#

G.STATE == G.STAGES.RUN happens to be the same as G.STATE == G.STATES.HAND_PLAYED because both of these are represented by 2 in their respective enums

elder vapor
#

must've type G.STATE and not G.STAGE

young dew
#

how does the take_ownership function work?

split creek
#

How would one go about adding additional funcitons to a joker?

    name = "hel-smearflowerpot",
    key = "smearflowerpot",
    pos = { x = 1, y = 0 },
    config = { extra = { Xmult = 5, num_black = 2, num_red = 2} },
    rarity = "hel_gx",
    cost = 10,
    atlas = "hel_joker",
    loc_vars = function(self, info_queue, center)
        return { vars = { } }
    end,
calculate = function(self, card, context)
        (stuff that doesn't matter)
    end,
    can_use_gx = function(self)
        if G.GAME.hel_gx_use > 0 then
            return false
        else
            return true
        end
    end,
    use_gx = function(self, area)
        G.GAME.hel_gx_use = 1
    end
}``` this is what I have, but I can't access the functions in-game
tepid crow
split creek
# tepid crow Those seem pretty independent, and would probably work better as individual func...

When trying to call the functions, I get this error Oops! The game crashed: [SMODS hellatro "items/utility.lua"]:47: attempt to call method 'gx' (a nil value)

    name = "hel-smearflowerpot",
    key = "smearflowerpot",
    pools = {["Hell"] = true},
    pos = { x = 1, y = 0 },
    config = { extra = { Xmult = 5, num_black = 2, num_red = 2} },
    rarity = "hel_gx",
    cost = 10,
    atlas = "hel_joker",
    gx = function(self, card)
        for i = 1, #G.hand.cards do
          
            local _card = G.hand.cards[i]
            buff_card(_card, 0, 0, "e_wild")
            delay(0.1)
        end
        G.E_MANAGER:add_event(Event({
        trigger = 'after',
        delay = 0.2,
        func = function()
            G.hand:unhighlight_all(); return true
        end
        }))
        delay(0.5)
    end
}```
I'm calling it like ```c1:gx(c1)```
tepid crow
#

what are you actually trying to do?

nocturne garnet
#

its easy to see how someone can get it mixed up

#

try doing (the card).config.center:gx() instead of (the card):gx()

#

infact this reminds me

#

i only found this out recently

#

i could change something in my code rq

split creek
#

I have the UI all set up, I'm just trying to figure out how to call the joker's function from the function that gets called by the UI

humble hound
# young dew how does the take_ownership function work?

take_ownership is a method available on all SMODS.GameObject classes (e.g. SMODS.Joker) for overwriting attributes and methods of an object. It takes minimun two parameters: the key of the object you want to overwrite, and a table containing all the attributes and methods to overwrite, just like how you define a new object. For example:

SMODS.Joker:take_ownership("joker", {
    rarity = 4,
    config = {mult = 400},
})

Turns the standard Joker into a legendary which gives 400 Mult;

SMODS.Consumable:take_ownership("magician", {
    config = {mod_conv = 'm_lucky', max_highlighted = 5}
})

Changes Magician into being able to enhance up to 5 cards.
Do note you can also overwrite functions. take_ownership can take a third argument, but I don't know what it does.

tepid crow
wintry solar
#

I think having that boolean as true should probably not assign the mod = X property to the object too, right? it currently doesn't but I wonder if that's a change that should be made

frank pebble
#

not sure if i should ask this in modding chat or here but
how hard is it to replace textures/ text files?

wintry solar
frank pebble
#

that would be great but
i probably shouldve asked when i was in a position to actually go try it lol

wintry solar
#

that's okay, I think it's fairly self explanatory, but if you do use it and need some help just drop me a message

frank pebble
#

alrighty, thank you

glass crown
#

how would i go about giving every face card in a deck a certain enhancement?

zealous glen
#

Probably iterating over the deck, testing if it's a face card, then enhancing it

#

medusa moment

glass crown
#

oh yeah i could just look at what medusa does huh

#

oh nevermind challenge decks work weirdly

zealous glen
#

I was just joking

#

Because Jokers that do that have been suggested

#

Usually turning Face cards to Stone or Gold

stable cipher
#

Hi, I'm trying to replace jimbo's sprite with this, anyone know where to change a jokers sprite in the files?

#

... nevermind I'm stupid

glass crown
#

what do i put here to get it to actually target jacks instead of doing nothing? or alternatively, just getting it to target face cards in general?

zealous glen
#

in general you can try searching for the game's code to see how it does things

timid parrot
#

I believe cards have an :is_face() function

zealous glen
#

it does

timid parrot
#

there's also a :get_id() function which returns an integer

#

just looking at Hit the Road, it seems to be 11 for jacks

stable cipher
#

Would Aces be 14 or 1?

timid parrot
#

14

noble anchor
#

Is there a way to show card enhancements in hand examples?

#

Such as a stone or wild card?

hybrid iris
ocean pecan
#

how do you mod balatro on the most recent version? all of the videos im finding are very unhelpful

tepid crow
hybrid iris
#

i was too busy hyped over my code to think logically sdfkjhsdkjh

#

buuut fair

tepid crow
#

is the implied rule that the "negative" discards cost money btw?

hybrid iris
#

yea pretty much-

#

spend money instead of discards if you have none left

#

should i reword it?

hybrid iris
#

(also money cant go into the negatives)

tepid crow
hybrid iris
#

ahhh good point

autumn coral
#

me when i make a mod that makes all packs have soul or black hole but then forget to add some of the specific code to make sure that i um get other cards as well and now there are no cards except for soul and black hole and they appear in the shop also all cards are negative and it's very funny

#

i'm not even going to change it

#

ok yeah i do actually have to fix that now that i'm thinking about it

#

lmfaooo

proper stratus
#

ok so

#

steamodded wiki

hybrid iris
#

okay so like
yeah the first thing you want to try is the steamodded wiki for adding jokers

#

probbaly in the pins?

proper stratus
#

nothign in the pins lol

hybrid iris
#

o h

#

well then

proper stratus
#

lemme look around ill see what i can find

hybrid iris
#

here sjdhjshd

proper stratus
#

im goated

hybrid iris
#

yeaahh thats the one

proper stratus
hybrid iris
#

unfortunately im out rn but like ill try to get to my computer as soon as i can

proper stratus
#

this is gonna be a useful page

hybrid iris
#

mhm!

proper stratus
hybrid iris
#

dude ive spent so long studying game code i just want to make sure nobody else has the same hell sjdhsjhd

proper stratus
#

pffft fair

#

you've gone through the hell

#

now i get handrails :3

hybrid iris
#

indeed

proper stratus
#

me rn im in such a good mood

#

alright let's see

#

i should start learning lua right

#

i have a good basis on code in general (ish)

#

ive gone through GDscript learning and did some C

#

lua seems fun and easy to learn, (he doesnt know)

hybrid iris
#

yeahhh lua is honestly one of the easier languages to be honest

proper stratus
#

mhm!

hardy viper
#

{ }

autumn coral
#

if lazy mattman pivoted to balatro content:

hardy viper
#

hmmmmmmmmm

autumn coral
#

oh yueah

#

i have 0 clue how that even happened honestly

#

something in my code made it possible for cartomancer to make it

#

i added like a 25% chance for the soul to appear everywhere it shouldn't as well as the 100% chance in packs, so maybe i just got REALLY lucky lol

hardy viper
#

hows it negatuve

#

did you pull a nat negative soul from cartomancer ⁉️

autumn coral
#

no

#

scroll back

#

or um

#

click what i'm replying to

mystic river
hardy viper
#

moment

autumn coral
#

i need to make a joker like perkeo that just. multiplies money

tepid crow
#

you could also suggest it as a feature in steamodded if you want

autumn coral
#

There should be a mod that makes it so jokers can have multiple enhancements at once

#

I want a polychrome negative goddammit

rough furnace
#

the shaders won't play nice

#

I think foil is the only base game one that stacks okay

autumn coral
#

Also a mod that lets you make your own intentional eternals (i am saving this one for later)

autumn coral
#

I’m sure it’ll be fiiiiineee

#

🤪

rough furnace
#

I mean DebugPlus can force eternal if you're testing stuff, but I think cryptid has a spetral that makes an enternal

elder vapor
hardy viper
#

why smods develoopers not rewrite entire game . laZy

mellow sable
#

It’s more of a sticker remover tool, with that one “downside”

cerulean rose
#

how can i create a card with a guaranteed specific edition? setting its edition manually after creation causes weird effects if the card would have naturally rolled an edition

rough furnace
#

if you're using SMODS.create_card you can pass the editions key to the edition field

#

I also set no_edition which ensure it doesn't poll editions. Not sure if thats nessicary or not

cerulean rose
#

also for creating stickered cards does it force a card that supports the sticker

#

from reading source, appears not

#

actually, trying to add eternal causes a crash

rough furnace
#

should just be card:set_eternal(true) iirc

cerulean rose
#

adding it through SMODS.create_card crashes i mean

rough furnace
#

show call

cerulean rose
#
local card = SMODS.create_card({
    no_edition = true,
    edition = { negative = true },
    stickers = { "eternal" },
    area = G.consumeables,
    key = pseudorandom_element(G.P_CENTER_POOLS.Consumeables, pseudoseed(seed or "grc")).key
})
edgy reef
#

oh

#

There isn't a check for if should_apply is set to false

cerulean rose
#

i think there is, its just not implemented correctly

rough furnace
#

not sure if that edition is correct

#

in my code I do edition = 'e_negative'

edgy reef
#

The function exists for custom stickers but due to seed RNG problems it's ignored for the vanilla recreations.

rough furnace
#

maybe both work?

fluid lagoon
#

is there something for peeps to look at if they want to try making their own mod

nocturne garnet
#

i will never miss an opportunity to self promo

fluid lagoon
#

thank you, I can't wait to try making this mod idea

nocturne garnet
fluid lagoon
#

add jokers mainly, not sure what else if anything

nocturne garnet
#

nice

autumn coral
#

how the hell do you play audio with smods lol

tepid sky
#

There's SMODS.sound iirc

tepid sky
autumn coral
#

yeah i know i'm trying to figure out how to actually. play registered sounds

#

i can check though

#

is there any way to just. play an audio file?

#

like a sfx

#

not a music file

#

bruh

#

nvm

#

i'm gonna have to pull out the actual code

#

sigh

#

ojh

#

i wonder if playsound works

#

huh

#

ok

regal wolf
#

Vanilla sound is very annoying

#

Use steamodded it will save you a lot of issues.

regal wolf
autumn coral
#

i'm aware

autumn coral
#

just music

#

💀

#

god why the fuck is lua written this way

#

i have a personal grudge against the devs

#

why do arrays start at 1

#

😭

edgy reef
autumn coral
#

i couldn't find it

edgy reef
#

SFX implementation for Cryptid looks to be just making the SMODS.Sound object and playing play_sound

#

Like that's it

autumn coral
#

can you link it to me

#

or i guess i can just find it, but it'd be easier to just see how they wrote it in

#

i got it

#

it's going to be unbelievably simple

#

i'm going to cry

restive magnet
#

hi sorry if im interrupting anything but im trying to use SMOD.Sound to replace the soundtrack with my own pre-synced tracks but the different music layers end up slightly offset from each other which is very noticeable during transitions (such as going to the shop or boss blind). is there something i should be doing for better syncing?

edgy reef
autumn coral
#

i see it

#

😭

#

no yeah it's still broken for some reason?????

#

i keep getting "can't open file resources/sounds/<file>"

#

pleaes god i need funny matmann screams

#

dies

#

yea no i'm stumped here iunno

#

like this is what i've got rn

#

iunno wy this wouldn't work...?

#

i think it's looking for files in the actual game???

#

i don't know how to fix this

#

cries

regal wolf
#

Check steammodded source

autumn coral
#

i did

#

oh you mean

#

the source source

#

alr

molten ice
#

can i see the command you used to play the sound

regal wolf
#

U need to make sure the path is correct

#

What does steammodded expect?

autumn coral
#

i pathed it 1:1 to ghow it was pathed for uh. what was the mod everyone was talking about up there?

#

play_sound("lazy", 1.26, 0.25) this is the code btw

molten ice
#

ah thats the problem

autumn coral
#

?

molten ice
#

you need the mod prefix

autumn coral
#

whuh

regal wolf
#

Yep

autumn coral
#

how

#

like how would i add that to this

#

there was nothin like that in cryptid

molten ice
#

add this onto your mod header, I think there's default as well but I wasn't sure what was this

and then you can use it to prefix your sfx

autumn coral
#

oh

#

how would i use that with um. the audio player

#

what would i add

molten ice
#

play_sound("prefix_lazy", 1.26, 0.25)

#

like the cryptid screenshot above has cry_ prefix because their mod prefix is cry

autumn coral
#

god i hope this works

#

ITjklSDFKJsdjklhfsdf

#

thank.

#

this is the best thing ever

#

incredible

stiff locust
#

idk much about the sound side of modding

#

but i remember that convo

#

that the music speed changes ingame

crisp coral
#

no, no, they're right

#

the implemeted sound api has a very noticeable delay when looping songs

stiff locust
#

okay trying this again

#

i need an effect to count the amount of suits in a hand, but not to count the cards a second time if they get retriggered, is there an easy way to do this

wintry solar
#

iterate over the hand in a context that only triggers once

stiff locust
#

and which context would that be

wintry solar
#

you can use context.before

stiff locust
#

if context.before and context.cardarea == G.play then is a statement that works right

wintry solar
#

just if context.before then is fine

stiff locust
#

okay

#

local text,disp_text,poker_hands,scoring_hand,non_loc_disp_text = G.FUNCS.get_poker_hand_info(G.play.cards) will work in that context right

#

guess i'll find out

#

it crashed

#

yeah i'm not sure how to do this

#

i need it to be in context before but I need it to check for unscored cards

#

the method I use to check for unscored cards doesn't work in context before

#

this is that method, if the flag is false then the card was scored by the splash effect

#

it crashed on context.other_card, do I need to use another for loop to iterate through G.play.cards?

wintry solar
#

what are you trying to do?

stiff locust
#

if it's scored by splash or unscored, scoredflag should be false

#

but then i need to check the suit of the card

#

that part is easy

wintry solar
#

what's the scoredflag for?

stiff locust
#

logic error without it

#

it's annoying to explain but trust me the flag is necessary

wintry solar
#

no like, what is the joker supposed to do

stiff locust
wintry solar
#

so every card gives X1.5, wild cards give it twice and splashed cards give it twice?

stiff locust
#

it's not the cards that give it

wintry solar
#

oh it just needs to count up?

stiff locust
#

yeah here it just needs to increment

#

i have all the logic for calculating the xmult working

#

it's just iterating through the cards

#

without counting retriggers a second time

wintry solar
#

can you send your code?

stiff locust
#

i just changed the context to context.before, it used to be context.individual and cardarea == g.play

#

i also didn't include the line registering the fusion as a fusion it is there in my code

#

clubinstances should probably be <= instead of ~= 0 to avoid a potential logic error with a negative number somehow

wintry solar
#

why do you have a math.min?

#

this just seems unnecessarily complicated for the effect unless I'm misunderstanding it

stiff locust
#

it's the easiest way to calculate it

#

with a total of clubs in the hand, say, 3
and a total of non clubs in the hand, say, 4
the amount of X1.5 should be 3

#

no matter what those two numbers are, math.min gets the right answer

wintry solar
#

that is NOT clear from your description

stiff locust
#

what

wintry solar
#

OH

#

I get it

#

you need a club AND a non=club for the effect

stiff locust
#

yes

#

for each instance of a club and a non-club it gives X1.5 multiplicitive mult

#

which means with 2 clubs and 2 non clubs it's X2.25, etc

wintry solar
#

I still don't think your description is clear but whatever

#

right, give me 5 mins and I'll type something up

stiff locust
#

how can I change it to be clearer

wintry solar
#

I think you need to make it explicit that it's pairs of clubs and non clubs

stiff locust
#

but that would imply playing the Pair or Two Pair hand types

#

🤔

wintry solar
#

just avoid using the word pair

#

but I read instance as an individual card, so for each instance of a club and a non-club implies to me that it's just any card

#

maybe it's just the way I read it

stiff locust
#

i'll post about it in my mod thread and see what people think

wintry solar
#

should wild cards in splash count as 2 sets?

stiff locust
#

if they are extra scored cards then they also count as 2 sets

zenith drum
#

Is there a good tutorial or reference for creating booster packs? I'm having a hard time trying guess how it works

wintry solar
# stiff locust they count as a club and a non club
function card_is_splashed(card)
    local _,_,_,scoring_hand,_ = G.FUNCS.get_poker_hand_info(G.play.cards)
    for _, scored_card in ipairs(scoring_hand) do
        if scored_card == card then
            return false
        end
    end
    return true
end
    calculate = function(self, card, context)
        if context.joker_main then
            -- calculate the number of club/non-club pairs
            local clubs_count = 0
            local non_clubs_count = 0

            for index, card in ipairs(context.full_hand) do
                local reps = 1
                -- check if card is being splashed
                if card_is_splashed(card) then
                    reps = reps + 1
                end

                for i=1, reps do
                    if card.ability.center_key == 'm_wild' then
                        clubs_count = clubs_count + 1
                        non_clubs_count = non_clubs_count + 1
                    elseif card:is_suit('Clubs') then
                        clubs_count = clubs_count + 1
                    else
                        non_clubs_count = non_clubs_count + 1
                    end
                end
            end
            -- calculate the number of pairs
            local number_of_pairs = math.min(clubs_count, non_clubs_count)
            -- set the xmult appropriately
            return {
                message = localize{type='variable',key='a_xmult',vars={card.ability.extra ^ number_of_pairs}},
                Xmult_mod = card.ability.extra *  number_of_pairs,
                card = card,
            }
        end
    end
stiff locust
#

i should probably use a function for this yeah

#

I do this on a LOT of fusions

wintry solar
#

that's what I was thinking

#

oh, lemme replace some variables IO hard coded too

#

there we go

#

that should work

stiff locust
#

thanks a e11

stiff locust
#

which one's correct

#

i think i got it actually

#

thanks again

teal estuary
wintry solar
tepid crow
teal estuary
#

TIL that even exists and is doable 😭

#

ty

tepid crow
#

github search is pretty good, you should use it 🙃

teal estuary
#

i didnt know you could search multiple projects 😭

tepid crow
teal estuary
#

indeed

#

ty though

stiff locust
#

ctrl shift F my beloved

tepid crow
#

/ for github search :D

stiff locust
#

is there a gold text color already

#

yellow doesn't count

#

i don't think there is

#

so how do I make a text color

hardy viper
#

G.C.COLOURS.foo = HEX("F00BA4")

stiff locust
#

how do i make it change color like the dark_edition color

hardy viper
#

smth like that

#

i forget tho

hardy viper
#

all sorts of text shenanigans in there

mellow sable
#

Jens isn’t public right now balatrojoker

#

Cryptid uses a lot too

stiff locust
#

yeah ive been trying to figure out how cryptid does it but

#

cryptid's code scares me

#

you guys have so many lua files i don't know where to look

#

i thought it'd be in the misc one but it's not

hardy viper
#

can still use it

#

jen is okay with that iirc just took it down because incompats

hardy viper
stiff locust
#

well yeah i'm in there

tepid crow
stiff locust
#

is it a cool one

tepid crow
#

idk

stiff locust
#

i want it to be a cool one

weak mural
#

Hey Guys, i was learning about modding my game yesterday and windows said to me that the "version.dll" were potentially something not good.
at the same time, unfortunately, my pc went to be slow and to do shit, i don't think it was because of "version.dll" but i decided to be radical and delete the thing to be sure.

I bet you all had already heard about that a lot but there is something about "PUA:Win32/GameHack" that i should be "afraid" of ?
(Sry for my english tho)

tepid crow
#

go look at globals.lua:337, that's where all the colours are defined

stiff locust
mellow sable
tepid crow
stiff locust
#

does updating past the spooky update remove the spy

#

i really like the spy (sometimes)

mellow sable
#

Scary on the outside, sweet on the inside

mellow sable
stiff locust
#

the one thing I despise abt the spy is just that

mellow sable
#

He’s also pretty bad at his job, he might need some improvements

stiff locust
#

when you spawn a random joker

#

a spy joker can spawn

#

that's my main issue with it

hardy viper
mellow sable
stiff locust
#

until someone informed me that it was actually a spy

mellow sable
#

I like that he can throw you off, but I want to change the indicator for it

stiff locust
#

it's extremely obvious when he's a fusion or evolved cause

they don't show up in the shop

hardy viper
#

im a big fan of just deleting jokers I don't want

stiff locust
#

the indicators right now are

nil values
fusion or evolved
cryptid ownership tag

hardy viper
#

R key 🔥🔥🔥

mellow sable
#

My idea is to:

  • make it only in shop
  • make it only jokers that can appear in the shop
  • make the buy price off by $1
stiff locust
#

the buy price being off by $1 is a bit scary because of mass production making everything cost $1

#

and the other discount vouchers

#

im gonna have to do math before i buy every joker to figure out if it's the right price

#

and it's a harsh knowledge check on base joker prices and edition price increases

mellow sable
#

Any other ideas? I do want some guaranteed way of “knowing” a Joker is a Spy

stiff locust
#

if you're on a high enough stake, go against the Perishable and Eternal compatibility values in the joker

hardy viper
hybrid iris
#

i forget if thats possible

mellow sable
#

It is

#

I think

hybrid iris
#

rad

hardy viper
#

yeah you can juice up any moveable

#

i think

stiff locust
#

can you juice up the quit button

hardy viper
#

probably

hybrid iris
#

i remember you can juice up the blind text

stiff locust
#

cool

hybrid iris
#

so likely

hardy viper
#

someone make a mod that just constantly juices everything

stiff locust
#

get the guy who made the peak mod to do it

hybrid iris
#

i wonder if theres like

#

a place where people can advertise their mods

stiff locust
#

well that's what the modding forum is for

#

people just post abt their mod

hybrid iris
#

fair point

restive magnet
stiff locust
hardy viper
#

i just had the most nefarious idea for a mod ever

restive magnet
#

damn

stiff locust
#

blindfolded balatro

hardy viper
#

that honestly sounds kinda fun

stiff locust
#

definitely not the thing you came up with but i wanted to share that idea

hardy viper
#

would be a cool deck idea

#

just have every card be permanently face down

stiff locust
#

X0.5 blind size
all cards face-down

hardy viper
#

joker i mean

stiff locust
#

playing cards can be facedown too

hybrid iris
#

sounds like you would need a massive upside for that

hardy viper
#

if all cards were face down you'd just lose blind one egg

hybrid iris
#

y e ah

stiff locust
#

that's true actually

#

i mean with the X0.5 blind size

#

blind one would be 150 chips

#

is that achievable in 3 hands?

#

surely you can luck into enough pairs

restive magnet
#

playing cards face down isnt fun but jokers could be

stiff locust
#

maybe X0.5 blind size and also you start on ante 0

hardy viper
#

if you discard/play left 4 cards on suit sorting you'll probably get a flush

restive magnet
#

maybe the upside is just +1 joker slot honestly

stiff locust
hybrid iris
#

ehh

restive magnet
#

+1 joker and +1 consumeable

stiff locust
#

50 chips is fucking free surely

hybrid iris
#

problem is you're essentially playing random cards always

hardy viper
hybrid iris
#

it just isnt fun

restive magnet
#

balance isnt about how possible it is to play its more about whether or not its interesting and requires unique thought

restive magnet
#

price is one of your only tells

hardy viper
restive magnet
#

really?

stiff locust
#

yes you can

hardy viper
#

not unless cryptid changes that

stiff locust
#

reverie had a thing that made all cards facedown and you could still see the costs

hybrid iris
#

cryptid probably changes it

hardy viper
#

im unsure

restive magnet
#

for this youd have to be otherwise that takes away a lot of the decision making you can do

stiff locust
#

i'm pretty sure you can just see the cost on the buy button on facedown cards in the shop

#

it's only the sell price that isn't shown

#

because it wasn't intended for shop use, only for boss blind use

hardy viper
#

regardless it's probably for the best, i don't think it'd be fun to look at the prices of cards to buy them (especially because the idea of the deck is to buy things first and just see what can they do)

mellow sable
#

You can’t see any modifiers though

hybrid iris
stiff locust
stiff locust
#

four watermelons

hardy viper
#

75% off

weary jungle
#

all cards face down X2 blind and X3 cost

stiff locust
#

uhhh

#

how many watermelons is that

#

five?

hardy viper
#

200% off

restive magnet
#

there are jokers with specific prices like iirc gold mask is $7 so if you see a $7 joker you have a good chance of knowing what it is

stiff locust
#

domain expansion
infinite watermelon

stiff locust
#

rental makes them cost $1

hybrid iris
#

you have a good chance

#

but not an exact one

#

thats like exactly what you want no-

restive magnet
#

face down jokers past black stake would be nearly impossible without just ignoring the thing and doing jokerless

stiff locust
#

thats the main thing

#

why would you do this instead of jokerless

hybrid iris
#

because its like a fun concept

restive magnet
#

maybe a challenge run instead of a deck

hybrid iris
#

fair enough

stiff locust
#

is it easy to make a config screen

restive magnet
hardy viper
#

it's easy if you copy someone else's structure

#

otherwise it takes a week

stiff locust
#

i need some homework to copy 🤔

hardy viper
#

don't use mine

#

mine sucks

stiff locust
#

will I need to change my code structure to use load and separate lua files

hardy viper
#

teacher gave me an F

stiff locust
#

i want the configs to just flip boolean statements with the stuff in them cause i dont know how to do the load stuff

hardy viper
stiff locust
#

i wish i knew what that meant

#

it'd probably be funny

hardy viper
#

it's a stupid tiktok reference

#

regardless

stiff locust
#

is there any reason to do the load stuff other than "clean code" actually

hardy viper
#

not really

stiff locust
#

alright

#

im putting everything in one lua file

tepid crow
#

just the way god intended

stiff locust
#

and im gonna make massive comment separators so that i can see them when i scroll through it

#

(i was already doing that)

mellow sable
#

I might yoink that idea for the Cryptid refactor

tepid crow
#

I should probably split up my single file with 2100 lines ngl

cold peak
#

Anyone know if there's a way to animate the floating thing on top of soul? By that I mean make it a repeating gif/animated png instead of a static image that just floats

weak mural
hardy viper
#
main.lua:
print("hi")
loadfile("otherfile.lua")()

otherfile.lua:
print("world")

is functionally equivalent to

function other()
 print("world")
end

print("hi")
other()
mellow sable
cold peak
#

Ok I'll take a look!

stiff locust
#

i feel like the yandere sim dev looking at this

tepid crow
#

is the yellow repeated code? 🤔

restive magnet
#

just use arrays 4Head

stiff locust
#

i don't know what the colors mean
i'm also colorblind

#

all i know is that I need to fix the infinite money bug it currently has

#

and there has to be a better way

hardy viper
tepid crow
#

yo marie wtf is the

                local createjoker = math.min(1, G.jokers.config.card_limit - (#G.jokers.cards + G.GAME.joker_buffer))
                G.GAME.joker_buffer = G.GAME.joker_buffer + createjoker
                local card = create_card("Joker", G.jokers, nil, nil, nil, nil, "j_splash")
                card:add_to_deck()
                G.jokers:emplace(card)
                G.GAME.joker_buffer = 0
                return {
                    card_eval_status_text(card, "extra", nil, nil, nil, {
                        message = "Splash!",
                        colour = G.C.FILTER,
                    }),
                }

that you do 12 times

hardy viper
#

not having luals issue

tepid crow
#

why is that not factored out

hardy viper
#

/not having balatro src code in the project

stiff locust
#

how can you read that from

tepid crow
#

thats from github

stiff locust
#

oh right

#

i have one of those

#

i think it was math who literally said to find and replace j_obelisk with j_splash in the code for it

#

¯_(ツ)_/¯

#

thats what i did

#

anyway the issue is because i'm assuming it checks for if you sell obelisk to not create obelisk and i forgot to change the name check from obelisk to splash

#

yeah ok that's fixed

#

code's not clean, my code was never clean

#

I never would've made a function for checking if a card was splashed unless eremel pointed out that it was easier

mellow sable
#

Sob got cleaned up, look at the new Sob code

#

You don’t need to copy paste if statements 12 times now

stiff locust
#

theres so much stuff i need to do

#

idk what to do first

weary jungle
#

i like when the game is laggy and the cards are all jumpy

#

is there a way to force that to happen all the time?

stiff locust
#

one of my other friends also wanted this mod

weary jungle
#

or would it be nightmare

stiff locust
#

i do want to know cause it'd be really fun

#

can we make balatro really bouncy

#

but i dont have time to get sidetracked graagh

mystic river
weary jungle
#

but the problem is how to do bouncy whil not lagging, at 60fps and how do you control bounciness

hardy viper
#

there's an easier solution

#

im not telling though egg

#

joking of course i just don't know

restive magnet
#

im a novice but id say look for the balatro code that animates cards and see if there are any easily scalable numbers there

restive magnet
#

but then again steammodded seems to always do things totally different from the base game

weary jungle
mellow sable
#

m

weary jungle
#

so true

rough furnace
stiff locust
#

oh i see

#

is it a copy paste job or do i need to do other things to make a custom color work
also do i need a lovely patch or can i put it in my code

rough furnace
#

You probably need to change the math for your colour but otherwise copy paste. You just need a method to run your code every frame (a non-blocking/blockable event probably would work)

stiff locust
#

i don't know what that means

rough furnace
#

which part

stiff locust
#

event

#

specifically "non blocking/blockable"

rough furnace
wintry solar
#

You can just hook game update too iirc

rough furnace
stiff locust
#

which one is the least intensive

rough furnace
#

intesive how?

stiff locust
#

brain intensive

rough furnace
#

¯_(ツ)_/¯

weary jungle
wintry solar
stiff locust
weary jungle
#

i love hoks

rough furnace
#

it's the process of storing a reference to a function then replacing that function, to run your code and call the original function

weary jungle
#
function Game:start_run(args)
    startRef(self, args)  
end```
rough furnace
#

like lua local example_ref = example function example(args) print("hi mom") example_ref(args) end

stiff locust
#

yeah that makes sense

#

mmm yes, gold
my favourite color

rough furnace
#

can do it on Game:update

stiff locust
#

totally

#

that sounds dangerous

rough furnace
#

if you make sure to run it with it's args and return it you shouldn't have an issue

stiff locust
#

what arguments does it use

rough furnace
#

self (implied when using :) and dt

stiff locust
#

so do i need to include self or not

weary jungle
#

what happens if i dont return anything

stiff locust
weary jungle
#

:(

rough furnace
#

I think you can just do ```lua
local game_update_ref = Game.update
function Game.update(...)
-- My code
return game_update_ref(...)
end

stiff locust
#

the only argument is dt

rough furnace
stiff locust
rough furnace
#

both

stiff locust
#

what

rough furnace
#

game:update(dt) is shorthand for game.update(self, dt)

stiff locust
#

i see

#

me stupid me like shorthand

rough furnace
#

I did it with the . so that the self would be treated as an argument in the ...

stiff locust
#

does that change the outcome

rough furnace
#

not sure

#

haven't tested that

#

but I belive it does in the given code

#

try it and see

#

I might also be missremebering ... and it's not a thing in lua

stiff locust
#

whatever i put in here is going to execute every frame

#

okay it worked

#

now what do I put in this code area

#

i know what the code is for the timer changing stuff but
where does it define the colors that it changes to

#

or does it change relative to the base color

#

if so where is the base color

weary jungle
#

is this plausable?

rough furnace
#

depends on what you want

stiff locust
#

i don't know which one i want for that

rough furnace
hardy viper
#

i use love.update since there's no bullshit selfing shenanigans 🔥

rough furnace
stiff locust
#

this does seem to be the same color with different lightness

#

is that easy to do with these systems

rough furnace
#

uhhh if it was an HSL system it would be stupid simple

#

but for this you'll need a little math

stiff locust
#

oh no

#

math

wintry solar
#

You could save it as a hsl value and just convert it back every time rather than doing the appropriate rgb math

rough furnace
#

actually

#

I think if you just get an rgb value for what you want

#

then you can multiply each value by a number from 0-1 to change lightness

#

maybe

weary jungle
#

how do cards move

stiff locust
weary jungle
#

like from point a to point b

#

who i s jared

rough furnace
#

probably just get their coordinates updated

stiff locust
rough furnace
stiff locust
#

yeah well i'm colorblind this is

weary jungle
#

so this is something with love2d?

stiff locust
#

entirely out of my field

hardy viper
#

engine/moveable.lua

hardy viper
#

iirc

weary jungle
#

ok omw

rough furnace
#

Seems to be (This is halved from the old values)

stiff locust
#

what does this look like with the color code

rough furnace
#

like the hex one?

stiff locust
#

no like in the balatro code

#

i don't understand how to connect this to the timers

wintry solar
#

It saves the colours as rgb values in a table, so you can just modify each value in turn

rough furnace
#

well the colour is an object with 3 values that corrispond to R G and B

#

so you can just modify the numbers in there

wintry solar
#

If you’re iterating though, make sure you stop at 3, iirc they actually do have an alpha value as well

stiff locust
#

so that's what the

hardy viper
stiff locust
#

these values are right

hardy viper
#

no im not asking

#

there is

stiff locust
#

oh that's convenient

rough furnace
#

why was there a question mark then

hardy viper
#

lighten/darken(color, num [0-1])

hardy viper
stiff locust
#

how do i put this into the timer

rough furnace
rough furnace
weary jungle
#

hmmm... yes of course (i am too dumb to understand)

hardy viper
stiff locust
#

i just wanna say
from my perspective you guys have given me a 9 volt battery, a screwdriver, lego building instructions and a radiowave frequency and i have zero clue how any of this goes together because i'm kind of an idiot

wintry solar
#

That’s a bad analogy because none of those things do go together

stiff locust
#

well if i knew that they went together it would be a bad analogy because i'd be able to see how they go together

weary jungle
#

they do, you just got to try hard enough

hardy viper
#

e.g. ```
color = HEX("FF3B55")

[in card.update]
local newcolor = darken(color, (math.sin(love.timer.getTime()*10)+1)/5)

#

add an offset for each letter in the character if you want them to be on a wave

stiff locust
#

but then it'll just darken forever won't it

wintry solar
#

But the new colour should be saved in the colours table

rough furnace
hardy viper
#

also yeah

stiff locust
#

oh i see

#

so the base color should be the lightest on the palette

rough furnace
#

although this might not quite work for the colour as the ref would change (?)

stiff locust
#

that sounds cool

hardy viper
#

assign each character a different color reference and offset the time by a certain amount for each color

stiff locust
#

but how do I do that

hardy viper
#
color = HEX("FF3B55")
local color1 = darken(color, (math.sin(love.timer.getTime()*10)+1)/5)
local color2 = darken(color, (math.sin((love.timer.getTime()+0.1)*10)+1)/5)
#

color2 is always 0.01 seconds ahead of color1

#

i would experiment on desmos with this

stiff locust
hardy viper
stiff locust
#

oh god

#

that sounds

hardy viper
#

actually wait

stiff locust
#

annoying

hardy viper
#

im not sure if that'll update correctly

#

you'll have to test

elder vapor
#

trying to make it so the values of a joker increase by 5% when triggered but having an issue where it upgrades when it doesn't trigger

weary jungle
#

ive just made my first 2 patchs, hope i didnt break anything

hardy viper
#

lovely patches make me want to bash my head into a wall

weary jungle
#

ok it didnt do anything

#

awesome

elder vapor
weary jungle
#

man

hardy viper
#

😭

#

slight grammatical error

elder vapor
#

alongside the console when patches are being applied

stiff locust
#

name = "{C:goldcolor1}S{C:goldcolor2}p{C:goldcolor3}l{C:goldcolor5}i{C:goldcolor5}s{C:goldcolor1}h {C:goldcolor2}S{C:goldcolor3}p{C:goldcolor4}l{C:goldcolor5}a{C:goldcolor1}s{C:goldcolor2}h{C:goldcolor3}",

#

did I misunderstand this

#

or is this actually what i have to do

#

every single time i want to do this

hardy viper
#

err