#💻・modding-dev

1 messages · Page 210 of 1

distant grove
#

work

ivory coral
#

check 1x

distant grove
#

1x is actually normal

sturdy compass
#

so what I'm hearing is I can't have the cake and eat it too lmao

distant grove
#

unlike his fucking cousin 2x

#

hmm unsupported file format

#

HMMMM

ivory coral
#

ok wait this is a different error actually

distant grove
#

OH THANK GOD

ivory coral
#

check Jokers.png in the 2x

distant grove
#

FUCKING NO MORE 2x spelling mistake😭

ivory coral
#

make sure its not doing anything weird

#

if need be just remake it

distant grove
#

...

#

WHY THE FUCK

#

😭

#

TIFF IMAGE!??!?!?!

ivory coral
#

oh my god

distant grove
#

WHAT THE FUCK IS THAT

#

ALSO 1x

#

WHY GOD

#

WHY MEEE

ivory coral
#

what program did you make the images in

distant grove
#

let me check rq

#

krita

ivory coral
distant grove
#

idk how to do that in uhh krita

#

but let me check how fr

ivory coral
supple fractal
#

krita my beloved

ivory coral
#

for pixel art like balatro its great

distant grove
ivory coral
#

ah indeed oh well

distant grove
ivory coral
#

yeah krita should work well enough as long as your careful with the exports

supple fractal
supple fractal
#

when you are exporting the image from krita

#

down here

#

hit krita document and then type in png because like ten options show up

ivory coral
#

when saving the image in in krita i think you can just Save as > select .png > Save

supple fractal
#

that is true also

distant grove
#

chat this might be my insane arc

#

im actually going to smash my mac

supple fractal
#

don't do that

distant grove
#

ik

#

but like

#

fucking tiff image

#

than my folder is a png😭

ivory coral
supple fractal
#

yo anyway

distant grove
#

yea

#

also thanks for telling me how to do it

#

much appreciated

#

👍

#

now to see if it works!

supple fractal
#

why I pulled up was to ask for assistance in something akin to "I want a joker to have a 50% chance to kill a card when it scores"

#

how the hell do I do that because I am out here suffering in the trenches

supple fractal
ivory coral
supple fractal
#

I am simplifying for clarity because the ideal would be 1/6 chance on each trigger but 50% is easier to convey

ivory coral
#

if context.individual and context.cardarea == G.play first of all
then do an rng check and if it passes then mark it for death
then kill it in i think its context.final_scoring_step

distant grove
#

let me export pls kirta

#

pls 😭

distant grove
#

this to export yea?

supple fractal
supple fractal
#

although that is stupid

distant grove
#

k

ivory coral
distant grove
#

YES FINALLY BOTH PNGS

#

PLS GOD

ivory coral
distant grove
#

FUCKING FINALLY

#

LETS FUCKING GOOO

ivory coral
distant grove
#

after maybe 8 hours and not SEEING THOSE DUMB MISTAKES

#

MY LIFE IS COMPLETTETETTETETE

#

THANK YOU GUYS SO FUCKING MUCH😭

ivory coral
distant grove
#

you all derserve a nobel prize award😭

brave thunder
#

can anybody point me in the right direction for like where to even start with modding at all?
like is there some kinda starter tutorial or something?

distant grove
#

im so sorry for making you guys do all of that😭

ivory coral
supple fractal
supple fractal
distant grove
ivory coral
distant grove
#

funny cat

#

should uh hopefully help you

#

hope you dont run into the problems i faced man

#

im way too tired

#

you all have a good night

analog spoke
#

gn!

ivory coral
# brave thunder can anybody point me in the right direction for like where to even start with mo...
GitHub

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

GitHub

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

GitHub

Steamodded example mods. Contribute to Steamodded/examples development by creating an account on GitHub.

ivory coral
royal carbon
#

How do I go about increasing the rank of a card without having it loop around after ace? My current attempt is crashing and I have no idea why

brave thunder
ivory coral
royal carbon
#

It doesn't reach the "third check" print before it crashes but it does pass the other two

sturdy compass
#

v:get_id() instead of v.get_id()

brave thunder
ivory coral
cerulean rose
#

i don't think it works for non-modded ranks either

#

unless 2 is supposed to go to 4

royal carbon
#

Yeah it ended up upgrading twice but I fixed that part, it def doesn't work for modded ranks but I have no idea how to do that

brave thunder
#

ok so what do I put for the main_file in the metadata?

analog spoke
#

how would I get this effect to work? I'm currently using cryptids Gemini as a base, but there's some things I'm not sure how to do and some things I do know how to do
I do know = How to change the context to start of blind instead of end, Change the numbers so they increase by the new numbers
I do not know = How to make it select a random joker instead of leftmost, how to make the amount of jokers targeted based off a config var, how to make it randomly choose to give x1.25 or x0.75

ivory coral
#

so "<name>.lua"

brave thunder
#

ah alright

#

so it should look like this and then I put test.lua into the filename part of the metadata?

brave thunder
#

I assumed as much

#

IT APPEARS IN GAME

#

noa actual content but its progres lol

sturdy compass
#

Visual Studio for json editing? That's quite a choice

brave thunder
#

I use visual studio for almost all my text editing

#

is that bad?

sturdy compass
#

I will highly recommend Visual Studio Code for Balatro modding (or any variant of that IDE)

runic pecan
#

How to abrupt a sound during playing?

ivory coral
brave thunder
spring marsh
#

i'm gonna crash out every time a new steamodded version comes out since that would mean i would have to put in extra work to make the code compatible with it

ivory coral
#

also theres yt tutorials

sturdy compass
#

damn you were faster

ivory coral
#

the examples can give you direction though

ivory coral
sturdy compass
#

apparently so

novel violet
#

also recommend looking at the source for other people's mods

#

can be incredibly helpful for understanding how their code translates to a functional joker

brave thunder
#

I'm wanting to do consumables rn

#

idk if those are easier or harder then jokers

novel violet
#

most assuredly not harder

#

but that depends on what you want to do

brave thunder
#

what I wanted to try was making a spectral
ouroboros - select 2 jokers, make the left joker eternal, and the right joker perishable

#

probably could be balanced better or changed a bit but I just wanted to try this idea

#

idk how difficult stickers would be though

#

or are they counted as seals?

chrome widget
#

Hey, does anyone here have any familiarity with the base pseudorandom code?

rough furnace
#

I have a bit

chrome widget
#

