#đŸ’»ăƒ»modding-dev

1 messages · Page 149 of 1

frosty dock
#

we patch with negative priority, so we're almost guaranteed to be patching exactly vanilla code. We change so much that we're close to guaranteed to break if the game updates a lot of its code anyways

viscid field
#

I think it'd be possible to make a mod that patches ALL the other mods' code and replace number operations with Talisman bigints

wild patrol
#

I've seen people do some pretty advanced things with smod

#

The game source code is all in plane text

frosty dock
#

yeah lovely by itself is already arbitrary code execution

viscid field
frosty dock
#

I've suggested wildcard targets to be added into lovely for 0.8.0 so this would also be possible

viscid field
wild patrol
#

I've done byte code before it's a pain honestly

viscid field
#

because it simply doesn't know what is a number and what is not

wild patrol
#

When I made a personal patch for Revanced

wintry solar
#

doesn't talisman already handle integer operations?

frosty dock
#

it's just comparisons anyway

viscid field
#

you can patch number literals to be bigints

wild patrol
#

Only time I've seen byte code used is mostly for patching a binary

frosty dock
#

if lua can parse a number comparison, so can I

viscid field
#

how would you patch this

#

mind you, lhs can be a string, or nil, or whatever

#

same with rhs

frosty dock
#

I don't need to

viscid field
#

if a mod comes around that uses such code

#

you can't patch it to use talisman

frosty dock
#

if there's a number literal being passed in, I'll catch it elsewhere

viscid field
#

talis_int == talis_int returns false

frosty dock
frosty dock
#

it has metamethods

wild patrol
#

I'm not saying that you shouldn't make this just saying that what you're making smod can probably already do and in a more simple to understand

viscid field
runic pecan
#

[Lua question]
Is this break breaking out of the if statement or the for loop?

viscid field
#

that's lua5.3

#

if can't be broken

#

LuaJIT has a special build flag to support overriding < and > with metamethods but not equality tests

#

even then you'll need to start replacing the luajit dll

frosty dock
#

I can think of a use case where you would need to check for equality on something that's a bignum anyways

frosty dock
#

it just can't compare numbers with tables

random sleet
#

someone should make a mod to fix talisman saves

viscid field
random sleet
#

because i dont want to be the one to make TalismanFixer

glossy stone
#

sorry guys, ik i havent worked on it in months so maybe none of you still remember, but literally all of original sound got wiped along with my laptop's ssd. rest in pepperoni

random sleet
violet void
glossy stone
frosty dock
viscid field
#

that's Lua 5.3

violet void
frosty dock
#

I am 100% sure it works, I've literally used __eq metamethods within balatro

glossy stone
#

gonna end it all now

#

i s2g

runic pecan
#

What is the lua equivalent of list.pop?

frosty dock
#

table.remove

violet void
viscid field
glossy stone
#

wait no

#

balala 6

crisp coral
glossy stone
crisp coral
#

Otherwise, yes, you're free to add your own mod if it's released

crisp coral
frosty dock
glossy stone
crisp coral
#

hold on sob

glossy stone
#

-# ANBY. DEMARA.

#

-# SILVER SOLDIER OR SMTH

viscid field
glossy stone
#

-# I MIGHT SKIP EVELYN

crisp coral
glossy stone
#

-# I KNOW YOU ARE

violet void
#

being banned before even knowing of the service is somehow funny

frosty dock
#

okay gotcha. but this is a completely made-up problem

glossy stone
viscid field
glossy stone
#

-# THEY FUCKING DRIP MARKETED PULCHRA NOT A DRILL

#

-# WAIT NO

runic pecan
#

Where can I find document explaining G.GAME.consumeable_buffer?

glossy stone
#

-# IMMA CHECK FOR MYSELF

#

wait no imma take this to dms

#

bye

crisp coral
#

true

viscid field
#

the "clearly" is not sarcastic and actually it is true that you can strip the second assigment, but if you know C, you would say this instead
"There seems to be no case where assigning to *x can make a difference, except if somebody did int* x; x = (int*)&x;, in which case there is actually a difference. However strict aliasing prohibits such code from being valid, and all in all we can elide the second assignment"

tender gale
#

how can I have different lua files for decks/jokers etc in my mod? is there an easy way?

viscid field
#

if you make other lua files not loaded by the loader then you can load() the auxiliary files yourself

tender gale
#

how

viscid field
#

you would

love.filesystem.load("mods/custom/aux.lua")()
#