The vanilla pseudoseed function has an optional param for predict_seed, and without comments, I'm not certain if it means it's literally just returning the result of the next seed hash for the base key, or if it's something else entirely

  if key == 'seed' then return math.random() end

  if predict_seed then 
    local _pseed = pseudohash(key..(predict_seed or ''))
    _pseed = math.abs(tonumber(string.format("%.13f", (2.134453429141+_pseed*1.72431234)%1)))
    return (_pseed + (pseudohash(predict_seed) or 0))/2
  end
  
  if not G.GAME.pseudorandom[key] then 
    G.GAME.pseudorandom[key] = pseudohash(key..(G.GAME.pseudorandom.seed or ''))
  end

  G.GAME.pseudorandom[key] = math.abs(tonumber(string.format("%.13f", (2.134453429141+G.GAME.pseudorandom[key]*1.72431234)%1)))
  return (G.GAME.pseudorandom[key] + (G.GAME.pseudorandom.hashed_seed or 0))/2
end```
#

b/c predict seed is not a boolean, it's being concatenated into a string, so it's supposed to just be another value that it also calls pseudohash on

#

And afailk, predict_seed is not actually used anywhere in the vanilla code

#

So I don't have anything I can blatantly steal from

rough furnace
#

looks liek get_first_legndary uses it

#

looks like you pass it the seed (?)

#

which makes sense since these 2 blocks are very similar

sturdy compass
#

I have ideas in mind on how you could implement it so if you need any assistance, I would be happy to provide

chrome widget
#

hmm, I see

brave thunder
#

ok so I saw these in the card.LUA file of the balatro source code
I'm assuming these are the functions that apply eternal and perishable to a joker when it appears in shop?

#

yeah I actually have no idea what I'm doing

sturdy compass
chrome widget
#

Otherwise the code is identical

#

Nope, doesn't seem to work. foiled again

analog spoke
runic pecan
#

How to make a joker play certain sound when hovered by mouse?

chrome widget
#

VSCode users, how do you turn off the little tooltips that tell which contributors recently changed certain lines? Or at least move them?

#

Having the little buffer between lines rlly bugs me

rose dragon
rough basin
#

hey yall, does anyone know of a way to check if a joker has destroyed itself? im trying to make a joker that buffs itself when another joker gets destroyed, like if gros michel or cavendish die, or if ramen runs out
im trying to make sure it doesnt apply to selling the joker but im not fully sure how

rose dragon
rough basin
#

ill look through the source code, do you know which .lua file has these?

rose dragon
rough basin
#

aight thank you!

tall tangle
chrome widget
#

Save the last hover value each update, and then when it switches between true and false, you know hover has started or stopped

runic pecan
#

Which one looks better?

nocturne garnet
runic pecan
rose dragon
runic pecan
#

This is called "Gomoku", it's like connect-four but five and no gravity and 19x19 grid.

lyric wadi
#

i think i like the former one

#

the one with the letters on the stone

#

while that's going on i also would like more onions on this

#

you're slowly upgrading a card, but you're upgrading it by discarding it

#

so you cant actually use it during the blind you upgraded it

runic pecan
lyric wadi
#

yeah it is intended to be slow

#

cuz if you play every blind, you will have decent chunk of upgraded cards

#

but also it eats 1 discard and the reward is delayed

calm dock
#
    update = function(self, card, dt)    
        if G.Jokers then    
            if #G.jokers.highlighted >= 1 then
                card.ability.extra.msg = union_check(self, card, area) 
            else 
                card.ability.extra.msg = "No Jokers found"     
            end      
        end
    end,

This seems to work fine within a consumable to work outside a run (Collection Menu) and within a run.
But if I apply it to a Joker card, it never seems to see G.Jokers as true.

Suggestions for another approach?

manic rune
#

G.jokers

#

not G.Jokers

sturdy compass
#

Oh man here's a fun one. I have a set of consumables that all have this "succeed" function attached to them that I created. Each card in the set calls this function whenever they meet a goal. This happens just fine in a vacuum, as they call "self:succeed(args)" locally. Now I'm trying to make a Spectral card that calls this function on one of these cards externally, which is causing the following crash. Any ideas?

calm dock
manic rune
#

huh

#

didnt know they work the same

sturdy compass
#

they shouldn't, G.jokers is case sensitive

rough furnace
faint heron
#

how does "tagging" a card to be destroyed work? I am trying to have a joker that has a chance to destroy a card played, but I can't quite seem to figure out how to destroy the card. I see some post mentioning you have to tag the card first to be destroyed, but im not quite sure how i would do that

rough furnace
#

either

G.mxms_horoscope.highlighted[1].config.center:succeed(G.mxms_horoscope.highlighted[1])
``` or if you have the reference from the defintion 
```lua
definition:succeed(G.mxms_horoscope.highlighted[1])``` should work
sturdy compass
#

ah gotcha. plenty thanks

calm dock
runic pecan
#

If I use SMODS.Joker:extend, can I change the prefix that'll be added before the key I set?

#

Like instead of j_[modpref]_[key] I want j_[modpref]_[extendpref]_[key].

tall tangle
#

(Dirt cards are the ones that permanently gain +4 Mult when discarded)

tall tangle
#

That's... what I sent.

#

are you on mobile?

rose dragon
#

no like the code that is crashing?

tall tangle
#

I literally sent the entire crash dump

#

I have no idea what I'm looking at.

#

I have exactly zero programming anything in this dork-ass head that has somehow managed to stay attached to my needlessly feeble shoulders.

halcyon osprey
#

tryna make a patch to increase playing slots from 5 to 6, will be affected by a joker but atm i just want to see if i can make it 6, and this is my first patch so idrk what i am doing that much

tall wharf
#

:3

rough basin
#

hey all, could someone help with what's wrong in this code? if the key of the joker being dissolved is in the list AND another joker is present i want that joker's xmult to multiply by 50, but not totally sure what's going on here. im not getting a crash either

#

couldn't send in a message, too long

halcyon osprey
#

i also got this here lol

#

seems like i was on ther right path

tall wharf
halcyon osprey
#

why does the game bully you

#

😭

tall wharf
#

im just trying to hook

halcyon osprey
#

custum variabled my belothed

rough furnace
rose dragon
manic rune
#

probably handy

#

hold right click and hover to cards = select

faint heron
#

I am working on a second joker, whats the proper pixel spacing so the second joker shows up from the sprite sheet? i would figure {x = 72, y = 0} since the size of jokers, but that doesn't seem to work. the second joker ends up not showing up in game at all

tall wharf
lucid sun
#

hey sorry for the ping, tried to figure this out today but couldnt figure out an earlier context that helped. on the brightside i got to clean up the code a lot lol

lucid sun
#

yeah what bepis said

manic rune
#

think of the pos in SMODS.Joker, as like, uhh

x = 1, y = 0
=> x = 71 * 1
y = 95 * 0

faint heron
#

Ah, so it goes off of cell size rather than pixel size essentially?

manic rune
#

mhm

#

you already set the pixel size in the atlas

rough basin
#

quick question; i've hooked into Card:start_dissolve
i want to get the key of the card being dissolved. how would i do that? im not exactly sure what start_dissolve is taking

#
local hook = Card.start_dissolve    

function Card:start_dissolve(dissolve_colours, silent, dissolve_time_fac, no_juice)
    local ret = hook(self, dissolve_colours, silent, dissolve_time_fac, no_juice)
    safe_list = {"j_gros_michel", "j_egg", "j_ice_cream", "j_cavendish", "j_turtle_bean", "j_diet_cola", "j_popcorn", "j_selzer", "j_ramen"}
    for index, value in ipairs(safe_list) do
        if self.key == value and next(SMODS.find_card("j_skill_gluttony_joker")) then
            joker_glut = (SMODS.find_card("j_skill_gluttony_joker"))[1]
            joker_glut.ability.extra.Xmult = 10
        end
    end
    return ret
end
#

my code looks like this

manic rune
#

since "self" in this case points to the card

rough basin
#

okay so its not pointing to the center

#

gotcha

#

nope, still doesnt seem to be working

#

ideally this should set the mult of the gluttony_joker to 10 when the card gets dissolved

rough furnace
#

the key would be self.config.center.key

manic rune
#

oh

rough furnace
#

no the name is not the key

manic rune
#

since my code does that, am i cooked 💀

rough furnace
#

smods by default makes them the same iirc but vanilla jokers don't have the same key and name and mods can change the name

rough basin
manic rune
#

ohhhhh

#

yeah, that makes sense

rough furnace
#

You shouldn't use names

#

as they aren't guarnteeded to be uniquer

rough basin
#

okay gotcha

#

using IDs should be the way to go

manic rune
#

damn, im rlly cooked 😭

rough basin
#

arghhh its still not working

#

maybe the food jokers use card:remove?

rough furnace
#

I think so

#

well

manic rune
#

whats the uhh

rough basin
#

i mean my base code is correct so all i have to do is just hook a different thing id hope

manic rune
#

hotkey on vsc to replace all word with smy

#

smt

rough furnace
#

remove will be called always when removing

rough basin
#

will remove trigger on selling as well?

rough furnace
#

wait

rough furnace
rough basin
#

oh god

#

would there be any like. way to tell in the remove function if its being called on a sell or a main menu thing

rough furnace
#

this is what popcorn does

zealous glen
rough basin
zealous glen
#

Well, selling others

manic rune
#

how do i change this entire highlighted part and not just the "ability" part

zealous glen
rough basin
#

might check that out then

wintry solar
#

you can just do self.config.center_key

tall wharf
manic rune
#

oh its ctrl + shift + H

#

surely this wont break anything

zealous glen
manic rune
#

:3

tall wharf
#

:3

#

also

tall wharf
#

@manic rune

manic rune
#

wait hol on i got the perfect image for this

#

thats brutal though, what the hell 😭

tall wharf
manic rune
#

jesus

tall wharf
zealous glen
#

The Wrong Video Picker

scarlet spire
#

x4 is probably temp, and the (true) is temp until I can figure out how to make that look good, but how's this for an enhancement mechanic

#

luckily this logic is already built in with the pillar, only had to do a bit of jank to get it to not count playing it as playing it in the ante, and instantly destroying itself

wintry solar
#

you could do this with an internal flag too

scarlet spire
#

you're right it probably would have been easier to just set a value on the card instead of using the pillar's logic

wintry solar
#

especially if the pillar stuff changes them before the effect is evaluated

scarlet spire
#

it does, yeah

#

I don't know why I didn't think of that.

#

i'll probably refactor it later

zealous glen
#

I think I had to take ownership of the Pillar

wintry solar
#

you could also give it a visual change

zealous glen
#

To fix a bug introduced by another change I made

scarlet spire
#

also, is it possible to send custom parameters for context.destroy_card's dissolve? I believe start_dissolve allows you to set stuff like dissolve time and dissolve color, but context.destroy_card just allows you to return remove = true

zealous glen
#

Otherwise Pillar would be debuffing cards played during it

#

tl; dr: this whole system is a bit janky IMO

wintry solar
#

it's not possible

scarlet spire
#

welp. patch time

merry raven
#

I do wanna create a particle effect for Stickers, but it doesn't support on_remove, on_apply and on_load like Editions do. What can I do? It does spawn particles but it's rapidly spawning them, creating a mass of particles that covers the entire card and lags the game

wintry solar
#

I could maybe make it so you can define a standard dissolve time and colour on the card that it would look at, that would probably be cleaner than trying to return the information I think

scarlet spire
#

oh, could be nice

rough basin
#
    calculate = function(self, card, context)
        safe_list = {"j_gros_michel", "j_egg", "j_ice_cream", "j_cavendish", "j_turtle_bean", "j_diet_cola", "j_popcorn", "j_selzer", "j_ramen"}
        if context.removed and not context.blueprint then
            for _, v in ipairs(context.removed) do
                for _, value in ipairs(safe_list) do
                    if v.config.center.key == value then
                        if #context.selling_card > 0 then
                            for _, carde in context.selling_card do
                                if carde.config.center.key == v.config.center.key then
                                    card.ability.extra.Xmult = card.ability.extra.Xmult
                                else
                                    card.ability.extra.Xmult = card.ability.extra.Xmult*10
                                end
                            end
                        else
                            card.ability.extra.Xmult = card.ability.extra.Xmult*10
                        end
                    end
                end
            end
        end

ive got this uh, beauty of a calculate function. doesnt seem to work though! am i just messing up the key values again because i feel like i am

wintry solar
#

you're combining different contexts

rough basin
#

i gotta separate them then? maybe keep track in a variable in the function then

wintry solar
#

contexts are independent of one another, if you're check for context.removed you will never have context.selling_card

rapid stag
#

@wintry solar do i HAVE to manually define every keys table in an alttexture or should this have worked?

rough basin
#
    calculate = function(self, card, context)
        safe_list = {"j_gros_michel", "j_egg", "j_ice_cream", "j_cavendish", "j_turtle_bean", "j_diet_cola", "j_popcorn", "j_selzer", "j_ramen"}
        if context.removed and not context.blueprint then
            for _, v in ipairs(context.removed) do
                for _, value in ipairs(safe_list) do
                    if v.config.center.key == value then
                        card.ability.extra.bonus = card.ability.extra.bonus*10
                    end
                end
            end
        end

this still isnt working, am i just messing up fetching the cards key?