(I'm not sure if smods allows the extension to be lua)

tender gale
#

thanks

viscid field
#

love.filesystem.load is relative to the data directory, where settings.jkr resides

misty cape
#

so this is how the game enables/disables HC colors. How would i implement this in to refresh/check/toggle it on game launch ?

wintry solar
tender gale
#

thanks, i'll try it

viscid field
frosty dock
#

it can though?

#

again I wouldn't be trying to do this, I have no reason to. Talisman compat takes very little effort on the average mod's end

#

I'm just saying it's probably possible with Lovely given the addition of wildcard targets

frosty dock
#

-# talisman does this

random sleet
#

rip talisman

#

as soon as i can uninstall it im gonna this mod is cursed

#

baited into ruining my save file to try to make compat

frosty dock
#
eval G.PROFILES[G.SETTINGS.profile].career_stats.c_dollars_earned = to_number(G.PROFILES[G.SETTINGS.profile].career_stats.c_dollars_earned)
#

tis the only stat it actually invades

#

-# it was supposed to ignore it

random sleet
#

either i dont load talisman and cant load or i load talisman and it saves over that

frosty dock
#

just G:save_settings() after that

#

then disable talisman and reload

wintry solar
#

As someone who isn’t fond of big number go brrrrr thinking, talisman changing money and hand levels to big nums is something I’m not keen on

random sleet
#

yep im never touchjng it again

#

cant be bothered to keep decent precautions for shit like this

violet void
#

me neither, its less fun if you're op

random sleet
#

nd just arbitrarily change shit

#

overhauling how the entire game does math is a bit of a responsibility after all

#

if i cant trust that it wont break every five seconds im not usjng it

wild patrol
#

Only fun to be op after you've beaten the game

#

Which is why typically keeping mods off my main save

violet void
#

I started modding because I got stuck in orange stake in red deck 🙄

wild patrol
#

I'm stuck on the hex deck

#

Game absolutely refuses to give me good joker cards for my run

misty cape
viscid field
frosty dock
#

fair enough

#

I still don't see the practical need for this, we don't need a more invasive Talisman, if anything it should get less invasive

wild patrol
#

I don't see the point in this either seems like smod but with extra steps

#

Wouldn't it be better to contribute to smod instead of making an entirely different system for people to learn?

random sleet
#

we need conflicts = ['Talisman']

frosty dock
wild patrol
#

Like I'm not against the idea of new ways to mod the game a better mod loader would be great considering lovely injector doesn't like playing well with defender and other anti viruses

#

And no tell what other things it can trip inadvertently like anticheats since it's technically a game hack

#

But a clone of smod just more difficult seems pointless

random sleet
#

lovely only content mod dont tempt me

#

i dont have to play nice with anyone else's bs then

viscid field
#

look, some slay the spire modding needs javassist's bytecode patching, so I'm making a patcher here as well

wild patrol
#

Not really the point I'm making what I'm saying is wouldn't it be easier just to contribute to smod. Like we have the games source code no reason to byte code the game that we can literally see what function does what

viscid field
#

byte patcher is just a mod, not modloader

viscid field
#

this also helps with decoupling of different components

wild patrol
#

I like Linux too and would like to see more use it, but windows is more easier to understand for your average computer users than Linux is

random sleet
vocal verge
#

skyrim with 4 different animation frameworks xdd

viscid field
random sleet
#

i will literally never use your modloader please stop advertising it to me

viscid field
#

I'm saying my mods are not exclusive to the aml ""ecosystem""

random sleet
#

no but

vocal verge
#

I feel like "5 lines of change" is more than "no lines need to be changed" making it exclusive

random sleet
#

you know how theres already only like five mods that are baseline functional right now with smods and lovely and everything being CONSTANTLY CHANGING EVERY MINUTE

vocal verge
#

unless i'm misunderstanding

random sleet
#

lets split that in two

viscid field
#

I can write a python script to convert aml to smods later

random sleet
#

your modloader gets two functional mods

#

smods gets three

#

players get a max of three mods

wild patrol
#

I'm not gonna say not make this I'm gonna say you should contribute more to smod

random sleet
#

in the event that conversion is even possible, whats the chance of blind lucky success?

wild patrol
#

It would probably be better for future mods as a whole

random sleet
#

how often does it need manual adjustment?

#

and players dont do these things

viscid field
random sleet
#

i don't care how easy it is to do

viscid field
random sleet
#

players dont do it

viscid field
#

no burden to downstream

random sleet
#

the burden is everyone who has to deal with bug reports from Not Really A SMODS Mod Tee Hee causing 100s of issues because it doesnt use smods code

runic pecan
#

Should I use the event tech or just drag the highlighted part out of it?
sorry, nvm, I should keep it.

violet void
wild patrol
#

By javassisted are u saying ur version will need java to work?

#

Just making sure

viscid field
#

I just happen to have worked in sts modding before as well

wild patrol
#

So u need java for the patcher to function

#

Is what I'm asking

runic pecan
viscid field
#

not java

#

not smods or aml

#

not even balatro

#

it's just a generic lua library

random sleet
#

there are now 100 competing standards

vocal verge
#

Why should I use your standard over just using smods?

#

probably a good question to ask

viscid field
viscid field
# vocal verge Why should I use your standard over just using smods?

if you are asking for a fair advertisement, it is probably the classic "good software design" features(that seem to be lacking in a lot of community projects; do note that I'm not implying this is objectively better, just that it more or less aligns with my ideas of good software)

decoupling, modularity, no feature bloat, full extensibility, no global pollusion, etc.

viscid field
random sleet
#

yay no feature bloat and now every mod on the framework isnt compatible with each other bc they all implement the same things you're trying to not do

vocal verge
#

yeah i'm ngl

#

no feature bloat just means the mods will have to implement features which will just mean there needs to be a single mod that adds that feature and then other mods that use that mod making it a known dependency

#

which just means it's better for that single mod to be part of the original framework

viscid field
frosty dock
random sleet
#

whatever im just blocking you
i dont know what response you expected to coming in here touting " I AM GOING TO DRAMATICALLY FRACTURE THE MODDING COMMUNITY BC I WANT TO "

viscid field
random sleet
#

god of course you use arch

vocal verge
#

isn't it literally because arch is supposed to be super barebones and have a bunch of modules you just add if you need them

frosty dock
#

See I get your point but Balatro isn't the kind of game to have an Arch Linux-inspired mod loader

random sleet
#

arch is literally the thing i said earlier about dramatically different ecosystems

frosty dock
#

it's not built around modding and needs a lot of changes to achieve any sort of mod compatibility

random sleet
#

no arch install is the same, hell if you ever actually want to do anything for people on arch bc being on arch tells you NOTHING about what that pc can do

frosty dock
#

I've been turning certain changes into optional features, so it's configurable towards what installed mods need in-place, but having to install 7 million add-ons just seems bad from a usability standpoint

runic pecan
#

Is it possible to rotate jokers upside-down?

frosty dock
#

something very barebones can work decently for a game that is mostly moddable on its own

viscid field
vocal verge
#

Yeah, the original framework is wack

frosty dock
#

that's fine but it's not a format I would want to maintain

random sleet
#

yeah well the best package manager we have is github desktop

viscid field
#

which is a problem I'll try to solve, alongside the lack of semver

I can't afford a server for a centralized mod repo however

random sleet
#

mate nobody wants you to kill this community please

wintry solar
#

I think this is a classic case of if we ignore it it will go away

vocal verge
#

I mean yeah

wintry solar
#

Unless something major shifts, smods is already embedded in the community now

vocal verge
#

Worth a shot but

#

I'm pretty sure most people in the world still use windows

wintry solar
#

There would have to be something pretty dramatic to make people shift

vocal verge
#

which is not what htey're trying to emulate

frosty dock
#

good shot if you started working on this like a year ago

#

steamodded is literally the establishment now

vocal verge
#

mmm

viscid field
#

This reminds me of Minecraft 1.13 the flattening

vocal verge
#

soemthign something down with the establishment

random sleet
#

yeah i just dont wanna see the same bs happen here as in minecraft

vocal verge
#

doesn't minecraft still have like 3 different mod frameworks

viscid field
#

that's not what I want to see either

viscid field
tender gale
#

Just looking through I don't think you're supposed to replace the balatro file

random sleet
#

can anyone name 1 mod for the most recent version of forge that isnt Create?
can anyone name 1 mod for fabric?

faint yacht
#

Forge, NeoForge, Fabric, Quilt...

random sleet
#

who here wants to see the same happen to balatro?

viscid field
#

0 people

random sleet
#

oh fuck mek updated?

#

(the fact this is shocking news....)

faint yacht
#

I'm a Tinkers Construct freak personally... especially with the armor addon back then.

viscid field
#

I feel like 1.12 TC is better than modern versions but maybe it's just me

vocal verge
#

pretty sure it's mostly the same

viscid field
viscid field
vocal verge
random sleet
#

alright but yeah more ontopic i really think making "Balatro Fabric" is a dogshit ass idea

viscid field
#

except for bugfixes

random sleet
#

minecraft could BARELY survive it

vocal verge
#

yeah, i'd rather not have to triple check every mod i want to hope it's supported for the modloader i'm using

random sleet
#

balatro is way smaller

#

ramifications of something like this dont end at having clean code

viscid field
vocal verge
#

So then what's the point if it's not gonna be much different from the original but wiht a bunch of requirements for each mod because the function was removed from the base framework?

frosty dock
#

my take is that it just won't be relevant enough to get anyone to make mods for it

vocal verge
#

Just sounds like more work than anything

viscid field
vocal verge
#

so just a mod manager

wintry solar
#

I think when the justification for using this over smods was “I think it’s designed better” we can probably just let it drift around in a space where no one will look at it

viscid field
#

also for some reason aml got into the conversation when it was all about byte patching which is literally ecosystem agnostic

wintry solar
#

Lots of people already have a hard enough time even installing lovely/smods and the mod of their choice, imagine them having to install all the dependencies and modify the game files too

viscid field
frosty dock
#

smods is mostly a backend

vocal verge
#

Or

#

We can just make it wor klike windows

frosty dock
#

it just also exposes APIs

vocal verge
#

and have hte dependencies pre-installed

wintry solar
#

I just can’t see the populace picking up something that works that way

frosty dock
#

it's not used for its great frontend

vocal verge
#

Because no amount of windows UX shenanigans will skip over the fact that you still need to do extra work for each mod

frosty dock
#

and people won't switch to aml for a mediocre frontend with barely any backend

viscid field
frosty dock
#

smods could exist in a way where all of its functionality is modularized

viscid field
frosty dock
#

you just won't get me to maintain something organized that way

frosty dock
vocal verge
#

smods with extra steps
but mods made for it need patching to work with smods

#

from what i gathered

viscid field
#

Arch Linux with KDE Plasma is just like windows except for the backend

but the reason I like Arch Linux's design is it also works on a potato with only 128MB RAM

frosty dock
#

okay but Balatro doesn't

vocal verge
#

ok but it's NOT just like windows

#

it looks like windows but it's still arch linux and still needs you to download the dependencies and do extra work

#

for what is literally nothing

#

ebcause all you're doing is changing the back end to be omre complicated

#

Like I don't see waht hte benefits here are over just using smods
because Balatro is not a computer that needs a hyper optimized operating system

viscid field
# frosty dock okay but Balatro doesn't

smods is objectively better if you play cryptid
I don't want to see a mods menu and have an API to add jokers if I'm only modding to fix a crash or smth so I make my own project
and I'm sharing it not in hopes of it being a competitor but just so that a hypothetical someone else won't also spend 10 hours trying to make the same thing

vocal verge
#

well that makes a lot more sense

frosty dock
#

the use case of that is literally what lovely only mods are

wintry solar
#

But you don’t need smods to do that, you can just use a lovely patch

viscid field
#

lovely patches can't expose APIs for other stuff without polluting globals

frosty dock
#

so... you're making a tool to align with your standards when the game itself doesn't adhere to them?

#

scope limiting makes sense when you're exposing a scripting API for a compiled game

#

most lovely mods put their "globals" in a table of their own anyways

random sleet
#

me when i pollute globals:

#

how the hell do you intend to have an api that isnt global

#

fuck good is that

glossy stone
#

yeah so i'm pretty sure my entire mod got wiped out when my laptop broke

#

still gonna make it tho

#

I Just Have To ReCode Everything Again

violet void
#

This change is goated

glossy stone
#

Holy Shit Kill Me

vocal verge
frosty dock
viscid field
# random sleet me when i pollute globals:

name clashes can exist unknowingly

Anyway I don't want this to sound like me trying to defend my sometimes questionable beliefs or imposing it on other people and their projects, I'd close this conversation with some final words: Since it's futile trying to change the world to fix every past mistake, I just try to create an incomplete, but nicer parallel universe. It need not substitude or interfere with the original one, but at least I get the peace of mind while I'm in it.

runic pecan
#

Quick question: is this Doable?

frosty dock
#

yeah sure

viscid field
vocal verge
runic pecan
frosty dock
#

hooking into Card.update seems to change the rotation only when the card isn't aligned to a card area

#

so probably need to get into CardArea:align_cards as well

wild patrol
#

Probably recover the files

random sleet
#

fusion jokers has a joker that flips upside down

wild patrol
#

If the drive isn't damaged

vocal verge
#

hey, who does wiki changes

#

cause this is wrong

frosty dock
#

shoot

#

me in the foot

wild patrol
#

Which one

frosty dock
#

reload the page

surreal marsh
#

i want to add a layer on joker (to draw joker enhancement đŸ€Ș ) and current effect is, if not dragging the new layer fits perfectly, including card's tilt, but if dragging the new layer isn't lagging behind (fixed to cursor's position) and not rotating đŸ€” how to fix

wintry solar
#

Does the sidebar collapse properly? I noticed it wasn’t doing links properly last night

frosty dock
#

it just does this now, no collapsing

#

the spacing looked weird so i decided against making it collapsible

glossy stone
wild patrol
vocal verge
frosty dock
#

-# don't mind the changed rarity badge, i have that in my testing mod for some reason

wild patrol
#

Try running a lite Linux distro off a USB

#

And see if u can get the OS to recognize it after booting into it

random sleet
wild patrol
#

Ubuntu isn't lite but it has away to run the os without installing it

crisp elbow
#

I mean any live usb should work

wild patrol
#

Ubuntu one that I could name off top my head

#

That and Linux mint

#

Just download the iso use a program like Rufus to flash it to a USB

#

Hell you could probably unironically use your phone to make a USB bootable now

surreal marsh
#

sprite:draw_shader('dissolve', nil, nil, nil, self.children.center)

crisp coral
#

@violet void you should be good to contribute now

#

and do join the modding wiki discord server

random sleet
#

myst you should join

crisp coral
#

i should join?

#

join where?

wintry solar
#

Just join

crisp coral
#

teach me how to join

#
''.join(myst)
violet void
crisp coral
violet void
crisp coral
#

you sure you got it right?

violet void
#

im copying it directly from the email along with the username

crisp coral
#

better to just write normally

violet void
#

nope

#

they probably sent me the wrong one

wild patrol
#

found two bugs so far with pot of greed card

#

can't view deck with it in ur deck or the game crashes

#

peek deck crashes the game

#

guess this is the next thing I gotta fix

violet void
wild patrol
#

also anime style def looks better

random sleet
#

pictured here the right leg

wild patrol
#

huh that's weird

#

I didn't change the text

#

all I did wasw change the sprite sheet

#

oml it is wrong in the main file

#

there we go fixed it

#

ok guess now I should work on making scape goat

#

need to find the function that makes random joker cards

gaunt thistle
#

Interesting chat about aml and bytecode patching. It reminds me that I've got a sketched out plan for semantic patches which are able to parse Lua syntax trees to do what they do, but it's been in the back burner for a while. In general I try to develop features that people need and that just hasn't been the case with regex.

#

There's an inherent fragility with text parsing that's always made me somewhat uncomfortable. This is improved by bettering pattern specificity but there's always an undercurrent of "I'm asking for n to happen rather than telling it to do n" if that makes any sense.

#

If I have the time this weekend I'll look into maybe using something like treesitter and its selector syntax to inject patches.

wild patrol
#

local _card = SMODS.create_card({ set = 'Joker', area = G.jokers, key = 'derek' })

#

would trhis create a random joker card?

frosty dock
#

no

wild patrol
#

what would be the best way to create a random joker from a consumable

violet void
#

like judgement?

wild patrol
#

yeah

#

I was looking at judgment

#

but I was planning make it do 4 at same time lmao

violet void
#

you need a buffer if it requires to have room

wild patrol
#

would I need to do a local_vars and do a return { vars = { card and card.ability.

#

and give it judments ability

ivory coral
#

hello chat, im getting a crash when checking if a joker has any edition, says its attempting to index a nil value, but like, thats kinda the point of it so idk why its crashing

    if G.jokers[i].cards.edition then --check if edition exists
        if not G.jokers.cards[i].edition.negative then eligibleJokers[#eligibleJokers+1] = G.jokers.cards[i] end --if it does check if its negative and make it eligible
    else
        eligibleJokers[#eligibleJokers+1] = G.jokers.cards[i] end --no edition means it cant be negative so its eligible
end```
frosty dock
#

đŸ„Ž

ivory coral
#

aaargh fizzlesticks

#

thanks lad

runic pecan
#

: Imagine a Space joker, but slightly better.
: Uh huh.
: And then a Constellation, but way more powerful.
: I'm listening.
: Now put them together-

zealous glen
runic pecan
zealous glen
runic pecan
#

Goddamnitwhydidntyoutellsooner

zealous glen
runic pecan
#

Let's just say some of them.

wild patrol
#

I guess i'll figure out the random card generation think some othewr time

#

time to break from coding lol

wintry solar
runic pecan
#

As in {'c_earth','c_ceres',...}

minor gyro
#

yhyh

viscid field
# gaunt thistle There's an inherent fragility with text parsing that's always made me somewhat u...

exactly! I always think text is always the form and the AST/bytecode is the content. Kind of like the view vs the model in MVC. On this topic, I'm currently working on my own programming language + computer, which takes on this problem by storing all the source code as preprocessed AST with metadata to minimize compile time. This allows you to customize the syntax much like how you customize the toolbar in browsers, meaning the same program can look like Java or Lua with just a skin change

wintry solar
#

I don’t know why this function is still here, it should 100% be in utils

random sleet
#

tales from the world of cross-mod patching: i just made Pokermon evolutions keep my Joker Stamps

#

i was tempted to ping you, lol (referring to metherul)

frosty dock
#

noice

maiden phoenix
#

JokerEvo so good they keep the stamp on evolution too 😏

random sleet
#

oh fr

#

thats good means i dont have to mess with that

runic pecan
#

How do I do extra badge (other than mod and rarity) like pokermon type?
pokermon source code is kinda confusing.

tepid crow
#

After I think

zealous glen
#

Though maybe Steamodded has a better system now

#

Actually let me try to send it now

runic pecan
long sun
#

rate? :D

random sleet
#

sord

long sun
#

dahgar

nocturne garnet
long sun
#

knoife

zealous glen
#

Oh I did get my Dagger Boss Blind working

minor gyro
tight thistle
#

quick question! not for anything im doing as of right now, but out of pure curiosity, is there a way for a joker's effect to check on unlocks/discoveries?

#

like an effect that only triggers once per save file, or an effect that grows depending on discovered jokers

minor gyro
#

that would be so OP 😭

weary jungle
#

its like the boss is ripping the cards out of your hands and burning it on the spot 😭

minor gyro
runic pecan
#

What {C:} should I use on any consumeable?
I'm currently using attention but doesn't look right.

minor gyro
#

either attention or chips ig

#

perkeo uses attention

minor gyro
#

just for fun

runic pecan
#

I think {C:blue} fits my taste.

minor gyro
#

Looks great

violet void
#

thats for spectrals tho

wind turtle
#

does anyone know the list of text formatting things?

minor gyro
wind turtle
#

thanks

orchid thunder
tepid crow
#

hmm

wintry solar
#

Isn’t cryptid being converted?

tepid crow
#

double check it, it might also be there in pre-better-calc

orchid thunder
wind turtle
#

how do I do a radom number between 1 and 4 inclusive?

wintry solar
#

I don’t understand why you’d continue making stuff for the old version then when you can just make it for the new version and it doesn’t need updating then?

orchid thunder
#

Because

runic pecan
orchid thunder
#

Idk how to work the refactor branch is cryptid

wind turtle
#

thanks

orchid thunder
#

But what happens if I just try 5o call the calculate function

wind turtle
#

how do I remove a joker? i'm trying to look at dagger and madness but the code isn't making sense to me

#

this is what i get for learning godot instead of lua

runic pecan
orchid thunder
#

How do context work

runic pecan
wind turtle
orchid thunder
#

All I need is to run something though calculate function from add_to_deck function

orchid thunder
#

Why can't my stupid brain understand this

wind turtle
#

i'm trying to make a joker that destroys all the other ones and makes new ones (for the silly) and that second part is working but the "destroy all others" isn't

orchid thunder
#

It's a cryptid thing that for scalae to scale jokers it has to scale In calculate but right now it scales in addtodeck

wind turtle
#

also what are the arguments in create_card for?

wintry solar
#

Add to deck and calculate do completely different things though, I don’t understand why you’d need them to interact?

runic pecan
orchid thunder
#

And in the argument context if I but something like scale
Can I do in calculate context.scale

runic pecan
orchid thunder
#

So card:calculate(self, card, {key = value})

runic pecan
orchid thunder
#

Oh ok

#

You've been most helpful

runic pecan
#

Well, I try to do my best.

minor gyro
#

i think just turn if not into if and ~=

#

with the for loop obviously

runic pecan
#

Also also, remember to check if the i-th joker is eternal or not. Pretty sure ceremonial dagger code has it.

wind turtle
#

ok

minor gyro
#

do y'all think a joker that disables the boss blind buff would be a rare?

wind turtle
#

i did something and now it works perfectly

minor gyro
#

all

wind turtle
#

i moved destruction into the ending_shop context

orchid thunder
#

How can I mute game/ set game speed with code

runic pecan
minor gyro
#

oh

#

forgot

#

lmao

runic pecan
#

"Chicot, the most forgettable Legendary joker"

orchid thunder
#

I need to store games speed aND sound settings set them to a value then them back to what they were

timid parrot
#

Ah yes, the weakest legendary

minor gyro
runic pecan
minor gyro
runic pecan
minor gyro
#

fair

#
SMODS.Joker {
  key = 'wraith_jk',
  loc_txt = {
    name = 'Wraith',
    text = {
      "While in your deck, disables the boss blind buff."
    }
  },
  unlocked = true,
  discovered = true,
  atlas = 'Jokers',
  blueprint_compat = true,
  rarity = 3,
  pos = { x = 3, y = 0 }, -- Ajuste conforme necessĂĄrio
  cost = 10,
  config = {},
  add_to_deck = function(self, card, from_debuff)
    -- Desativa o buff do Boss Blind ao adicionar o Joker ao deck
    if G.GAME.blind and G.GAME.blind.boss then
      G.GAME.blind:disable()
      print("[Wraith Joker] Boss Blind buff disabled (added to deck).")
    end
  end,
  remove_from_deck = function(self, card, from_debuff)
    -- Reativa o buff do Boss Blind ao remover o Joker do deck
    if G.GAME.blind and G.GAME.blind.boss then
      G.GAME.blind:set_blind()
      print("[Wraith Joker] Boss Blind buff re-enabled (removed from deck).")
    end
  end
}

It is working, the thing is... If i sell it, the buff does not "come back"...

zealous glen
minor gyro
zealous glen
#

Do what

minor gyro
#

This joker is supposed to make the boss buff go away (and it does indeed go away) but, when i sell it, it should activate the buff again

#

but it just does not do that

zealous glen
#

The buff?

minor gyro
#

yh

zealous glen
#

What buff?

minor gyro
#

debuff:
"all spades cards do not score", "must play five cards" etc

minor gyro
#

just like chicot

zealous glen
#

Ah, debuff

#

Isn't it just Chicot?

#

What's the difference?

minor gyro
zealous glen
minor gyro
#

i thought so

#

imma check

zealous glen
#

Chicot Bento

runic pecan
minor gyro
zealous glen
#

Yeah see what Chicot does when removed

minor gyro
#

imma add to calc

#

my calc was nil

#

welp, idk what I'm doing wrong

zealous glen
#

Not what Chico does when calculated

#

What Chicot does when removed

minor gyro
#

that's the only thing i found in card.lua

zealous glen
#

Are you sure selling Chicot during a boss blind reenables it?

minor gyro
#

OH

#

yeah well mine still bugs when I sell

zealous glen
#

well does chicot do it

#

because I think if Chicot doesn't then you can't do it

minor gyro
#

it does not

#

it's fine this way

zealous glen
#

Maybe it's possible to hardcode it for vanilla Blinds but I'm not sure there's a general method to do it

minor gyro
zealous glen
#

remove the remove_from_deck

minor gyro
#

it worked! thanks

#

it was kinda obvious lmao

idle estuary
#

Hello, I was wondering if someone could help me find the lua code to a card like ceremonial dagger or hologram joker. I am making a joker that gains Xmult every time a joker is destroyed (it itself is not destroying jokers)

frank flint
sturdy compass
#

If yes, open card.lua and ctrl + f to search for either of the jokers you just mentioned

idle estuary
#

no thats sorta what I was asking about im not exactly sure how to find the source code

sturdy compass
#

I see

#

So you have Lovely/Steamodded installed, correct?

minor gyro
idle estuary
#

yes

sturdy compass
#

go to the lovely folder in mods/ and open the dump folder. That's what you should be looking for

idle estuary
#

OH, I see thank you

minor gyro
#

Hey, how do I get a pos of a joker?

if context.setting_blind then
      local valid_jokers = {}
      for i=1, #G.jokers.cards do
        if G.jokers.cards[1] ~= self and (G.jokers[i].area and G.jokers.cards[1].area == G.jokers) then
          valid_jokers[#valid_jokers + 1] = G.jokers.cards
        end
      end

I think that should work to calc the number of jokers... but i want to switch pos with the self joker and 1 random other

#
if #valid_jokers > 0 then

then idk what the game uses so i can check the pos, chose a random, etc

zealous glen
#

because there's no built-in functionality for that

idle estuary
#

okay thank you

tepid crow
#

Why did I get tagged 👀

white totem
#

how much knowledge of lua do i need to add say a single custom joker

#

do i need 2 be some kind of wizard

zealous glen
zealous glen
#

even I could do it

white totem
#

okay

tepid crow
#

Ah đŸ‘đŸ»

minor gyro
distant dirge
#

Does anyone know a tutorial on modding balatro becasue I can find any

analog pilot
#

also the steamodded documentation is good for figuring stuff out

frosty dock
plain apex
#

how do mods do these config tabs in the mod list?

#

i've made a config.lua file but idk how to make a config tab that shows it in the mod list

frosty dock
wintry solar
#

phwoar what a beautiful config menu

wise narwhal
#

how would i go about refreshing my smods config tab? ive already set it up so i have a button that changes the nodes inside the config tab, but the changes only apply after leaving and re entering the menu

rough furnace
viscid field
rough furnace
#

okay so how do you solve it?

viscid field
rough furnace
#

so you still have a name you need to check

viscid field
#

aml is only in the global scope of the mod code, which is isolated

rough furnace
#

sure but your require still needs to check for conflicts in names

viscid field
#

more like they're checked when they're loaded(which happens regardless of require) but yes, the check happens once.

rough furnace
#

so if lovely paniced if more than one mod had the same require it would also be equivalent in making sure there isn;t conflicts

tender gale
#

how do i check if a card has a certain enhancement? I want to make a Joker that retriggers wild cards twice

blissful dagger
#

Is there an easy way to have enhanced cards destroy themselves like how Joker cards can destroy playing cards? I can't seem to figure out how to destroy them that allows for triggering jokers that trigger when cards are destroyed

tender gale
#

i managed to do it with a context actally lol

humble gale
#

Im trying to make a joker that opens the shop after skipping the blind. How would i make is so the big blind select isnt there

tender gale
#

thanks though

minor gyro
#

    if context.setting_blind then
      local valid_jokers = {}
      for i=1, #G.jokers.cards do
        if G.jokers.cards[1] ~= self and (G.jokers[i].area and G.jokers.cards[1].area == G.jokers) then
          valid_jokers[#valid_jokers + 1] = G.jokers.cards
        end
      end

      if #valid_jokers > 0 then
        local other_joker = pseudorandom_element(valid_jokers, pseudoseed('wraith_swap'))
        local temp_pos = { x = self.pos.x, y = self.pos.y }
        self.pos.x, self.pos.y = other_joker.pos.x, other_joker.pos.y
        other_joker.pos.x, other_joker.pos.y = temp_pos.x, temp_pos.y
        print("[Wraith Joker] Swapped places with Joker: " .. (other_joker.loc_txt and other_joker.loc_txt.name or "Unknown"))
      else
        print("[Wraith Joker] No valid Joker found to swap positions.")
      end
    end

Idk how to get a pos for other jokers, and I cannot find any git or doc talking about that... Any ideas?

tender gale
#

I only started getting this error after changing to bettercalc

wintry solar
#

what are you swapping the positions for? you can just drag them around

minor gyro
wintry solar
#

hows that a downside?

minor gyro
#

Well, if u got blueprint or something it can be a mess

wintry solar
#

you can just mover them back though?

minor gyro
#

and it would suck to rearrange the cards every time

minor gyro
#

I just don't want it to be the same as Chico but it makes sense with the ghost that it's based on (Phasmophobia mod)

wintry solar
#

But it is just chicot

minor gyro
#

idc bro 😭 I just want to know how to make a chicot then

#

that moves

tender gale
#

im going back to old smods

wintry solar
#

whats at that line?

tender gale
#

Only started happening when I tested this joker on new calc

#

works fine on old calc

#

it even had the same error after I removed juice_up so something weird is happening

wintry solar
#

have you got the no juice up crash?

tender gale
#

Juice up nil method or something

wintry solar
#

oh

#

its the return

#

remove card = self

tender gale
#

oh ok

#

thanks

minor gyro
wintry solar
#

you dont need card = anything in new calc

tender gale
wintry solar
#

card = card won't crash

#

it's just not necessary

minor gyro
#

i downloaded smods 2 days ago, how do I know if I'm on old or new calc?

tepid crow
tepid crow
minor gyro
#

1321d

#

so I'm newcalc

#

yeeeh

tepid crow
#

yea

wintry solar
tepid crow
#

yeah basically juices the joker on playing card score

wintry solar
#

can use juice_card for that too

tepid crow
#

potato tomato

silver turret
#

hi how would i go about adding a font to the game? i don't understand the documentation is asking me for

violet void
#

I am trying to destroy some cards held in hand and after checking the SMODS function it should be entering G.hand.cards right? But its not entering in my if

frosty dock
#

you should use context.destroy_card

orchid thunder
#

i just need to send somethign though calculate for the love of god

humble gale
sturdy compass
#

Would it be possible to make items in the info_queue variable? I have this implementation right now but it's trying to find .copied_key in P_CENTERS which obv doesn't exist

frosty dock
#

why is the third arg center

sturdy compass
#

The tutorial that got me into this used center there

frosty dock
#

that's just... bad

#

it's a Card, so it should be named card

sturdy compass
#

oh joy

humble gale
#

well the base class name is center so it could go either way

frosty dock
#

nah

#

Center refers to a prototype for a card

#

that is what self is here

sturdy compass
#

Hey man don't shoot the trainee

frosty dock
#

just making clear what the difference is

hardy viper
#

yeah we use pipe bombs here

#

get the guns out

wintry solar
#

center in loc_vars is a cryptid thing, right?

frosty dock
#

cryptid does do that

sturdy compass
#

Probs where the tutorial picked that up then

minor gyro
#

dumb question here, how do I check if a card played is a lucky card?

frosty dock
#

if SMODS.has_enhancement(insert_card_here, 'm_lucky') then
-# this is the smods version that accounts for quantum enhancements and not what the base game would use without smods

minor gyro
#

I'll try that. Brb

random sleet
#

i should make a joker that makes grass cards also count as glass cards and vice versa

frosty dock
#

Lmao

#

G[rl]ass card

sturdy compass
#

Grass Cards:
X2 Mult if outside

random sleet
#

nah they gain chips while held in hand
you can watch grass grow in my mod

sturdy compass
#

damn I wanted to watch paint dry tho

random sleet
#

oh no wait there's a problem with this

#

smods does this....

#

wiping out the gained chips from the quantum Grass card :/

ionic verge
#

how does antimatter always show as negative even in the collection?

sturdy compass
#

Changed where the card reference is being stored from the joker config to a G.GAME var since there shouldn't be a case where multiple Bootlegs don't share a target. How would I make that variable save so it doesn't break on reload?

ionic verge
random sleet
#

good luck

hidden timber
#

Thank you

random sleet
#

sorry i meant good luck scamming people

hidden timber
#

Thanks

#

Because 100$ is a lot for scamming

sturdy compass
#

m

ivory coral
#

hello chat, i'm trying to make a deck texture pack, and it works mostly fine, except that if high contrast cards is enabled then the 2-10 cards use the normal HC textures instead of the modded ones, any idea what the problem could be? J-A are replaced by the modded ones just fine, its just 2-10 that aren't, and they all work correctly on LC.

#
    key = atlas_key..'_lc',
    px = 71,
    py = 95,
    path = atlas_path,
    prefix_config = {key = false},
}

if atlas_path_hc then
    SMODS.Atlas{  
        key = atlas_key..'_hc',
        px = 71,
        py = 95,
        path = atlas_path_hc,
        prefix_config = {key = false},
    }
end

for _, suit in ipairs(suits) do
    SMODS.DeckSkin{
        key = suit.."_skin",
        suit = suit:gsub("^%l", string.upper),
        ranks = ranks,
        lc_atlas = atlas_key..'_lc',
        hc_atlas = (atlas_path_hc and atlas_key..'_hc') or atlas_key..'_lc',
        loc_txt = {
            ['en-us'] = description
        },
        posStyle = 'deck'
    }
end```
if it helps
tall cradle
#

Does anyone know how to create a deck with the latest Steammodded alpha?

sturdy compass
tall cradle
#

great wiki image, thanks

sturdy compass
#

thank you john smods

random sleet
#

(as a reminder, you can stop links from embedding by enclosing them in <angle brackets>)

sturdy compass
#

I'm aware

random sleet
#

cat

sturdy compass
#

Why would I ever want that to not embed trollteeth

random sleet
#

i offer no further resistance

tall cradle
#

Are there any developer utilities for balatro modding other than making warnings shut up by doing something along these linesif not SMODS then SMODS = {} end

tepid crow
#

do you mean in your code editor?

tall cradle
#

Yeah

dull saddle
#

there might be general lua ones?

tall cradle
#

I already use general lua ones, I just want to see if there are any other tools specifically for balatro

minor gyro
#

I just consider the warning as friends at this point

tepid crow
edgy reef
#

If you're talking about warns as in "Lua diagnostics" then there's already built-in ways of handling most warns (adding workspaces specifically).

#

Unfortunately this doesn't work for everything because Lua assumed statically-typed code and Steamodded / Balatro source code are more dynamic typing.

#

I can get some typing and autocomplete support for SMODS but that only goes so far.

wintry solar
#

Do you want a joker to always have the negative shader?

ionic verge
#

pretty much

#

its always gonna spawn as negative (cant be bought) but i also want it to look negative in the collection

zealous glen
#

It can just be Negative in the collection

#

set_ability

#

and make it give itself the Negative edition

wintry solar
#
draw = function(self, card, layer)
  card.children.center:draw_shader(‘negative’, nil, card.ARGS.send_to_shader)
end```
ionic verge
#

aint that a thing you do in calculate though?

#

the set ability thing

wintry solar
#

This will make it always have the shader applied

zealous glen
#

No, it's a different method

wintry solar
#

That way you don’t need to force the edition (unless you want to ofc)

zealous glen
#

I mean he said he wanted to

ionic verge
#

hmm
happened when i tried to navigate to it in the collection

wintry solar
#

Huh

ionic verge
#

(not in calcuate or anything, just in the SMODS.Joker for it)

#

which i guess is obvious from the calculate right under it

zealous glen
#

Try removing draw and using set_ability

#

set_ability used to have always having an Edition as example

wintry solar
#

That should 100% work

ionic verge
wintry solar
#

I was literally writing code that did this earlier, let me find it

ionic verge
#

like this?

zealous glen
#

no

#

set_ability = function


#

and inside you set the edition

ionic verge
#

like in the function's () ?

wintry solar
#
draw = function(self, card, layer)
        card.children.center:draw_shader('negative',nil, card.ARGS.send_to_shader)
    end

this 100% works

zealous glen
wintry solar
#

maybe I mobile typed it wrong before

tender gale
#

is +1 discard per round and gain +3 chips when using a discard balanced for a vanilla rare joker

zealous glen
#

so set_ability = function(???) card:set_edition('e_negative', ???) end

ionic verge
#

+5 could work

zealous glen
#

I guess

ionic verge
#

with 5 discards thats +25chips scaling

tender gale
#

+5 was what I was thinking

ionic verge
#

wee joker can do better with a little bit of work

wintry solar
#

I have no idea why the version I typed on mobile didn't work đŸ€Ł

#

it's exactly the same, right?

#

oh is it the '?

zealous glen
#

Perhaps

#

they look different

ionic verge
zealous glen
#

well, if you want it to actually always have the negative edition then that wasn't necessary ;P

ionic verge
zealous glen
#

again

tender gale
#

I believe it's just supposed to look negative

wintry solar
#

the set ability stuff works in collection too

zealous glen
#

it can have the Negative edition in the collection

ionic verge
#

mhm

zealous glen
#

set_ability is called whenever the card is created

wintry solar
#

but now you can make it a different edition 😛

ionic verge
#

ok how'd you do that

zealous glen
#

when you get it in-game, in the collection, when you load a run

ionic verge
ionic verge
#

do i need the question marks?

#

or what do i replace with them

zealous glen
#

you need to change the questions marks

#

idk look at the wiki

#

I linked it up above

tender gale
#

It has something to do with 3s

ionic verge
#

yeah i like that

#

can scale much higher in a much more organic way

sturdy compass
#

Does anybody know how I could get my custom G.GAME variables to save?

tender gale
#

Easy enough change to code, too

sudden dew
#

If you're specifically trying to save cards, you could consider putting them in a hidden cardarea, because the game won't wipe out cards if they're in a cardarea

tender gale
#

Any ideas how to fix? crashes when I try to testit

dull saddle
#

missing a comma after the second color = G.C.Chips

tepid crow
#

well that wouldn't fix it

dull saddle
#

idk thats what the problem was for me when i was having a simular crash is all

wintry solar
#

change your joker_main return to just chips = card.ability.extra.chips

tepid crow
#

on the other hand I can't really spot the issue

tender gale
#

I think the new calc doesn't like get_id()

tepid crow
#

oh probably missing a card argument key (but try eremel's solution)

tender gale
#

I believe its an error with that

wintry solar
tender gale
#

No the return is fine, but I've gotten a similar error every time I've tried to get id of a card that's not played

wintry solar
#

it's not

tepid crow
wintry solar
#

it is 100% the second return that uses chip_mod

tender gale
#

I changed it and i got the same error

runic pecan
#

Is G.P_CENTERS.c_earth equivalent to G.P_CENTERS['c_earth']?

carmine burrow
#

i think so

wintry solar
#

try throwing a message_card = card in the top return then

#

it seems the discard context doesn't correctly auto select the cards đŸ€”

tepid crow
#

uh oh

tender gale
#

That helped, thanks

wintry solar
#

I have no idea why it wouldn't do that though

#

wtf

tepid crow
#

hyperx is running a slightly outdated version of smods

wintry solar
#

it doesn't work for me either

tepid crow
#

it doesn't crash or it doesn't work and therefor crashes?

wintry solar
#

it crashes

#

says it doesn't have a card to display the message on

#

but the way the system works is that it's guaranteed to have a card

tepid crow
#

oop

wintry solar
#

oh wait

#

I see why

tender gale
tepid crow
#

well we can both be right

#

if you downloaded newest 2 days ago, it is no longer latest after an update

#

(current latest is 1323b)

minor gyro
#

Why Does it not work? I just want to make it loose 25 instead of gaining

tepid crow
#

try lowercase m_lucky

minor gyro
#

oh

#

didn't see

#

lmao

tepid crow
minor gyro
#

tbh I have NO idea what message does

#

I just code as it is in other jokers

tepid crow
#

that's the part that... makes the message

#

the actual pop-up

minor gyro
#

ohhh

#

lmao

#

but wouldn't it show 25? instead of -25

wintry solar
#

no

#

the first one is your scoring chips

tepid crow
#

I was talking about your first return

minor gyro
#

well, it says "ERROR"
I don't think thats that I want

tepid crow
#

really???

minor gyro
#

i replaced the calc return

tepid crow
#

the first return in calculate yes

#

don't change anything in loc_txt or loc_vars lol

minor gyro
#

yh it just gives error

tepid crow
#

show the new version of your code

minor gyro
#

both with and without the message it gives the error

#

but I'll try again

tepid crow
#

is that even a new screenshot? đŸ€”

minor gyro
#

maybe I forgot the coma

wintry solar
#

chips = card.ability.extra.chips...

minor gyro
tepid crow
#

I'm so confused what did you change 😭

minor gyro
#

I changed the message and then control z (didnt change nothing hahaha)

tepid crow
#

...

#

why would I want a screenshot of that 😭

minor gyro
#

I sent what u asked lmao

minor gyro
wintry solar
#

but you didnt do the change he told you to do?

minor gyro
#

I changed, but nothing changed.

tepid crow
#

Alright, one more time. Change the

return {
    chip_mod = ...,
    message = ...
}```
into
```lua
return {
    chips = card.ability.extra.chips
}
minor gyro
#

oh.

tepid crow
#

I'm just trying to use the easier to read, easier to change, and smaller in size formatting

minor gyro
#

I didn't see that u changed that when u talked about the message.

#

My fault

wintry solar
#

chip_mod requires you to define your message, chips doesn't

tepid crow
#

ah

minor gyro
#

still ERROR

tepid crow
#

what version of smods do you have? đŸ€”

minor gyro
#

1314 i think

#

new calc

tepid crow
#

phew

#

alright try updating it

minor gyro
#

1321d

#

that's the veresion I have

#

1.0.0~ALPHA-1321d-STEAMODDED

tepid crow
#

hmm đŸ€”

#

I don't think anything got fixed in the meantime

#

can you try updating anyway?

wintry solar
#

where is it saying error?

minor gyro
#

on top of the card

wintry solar
#

which card

minor gyro
#

lucky

#

the one that scores

#

and

#

-25

wintry solar
#

that's your bottom return

minor gyro
#

etc

wintry solar
#

the top return is the chips the joker gives

tepid crow
#

that's the bottom return 😭

minor gyro
#

forgor

tepid crow
#

I thought you were talking about the top return still lol

minor gyro
#

forgot it doesn't need card = card too

tepid crow
#

good catch by eremel

minor gyro
tepid crow
#

I'm assuming k_downgrade just isn't defined then?

minor gyro
#

👍

tepid crow
#

do you know how to define that?

minor gyro
#

no... but the thing is, I'm mainly learning by the ExampleJokersMod git, and there he uses this, and it's the only time he uses 'k_duplicated_ex'

#

but there's that.

wintry solar
#

okay I think I fixed the missing card thing

#

that example nees updating tbh

minor gyro
#

ok I fixed with message = localize { type = 'variable', key = 'a_chips', vars = { card.ability.extra.chips } }, but it shows +25

runic pecan
#

What is the default value of blueprint_compat right now? I thought it was true yet just found out smods doc says false moments ago so I guess it'd be false but I want to make sure before making huge change to my mod.

minor gyro
#

It was false last time i tested it

wintry solar
#

false is the default

tepid crow
#

code says false

runic pecan
#

🆗

#

Thank you all

tepid crow
#

in case you weren't sure yet, I think it's false

tepid crow
minor gyro
tepid crow
#

that's alright I can be a moron too

minor gyro
#

nop

#

still 25

#

i defined 25 here, so if i show chip loss it would show +25 no?

wintry solar
#

what do you want the message to show?

minor gyro
#

-25, since :
card.ability.extra.chips = card.ability.extra.chips - card.ability.extra.chip_loss

tepid crow
#

oh see I'm a moron

minor gyro
#

than we

tepid crow
#

try -card.ability.extra.chip_loss in the localization?

wintry solar
#

you want the key to be a_chips_minus too iirc

minor gyro
#

i thought of that but since it showed a var i dindn't think it was possible 😭

tepid crow
#

ooh that exists? that might just work without doing the -

minor gyro
tepid crow
#

😭

#

try eremel's version

lament agate
#

I'm trying to mod my first ever joker, there's 5 of them exactly

#

how do i add assets

minor gyro
#

it works

#

perfect

#

if i change context.individual and context.other_card to context.poker_hands would it count only the played cards?

wintry solar
#

add and context.cardarea == G.play

minor gyro
#

k

#

if context.individual and context.other_card and SMODS.has_enhancement(context.other_card, 'm_lucky') and context.cardarea == G.play and not context.blueprint then

#

that's a big if

lament agate
#

so my initial idea was:
When blind is selected,
sets money to $0
This joker gains X0.05
Mult per $1 lost
(Currently X1 Mult)

#

i know how to mod the xmult in

#

but i dont know how to set the money to 0 each blind selected

iron plover
#

how would you make a deck using the ink and colors custom suits?

#

i just had a card replacing deck in mind and wanted to make it

sturdy compass
cerulean rose
lament agate
#

cant find it in moddedjoker

cerulean rose
#

balatro source

#

extract balatro.exe as a zip

lament agate
#

is it in card.lua?

cerulean rose
#

yeah

#

also btw in vscode on the sidebar you can search entire folders

lament agate
#

ah right

#

i forgot about that

cerulean rose
#

yup

lament agate
#

i find the set 0$ thing

#

but i dont see selected blind thing

cerulean rose
#

wraith is on use

#

use context.setting_blind for on blind selected

lament agate
#

got it

weak gate
#

Hi folks, how do I check if the card I'm selling is a planet?

cerulean rose
#

set property

lament agate
#

whats the full code for it

weak brook
#

tetris joker :)

minor gyro
#

How many hours have u put on this?

weak brook
#

you know its weird idk how i did this, it took me like a day of intense research and quick bug fixing

#

but ive had some of the foundation already layed out by some other modders

minor gyro
#

not really a dev question, but I need some ideas for the Jinn joker...
-# Phasmophobia ghost

weak gate
#

Ah, this is wrong because card.set will tell this joker's set, not the planet sold. How to access the card being sold?

calculate = function(self, card, context)
        if context.selling_card and card.set == 'Planet' and not context.blueprint then
            self.ability.extra.Xmult = self.ability.extra.Xmult + self.ability.extra.Xmult_gain
            return {
                message = 'Conquered!',
                colour = G.C.CHIPS,
                card = card
              }
        end
        --the part of applying the xmult is working
    end```
weak gate
minor gyro
#

great idea

#

i thought of doing something with spectral cuz of the lightning but never came across this

tight thistle
#

hello! i have an inquiry, is there a way for events to play in sequence, without allowing other events to play inbetween until theyre all finished? here the regular game events cut into the time heathcliff is supposed to be losing his mind, and one of the text boxes is completely missing because of it

#

this also happens if heathcliff's events are set to
blocking = false