faint heron
#

Thoughts on this joker? Its supposed to be in reference of the marksman gun from ultrakill. I am still working on my pixel art skills so its not the most prettiest of cards, but I think the main point gets across. Also does it seem balanced? I want it to be vanilla-esc

wintry solar
manic rune
#

how do i unhighlight a card in hand through code

#

(i forgor)

crisp coral
manic rune
#

o

#

thanks :D

rough basin
rapid stag
# wintry solar this looks like you are creating a list of keys manually in a convoluted way, ca...

i am creating the full list of joker keys manually once in a lua file as part of a table, in a pair with a boolean value, so that i do not have to manually define the keys twice in the alttexture with minor differences.

i am then making two tables based off that pairs list - one that contains all of the uncommented keys regardless of the state of the boolean and one that only contains the uncommented keys where the boolean was true.

then, i populate two different alttextures with the correct information, each pointing to their respective assets and supplying the table that had only all uncommented keys to one, then the table that had the filtered keys to the other (with the only keys being filtered out here being burglar, todo list & diet cola).

the result SHOULD have been two working alt texture blocks (not intended to be enabled together, but either/or) - one that replaces with all of the keys, from its asset and one that replaces with all but the 3 filterd keys, from its asset.

what i instead got was, the first one worked fine, as expected. the second one, for some unknown reason, would not replace DNA, hiker, baseball card, popcorn, seltzer and cavendish, but replaced all other jokers in its table normally from its asset as expected.

i have checked both tables that it creates and both are correct. the assets are correct. except for what it is not doing correctly, it is doing correctly. i don't understand why it's not replacing the specified jokers despite their keys being present.

zealous glen
faint heron
#

I pictured my joker working like baron but with gold cards, I might have worded it wrong

tall tangle
#

Bro made Gold cards Silver

zealous glen
plush cove
zealous glen
#

My personal opinion is if either the flavor or the effect is different then it’s not a big deal if the other matches

#

another mod’s

tall tangle
#

(Silver is an extremely conductive metal, kinda like steel but also not like steel because silver is worlds better at conducting than steel)

zealous glen
#

The silver train conductor

#

The steel orchestra conductor

manic rune
wintry solar
#

I imagine it's because you're assigning them to the i position in the table, so when it hits a gap it will stop iterating because of how lua works. Use table.insert(table, key) instead and it should work

faint heron
manic rune
zealous glen
manic rune
#

kinda wanted it to turn into gold cards before the cards got reflipped

#

odd

zealous glen
#

The loops could be one

#

And you could maybe put the transformation into its own event followed by a delay

manic rune
#

i tried to put it into an event between the two loops too

#

but same results

zealous glen
#

Did you add a delay

#

Like delay(x)

manic rune
#

yeah

#

i tried both 0.1 and 0

zealous glen
#

Try more

#

delay(1)

manic rune
zealous glen
#

Not delay = x

#

delay(x)

zealous glen
manic rune
#

do i do this or put those outside the event part entirely

wintry solar
manic rune
#

sooo this?

zealous glen
#

set_ability still in an event

manic rune
#

oh

#

ohhhhhhh

wintry solar
#

set ability out the event will work with the delay

manic rune
#

yeah that makes sense, i think i understand it now, thanks

zealous glen
#

AFAIK delay creates a trivial Event that takes up time and doesn’t do anything else

zealous glen
manic rune
#

yeah it works now, i removed the delay part

wintry solar
faint heron
#

how would you go about making the green chance text? like the "1/3 chance"

manic rune
#

i initially had the impression :set_ability just instantly changes the card's enhancement lol

wintry solar
#

it does

manic rune
#

didnt know its an event of its own

wintry solar
#

but it has an optional delay argument which will delay the visual change

manic rune
#

hm

faint heron
merry raven
#

Oh hey I've been trying to figure out proper flipping and enhancement changes too
Bepis if you wouldn't mind could you send footage/your fixed code so I can reference it haha

zealous glen
#

{C:green}

merry raven
#

Cheers

#

Huh I've never seen add_to_highlighted and remove_from_highlighted

manic rune
#

oh yeah, you see how the card pops up in the video?

#

the highlight functions are to make them look like that (fuck my grammar ❤️)

merry raven
#

Siiiiiick

zealous glen
#

It also selects them

manic rune
#

yes, but that shouldnt matter since its before scoring and immediately reverted after the events are done

merry raven
#

Yeah I've been keeping an eye out of how people do their card effects and timing

#

There was one where the cards turn into gold at the same time they get scored
Was it you

manic rune
#

uh, nop

merry raven
#

Ah

runic pecan
#

Can a joker copy effects of more than one joker?

wintry solar
#

like blueprint style?

runic pecan
#

like blueprint, but any joker you have that fit some condition.

wintry solar
#

you can do SMODS.calculate_effect(SMODS.blueprint_effect(card, blueprint_card, context), card)

#

where you replace blueprint_card with whatever card you want to copy

runic pecan
#

And do a for loop through G.jokers.cards?

rapid stag
#

is there a more efficient way to do something the way poll_edition() works?
like let's say, i want something to occur with a 30% chance.
then if that doesn't happen, something with a 20% chance.
then further, another thing with a 10% chance. cirThink
the thing in particular could be anything. in fact, this example could just be a function call on proc. function A, B, C, etc.

manic rune
#

you could make a function of your own for that matter, i think?

wintry solar
wintry solar
#

either throw it all in a function or use an if-else chain

#
if first_prob_check then
  -- do stuff
elseif second_prob_check then
  -- do other stuff
elseif
  -- etc
end```
rapid stag
#

i see. thanks!

runic pecan
#

Should I remove the "no discard" part or leave it there?
Also which rarity should this joker be?

manic rune
#

if i were to put a card in a table, but that card in game has its enhancement changed, will the card in the table be invalidated?

runic pecan
manic rune
#

yeah, that makes sense

#

hm

nocturne garnet
#

do yall know how to check if you have completed a stake on any deck

#

i forgot how

#

wait no i never knew

maiden phoenix
#

Tsunami mod has an effect that changes depending of the stake sticker on Splash

nocturne garnet
#

thanks sdm

runic pecan
manic rune
#

will this return the new cards whose enhancement has been changed?

wintry solar
#

just return other_card

#

you dn't need another table

manic rune
#

oh, got it

wintry solar
#

although you probably don't even need to return anything here

rose dragon
#

why is this crashing?
(pre == joker card to be triggered, card == blueprint-like card)

wintry solar
#

oh that'll crash if the card doesnt return anyhting, hold on

#

try lua local ret = SMODS.blueprint_effect(card, blueprint_card, context) if ret then SMODS.calculate_effect(ret, card) end

rapid stag
#

oh right whoops, i never responded to this.

i just basically want to know what importance the return value of calculate() has - like if i write return nil, true in a joker's calculate(), i actually have no idea what that's doing when it hits it and i feel like that might be important for any present or future functionality i may want to write

tall wharf
#

is there a way to juice up blind requirements to tell the player that it changes

frosty dock
runic pecan
frosty dock
#

if you return a table, that's any effects to be evaluated

manic rune
#

hand size 50 is crazy

rapid stag
frosty dock
rapid stag
#

...didn't see that the first time i saw this page cirDerp thanks

manic rune
#

my joker turns cards into gold, and turn them back to normal at end of round

however, currently facing an issue where the gold cards dont get to trigger, and instead turned to normal cards immediately, is there a context for this?

zealous glen
#

Just the part they turn back

#

Probably not in an Event

manic rune
#

hm

#

so uh, this?

#

nop

#

it still reverts back to base cards before the gold cards effect triggers

#

should i be checking states for this one instead

zealous glen
#

Maybe in an Event then

manic rune
#

nope

nocturne garnet
#

does locked_loc_vars not allow colours....

manic rune
#

a bit inexperienced about these stuff, does this make it so that if after is true then trigger = "after"?

manic rune
#

nice, thanks

nocturne garnet
#

nvm its not that

#

wtf

#

am i being stupid or something

maiden phoenix
#

Check sixth sense joker

manic rune
nocturne garnet
spring lantern
#

G.C.SECONDARY_SET.Spectral

manic rune
#

if you ignore the weird sounds then i think its fine ❤️

spring lantern
#

SECONDARY_SET has text colors for all card types

nocturne garnet
#

why are they different]

#

also problem persists

nocturne garnet
#

you're SUPPOSED TO WORK

spring lantern
#

oh wait

nocturne garnet
#

does locked_loc_vars not accept colours???

spring lantern
#

the colours table goes inside vars

nocturne garnet
#

WHat

spring lantern
#

don't ask

#

it's just like that

nocturne garnet
#

oh my god you're right

#

why is it like that 😭

spring lantern
#

not sure

#

something about the inner workings of loc files/the loc system

nocturne garnet
maiden phoenix
#

Ah crap I forgor you had spectral named Bind..

#

Same consumable name across multiple mods sounds weird

nocturne garnet
#

i havent even released it yet

maiden phoenix
#

Maybe but it still doesnt feel right to me even if I'm told to 😭

#

Unless I did it first then its the other's fault

nocturne garnet
#

i mean since i havent released it yet

#

technicall you'll have done it first

maiden phoenix
#

I havent either

nocturne garnet
#

dang

maiden phoenix
#

So what do we race or something

foggy carbon
#

it doesn't matter because smods mod prefixes

maiden phoenix
#

Oh no its not a coding problem

nocturne garnet
#

it just feels wrong

maiden phoenix
#

Yea

nocturne garnet
foggy carbon
#

But maybe there should be a way to, like, detect if the same name exists and then have Smods label them as "Bind (SDM)" and "Bind (elail)" or whatever your mods are called

maiden phoenix
#

Im not gonna race you Ill just change the name

maiden phoenix
foggy carbon
#

true

nocturne garnet
#

its fine anyways

foggy carbon
#

I'd say try to stay close to Bind to prevent an edit to the non-text part of the sprite

spring lantern
#

what about chain

foggy carbon
#

Clasp

maiden phoenix
spring lantern
#

as literal as can be

maiden phoenix
#

Pinned already exists

#

Would be kinda weird

foggy carbon
#

yeah but doesn't it only exist for that one challenge with the dagger?

crisp coral
#

still exists :p

maiden phoenix
#

In vanilla yea

foggy carbon
#

Or Staple

maiden phoenix
#

Gonna call it "Goku trapped in the time chamber" problem solved balatrojoker

foggy carbon
#

lol

tall wharf
#

Pinned but to the right when

maiden phoenix
#

Pinned to the right blueprint balatrojoker

tall wharf
#

let's go

#

pinned to the left brainstorm

#

wait is pinned supposed to have a sticker

maiden phoenix
#

Not in vanilla

#

Cryptid adds one

foggy carbon
#

I think it does have a sprite sheet area designated for it, but that area is blank

tall wharf
#

pinned playing cards

#

even tho in most cases it doesn't matter

#

in my mod it does

maiden phoenix
#

Pinned letter cards

tall wharf
#

true

maiden phoenix
#

Oh evil

tall wharf
#

that's a good boss blind idea

maiden phoenix
#

Mfw the pinned letter is Y

tall wharf
#

I'll add it tonight

tall wharf
#

yatch

#

or whatever

foggy carbon
maiden phoenix
#

Ante 7:

tall wharf
#

yellow

tall wharf
foggy carbon
#

yellow is too long?

tall wharf
#

yesterday

foggy carbon
#

you can do more than five cards?

maiden phoenix
#

Yodeleiou

frosty dock
#

kid named card selection limit:

tall wharf
foggy carbon
unkempt thicket
#

I've done it with lovely patches

frosty dock
#

would be boring for it to only do <=5 letter words

tall wharf
#

exactly

foggy carbon
#

Also, IIRC there are some mods that allow stickers on cards. Would eternal glass never break?

crisp coral
#

no

tall wharf
#

would it not be fun if you have to spell the word thyme every time you play this

foggy carbon
#

Okay, fair lol

#

but is it like, does it generate the puzzle from the solution?

tall wharf
#

?

foggy carbon
#

or do you just have a set of pre-determined puzzles

tall wharf
#

have you played wordle before

foggy carbon
#

I have (and now I wonder if you do the high-contrast mode based on Balatro settings)

#

are you implying that the stuff listed there is previous hands?

tall wharf
#

yes

#

might have to add colour blindness mode

foggy carbon
#

and just tie it to the existing high-contrast setting

#

IIRC Wordle already has a colorblind mode so you can just use those colors

tall wharf
#

i still need to finish this for the mod manager

#

which is why I've been adding features recently

#

right

#

I was gonna make the puzzle blinds square

#

why did i forget

#

in my head all the letter related blinds should be written in kanji

lucid sun
#

i want to make a joker that stops food jokers from deteroriating, do I need a patch for this? I don't want to take ownership of the food jokers

tall wharf
#

this is truly cryptid moment

timid star
#

how hard is it to store another playing card's data into an enhancement

#

cant just use copy_card...

ivory coral
worthy stirrup
#

How do I make an event and call for it?

#

Okay, i found how to do it, but i dont know where to begin with converting this calculate to an event, any help is appricated.

  calculate = function(self, card, context)
    if context.after then
      local valid_suits = {}
      for k, v in ipairs(G.playing_cards) do
          if v.ability.effect ~= 'Stone Card' then
              valid_suits[#valid_suits+1] = v
          end
      end
      if valid_suits[1] then 
          local SuitPicked = pseudorandom_element(valid_suits, pseudoseed('Flote'..G.GAME.round_resets.ante))
          card.ability.extra.ChangeSuit = SuitPicked.base.suit
          for k, v in ipairs(context.scoring_hand) do
          SMODS.change_base(v, card.ability.extra.ChangeSuit)
      end
    end
  end
end,
G.E_MANAGER:add_event(Event({
  trigger = "after", 
  func = function() 

  end
}))
#

wait

#
G.E_MANAGER:add_event(Event({
  trigger = "after", 
  func = function(card, context, self) 
    local valid_suits = {}
    for k, v in ipairs(G.playing_cards) do
        if v.ability.effect ~= 'Stone Card' then
            valid_suits[#valid_suits+1] = v
        end
    end
    if valid_suits[1] then 
        local SuitPicked = pseudorandom_element(valid_suits, pseudoseed('Flote'..G.GAME.round_resets.ante))
        card.ability.extra.ChangeSuit = SuitPicked.base.suit
        for k, v in ipairs(context.scoring_hand) do
        SMODS.change_base(v, card.ability.extra.ChangeSuit)
    end
  end
end
}))
}
#

would this work

#

sorry for covering what you asked

#

i didnt get to see ur name

runic pecan
#

Nah, I should be the one apologize for interupting.

worthy stirrup
#

i unlocked a new crash color

#

i aint seen pure black yet

#

heres the code

#

heres the crash log

#

i think i may of fixed it

#

okay, no crash but it doesnt change the suits now

#

do you have to call for the event or what

#

i think i need to return true

runic pecan
worthy stirrup
#

"Every scored card switches suit after scoring",
"{C:inactive} (Only changes to suits in deck)",

#

heres all the code if you want it

runic pecan
worthy stirrup
#

yes

#

this is mostly because i didnt want to pick a new suit for every card lol

runic pecan
# worthy stirrup yes

And the probability will be proportional to the amount of cards with each suit, is that right?

worthy stirrup
#

I think thats how the code does it, i just have it chosing ones availible in the deck

#

it shares the code of Idol

runic pecan
#

I think you can access v.base.suit instead in your ipair(G.playing_cards) for loop.

worthy stirrup
#

ill try that, thanks

#

wait, im a bit lost, sorry, what am i replacing exactly, i know its the loop but i dont think i should be doing

for k, v in v.base.suit
worthy stirrup
#

yea, but i still am new to lua a bit lol

runic pecan
#

This is the balatro code for suit changing tarot cards:

worthy stirrup
#

wait, sorry, where am i getting V from

runic pecan
#

Only SMODS.change_base needs to be wrapped inside Event.

worthy stirrup
#

ohh right

runic pecan
runic pecan
# worthy stirrup

Also, use not SMODS.has_no_suit(v) instead of v.ability.effect ~= 'Stone Card' in case there are other modded suitless enhancement.

worthy stirrup
#

so wait, like this?

runic pecan
# worthy stirrup

Closer, but wrap the G.E_MANAGER on SMODS.change_base instead of everything.

worthy stirrup
#

wait, should the G.E_Manager be in calculate?

runic pecan
#

What made you think it isn't?

worthy stirrup
#

i just didnt think it was tbh

#

it hasnt been in there the whole time tbh

#

so, that probably why it didnt work

#

let me test a few things and see if they work

runic pecan
#

Event manager is more like: "Hey, I need this function to run later -- but not immediately right now -- so put this on the schedule queue for me, please."

runic pecan
worthy stirrup
#

ive been reading it

#

i think i almost got it

runic pecan
# worthy stirrup

Wait, hold on.
This code layout is going to change the entire deck's suits.

worthy stirrup
#

not deck, only played cards

#

oh

#

heres the code

#

heres the crash log

nocturne garnet
#

Why He Lookin Like That

#

wait no i found out

runic pecan
# worthy stirrup Okay, i found how to do it, but i dont know where to begin with converting this ...

There, I rewrite a little:calculate = function(self, card, context) if context.after then local valid_suits = {} for k, v in ipairs(G.playing_cards) do if not SMODS.has_no_suit(v) then valid_suits[#valid_suits+1] = v.base.suit end end if valid_suits[1] then local SuitPicked = pseudorandom_element(valid_suits, pseudoseed('Flote'..G.GAME.round_resets.ante)) for k, v in ipairs(context.scoring_hand) do G.E_MANAGER:add_event(Event({ trigger = "after", func = function() SMODS.change_base(v, SuitPicked) return true end })) end end end end

worthy stirrup
#

Thank you, I’ll try it as soon as I can

runic pecan
worthy stirrup
#

Ive been meaning to tbh

nocturne garnet
#

wait

#

yeah no i dont get it

worthy stirrup
#

it works now, thank you

#

ill see if i can add the little card flip animation in the future

#

thank you again

#

okay, sweet, now time to see if you can have custom color text

#

i know you can have a custom badge color

#

this was just working but i seperated the 2nd line into both 2 and the 3rd and now growth is nil

quartz ravine
#

hi folks, is it possible for me to do a cry from my joker whenever I like? I see how I can do an acquire joker but I'm not sure how to make it emit sound.

worthy stirrup
#

i kinda forgot expo growth is... fast

bold sleet
#

-# why the heck is the blind's chips value inside 'G.GAME.blind.chips.array[1]'?

tepid crow
#

Talisman stuff

red flower
#

i love talisman compat

quartz ravine
#

I am doing all of this with log statements

#

What the heck? I definitely have the file there

quartz ravine
#

You are always so helpful, thank you!

quartz ravine
#

is there something special about registering sounds if you want to play them using this method?

play_sound("e_metsu", 0.85)

quartz ravine
#

ah, the problem is that play_sound depends on the prefix of my mod, which is set in either a conf or a .json file. My fix was to use change e_metsu to modPrefix_metsu

Time to send in a PR for that to the steammodded wiki! Thanks @earnest oracle for pointing out the error of my ways!

quartz ravine
#

Has anyone had success with changing the background color outside of the context of opening a booster pack?

I thought it would be cool if a joker could change the background color while it is applying a special effect

frosty dock
#

I forget that's not actually mentioned in the wiki

frosty dock
zealous glen
#

My mod and Bunco do it (I copied from Bunco balatrojoker)

#

Also Trance

minor furnace
#

can hooks be written for functions that aren't methods for a class?

zealous glen
#

Yes

minor furnace
#

I guess I'd just omit any reference to a class that's made in the sample hook template then

old rivet
#

how to use detailed tooltip in ui stuff

zealous glen
#

What do you mean

analog spoke
old rivet
# zealous glen What do you mean

like what should the detailed_tooltip field look like in config of a ui node
ik how to use tooltip but idk what's different in detailed_tooltip
does it have more options or something
smods wiki doesn't say much about it

faint yacht
zealous glen
nocturne garnet
tall wharf
#

@royal ridge hello uhm regarding how i can hook onto the end round button would this be correct

#

regarding not just yet mod

royal ridge
#

that would probably work?

tall wharf
#

it didn't 😭

#

end round button still disabled

#

maybe priorities ain't right idk

#

ok it worked i just had to have my mod priority be 100

analog spoke
#

here's the most recent crash, from before I changed "card." into "center."

#

I'll rerun it with both now, just to get a new crash log

maiden phoenix
analog spoke
#

ah ok! I'll try this

analog spoke
old bane
#

how does smods.drawstep work because i just keep getting errors about trying to use the field DrawStep (a nil value)

#

(i installed the latest dev version of smods)

analog spoke
#

I feel like I'm close to getting this working

#

*I would say I'm starting to get lua a bit more, but it's telling me a basic If is wrong 😭 *

old bane
analog spoke
#

oh looks like r_num isn't the right thing 😭

#

changed to psuedo random, but not sure if I used it right

frosty dock
#

if pseudorandom('some_unique_key') < 0.5 then

else

end

analog spoke
#

ok! everything seems to be working now, only thing left in order to get the joker working as intended is to make it repeat based off how many jokers it's supposed to select

dim lynx
#

what if i have turtle bean and a hand of 12 silver seal cards

analog spoke
old bane
#

Thoughts?

manic rune
#

need some shading on the bucket, but nice

old bane
#

i don't know if this really fits the style of tarot cards tho...

#

i think i just need to replace the color of the bucket with different ones tbh

#

so i can still shade but just with the tarot card colors

#

something like this but maybe less of the blinding background

dense vector
#

You could have the brightest color as an outline for the bucket

old bane
#

ooh interesting idea

dense vector
#

Wait that actually looks good

manic rune
#

what if the ink seeps into the bottom of the tarot card a bit too

#

uhh smt like this idk

unkempt geyser
#

Hello, could someone explain to me what i must add to my sound=SMODS.Sound to make it the only thing that being played ?

manic rune
#

-# open the curtain

do you mean, like, all the sounds and musics are turned off except for yours?

unkempt geyser
#

yes

old bane
manic rune
#

hmmmm i think its a bit too black, id go for something in the middle of the tarot's yellow and the ink black (idk what im saying 🗣️)

manic rune
#

-# (why are there so many pm agents here)

old bane
red flower
#

this is so nice

earnest oracle
tall wharf
manic rune
manic rune
unkempt geyser
red flower
manic rune
#

oh shit

#

gotta try that out

tall wharf
#

thank you whoever did that

old bane
#

lets goooo

manic rune
#

what the hell do you mean by that aikoyori

#

i saw that.

tall wharf
manic rune
#

aikoyuri

red flower
#

yuri!?

manic rune
#

yuri from ddlc

earnest oracle
# unkempt geyser I tried but I didn't understood how it work

i used this to replace the main menu track

    key = "opandorasbox_music_trippy1",
    path = "opandorasbox_music_trippy1.ogg",
        pitch = 1,
    select_music_track = function()
        return OpandorasBox_config.custom_music
            and not (G.booster_pack_sparkles 
            or G.booster_pack_meteors 
            or G.booster_pack 
            or G.shop 
            or (G.GAME.blind and G.GAME.blind.boss))
    end,
})```

but you can just use this iirc
```SMODS.Sound({
    key = "opandorasbox_music_trippy1",
    path = "opandorasbox_music_trippy1.ogg",
        pitch = 1,
    replace = "music1"
})```
manic rune
#

i think what they want to do is literally turning off all sounds

#

except for the ones they choose to play

unkempt geyser
#

I will try

tall wharf
#

honkai star rail

manic rune
#

:3

tall wharf
#

yu

manic rune
#

no

#

do not complete whatever i think you are saying, aiko

tall wharf
#

nayu

manic rune
#

bocchi :D

nocturne garnet
dim lynx
nocturne garnet
#

oh i forgor

dim lynx
#

its okay

nocturne garnet
#

it takes em from anywhere

dim lynx
#

whaaaat

unkempt geyser
analog spoke
#

the power of polymorphine
(may need to cut back it's power a little lol)

#

honestly, I think all I need is to make it not work on itself, I think, but that also defeats a lot of the fun of it, maybe make it only work on the amount of affected jokers somehow?

#

I mean, I knew it would end up being powerful when used right, but

manic rune
#

yall

forest ivy
#

why most of the mods require steammodded 1.0.0?

manic rune
#

ever heard of summoning playing cards straight from the void

mighty trench
#

Hello, dear modding chat. I am attempting to make my silly stinky little joker create a modded joker when specific ranks are played and it crashed my humble balatro with a "for" error. Please help should it not be a bother :3

manic rune
#

whats the crash log?

mighty trench
nocturne garnet
#

hell yeah

mighty trench
manic rune
mighty trench
# mighty trench

I'm a bit of a googoo gaga in terms of Lua so I don't really know what I'm doing in terms of the code

manic rune
#

....hm, i would normally be assuming its the for loop but it seems right

distant grove
manic rune
#

its telling the joker to uhh

#

have a pop-up message below it

#

it shouldnt be the issue here

distant grove
#

Ah okay👍

manic rune
#

real quick, can you try removing the for loop?

#

just for testing

mighty trench
#

from "For _, played card" to the end?

#

like the "end" right below

manic rune
#

oh wait, wait wait

mighty trench
manic rune
#
if context.before and context.cardarea == G.jokers and not context.blueprint then
    ...your code here, replace context.scoring_hand with G.play.cards
end
#

replace the whole block with that

#

put those inside

mighty trench
#

like this?

manic rune
#

yeah

#

i think that should work

mighty trench
#

I'll try it now and report back

manic rune
#

(fix the indentation of the if statement line btw, its just some visual stuff)

mighty trench
#

should I add another end at the end

manic rune
#

nope, thats enough

#

(i think)

mighty trench
#

I'll try it out

manic rune
#

oh wait, i think its missing an end

#

yeah, it is

mighty trench
#

added an end

#

IT WORKED

manic rune
#

nice

mighty trench
#

Thank you, Bepis Fever. I am in your debt

manic rune
#

no its fine 😭

analog spoke
#

how would I get the "5 more uses" part to work? Additionally, how would I get it to work without being increased by misprintization (value increasing effects such as itself)?

#

5 more uses is 5 blinds/triggers btw

#

misprintization is refering to cryptid's value increase effect btw

#

I really chose a mad effect to start this mod off with huh 😭

clear epoch
#

after the joker takes its effect decrement it by 1 and check if it's less than 1. if so destroy of debuff the card. as for the crypid effect maybe the mod has some sort of check implemented(like blueprint_compat in the base game), but i have no idea myself

#

better get searching for something like that i suppose

maiden river
#

is there a context (or combination of contexts, maybe) for cards drawn after playing a hand?

spring lantern
#

okay so i have a problem with crimson heart debuffing one of my jokers, which leads to a permanent hand size increase because the code that resets hand size after a hand is played doesn't run, kind of like a turtle bean type bug. anyone can think of a way to fix this?

wintry solar
#

context.hand_drawn

maiden river
manic rune
maiden river
#

guys I know how to read the docs 😭

#

where's that one gif

manic rune
#

this one?

wintry solar
#

You could maybe track the discard count and make sure it hasn’t changed

maiden river
manic rune
#

though, you could probably add a context for when you play a hand and set a var to true from there?

maiden river
#

oh true

spring lantern
spring lantern
#

i cant find it

wintry solar
#

There isn’t

manic rune
#

pretty sure there isnt

spring lantern
#

am i going nuts

#

help

clear epoch
#

and remove_from_deck?

spring lantern
#

i guess

clear epoch
#

pretty sure they have a from_debuff argument

#

pretty sure that's how vanilla handles it as well

spring lantern
#

actually shit this is exactly what i was thinking of

clear epoch
#

perfect now i get to

spring lantern
#

my brain is becoming a mushy substance

manic rune
#

yeah uhhhhhh

#

is there a way for the second psuedorandom roll to ignore the number which has already been rolled on top of there?

#

id prefer not having to put it in a loop 😭

spring lantern
#

remove the chosen card from allCards and then do the same thing again

manic rune
#

GOD DAMN IT ITS MY OLD CODE

#

ghhhh

spring lantern
#

hubba

manic rune
#

yeah, thanks tho

spring lantern
#

np

manic rune
#

this was my old code lmfao 😭

old bane
mighty trench
#

I've been struck with another issue...

#

I've specified this before my joker. I tried reading the Smods wiki and tried applying that

#

Whomever may be able to come to my aid, I would appreciate it greatly

manic rune
mighty trench
#

oh! I hadn't even considered that

manic rune
#

prefix_(sound name)

mighty trench
#

no quotations?

manic rune
#

you still need those

mighty trench
#

so I put the quotations AROUND the sound name

wintry solar
#

It’s also sound = “key”

mighty trench
#

whuh where do I put that

manic rune
#

oh wait, didnt realize you were running a function inside the return{}

mighty trench
#

is that unwise., gulp

manic rune
mighty trench
manic rune
#
return {
...
sound = "(your mod prefix)_comingout",
}

you can remove the play_sound

mighty trench
#

ohhh i see i see

#

so this SHOULD work

manic rune
#

yeah, pretty sure that should work

#

❤️

spring lantern
#

springly boobies 😭

manic rune
#

that is NOT boobies

#

😭

spring lantern
#

boob

#

oo

maiden river
#

4k

manic rune
#

caught in 3k99

fathom thunder
mighty trench
#

it didnt crash BUT it did not play the noise

manic rune
#

whats the better wording for this

mighty trench
#

"temporarily turn into Glass cards for the round"?

manic rune
#

never saw someone using "temporarily" in their mod before honestly 😭

#

but yeah, i think thats cleaner

mighty trench
#

maybe you can trim out the temporarily and keep it as "turn into Glass cards for the round"

spring lantern
#

probably just line break after the comma

clear epoch
#

this code is supposed to decrease a joker's xmult for each removed card from deck, and i wish to also make it visible(like how caino does it). the juice_up animation plays, but the return message does not. anybody know why?

manic rune
#

i want my description to be more like them lol

spring lantern
fathom thunder
clear epoch
fathom thunder
#

i see

spring lantern
#

ah okay

mighty trench
clear epoch
#

i wanted to make sure the if is not faulty

#

its not

#

it's 100% the return

manic rune
#

...

#

is this supposed to remove the card from the game?

spring lantern
clear epoch
spring lantern
#

the upgrade/downgrade message i mean

manic rune
mighty trench
#

ITS WORKING! MY SOUNDS ARE WORKING! THANK YOU, BALATRO MOD DISCORD

clear epoch
#

didnt solve it

spring lantern
#

weird

clear epoch
#

it just does not play

manic rune
#

💀

forest ivy
#

is it possible to identify the mod that crashes ur game using log ?

manic rune
#

50% of the time, yes

clear epoch
forest ivy
#

what are the 50%

manic rune
#

if you have talisman then it usually becomes significantly harder to trace down the source of the crash

#

-# i think

clear epoch
#

i am decently confident that that's what challenges use to ban cards

manic rune
#

im just selecting 2 random cards from my played hand

clear epoch
#

probably not them

manic rune
#

but again, this SHOULDNT interfere with anything, should it?

clear epoch
clear epoch
manic rune
#

G.play.cards

#

does it change the whole G.play.cards too

spring lantern
#

is it a copy of the table or a reference

forest ivy
#

like what in the world is this crash

manic rune
#

.

clear epoch
spring lantern
forest ivy
#

yep

manic rune
#

wait i just realized it, yeah, i think its the latter

spring lantern
#

happened to me too

forest ivy
#

i can delete it tho

manic rune
#

ghghgh

spring lantern
#

talisman saves scoring related numbers as tables

#

because of the whole big number structure it uses

forest ivy
#

and other mod's cant access scores because of that or smth?

manic rune
#

how do i create a clone table then, this?

#

i actually forgot how to do this

clear epoch
manic rune
#

you sound like a father having EVERYTHING in his basement, waiting to be used 😭 (in a good way)

spring lantern
#

you can make your mod talisman compat but you need to create a dummy to_big() function like this and then wrap all your numbers in it which is a bit of a pain in the ass but what can you do

#

to_big is basically the talisman func that turns normal numbers into weird big number table things

#

so if it exists, it runs that, if not it defaults to just returning the same value so it still works without talisman

sacred lily
#

can i get some help please

manic rune
#

ye

sacred lily
#

i've honestly not modded any game before so where do i start with this