#⚙・modding-general

1 messages · Page 120 of 1

ashen walrus
#

thanks mathguy!!

brisk seal
#

np

misty geyser
#

just kinda curious cuz i got into looking at balatro mods today, is there any way of disabling specific mods or would i just have to delete them from my folder?

fast stone
#

disabling specific mods is a feature in smod 1.0.0

#

however, for 0.9.8 i personally just move the mod to a different folder

misty geyser
#

kk tysm

sleek kestrel
#

trying to use the deckcreator mod via thunderstore but its dumping out some weird error. anyone had this problem or know a fix?

#

im using steamodded 0.9.8 uploaded there

white scarab
#

Don’t use the Thunderstore version

sleek kestrel
#

should i use v0.9.8 release on gh or just main branch

lean dune
#

0.9.8 compat on alpha can be buggy, it's better to stick to 0.9.8 if you're only gonna use mods made for it

#

So the release should do for you unless you want to use 1.0 mods

sleek kestrel
#

sounds good

#

thanks for your help everyone

west hill
#

You mean for retexturing the enhancements?

grand geode
oak fern
wanton rapids
#

is that the rhythm doctor freezeshot sound

#

or am i hallucinating

grand geode
#

huh 😭

wanton rapids
#

guess i am

grand geode
#

suprisingly i don't have rd files on hand

candid sable
#

Rhythm Doctor or Necrodancer crossover would be sick

wanton rapids
#

i mean window dance is doable

grand geode
#

let me just translate all the code from rd into lua

proven fox
#

After updating windows it seems like my game always starts in vanilla mode, anyone know why that might be

oak fern
#

wdym "vanilla mode"

proven fox
#

As in without mods

oak fern
#

reinstall SMODS (+ lovely)

proven fox
#

I reinstalled smods, but didn't do that with lovely, I'll try that

#

Aight yeah, that worked, I think something nuked the version.dll file in my Balatro files

#

Thanks!

grand geode
#

windows defender did

gilded vortex
# grand geode

"Mom, I'm thirsty, I want water."
"We have water at home."
Water at home:

random silo
west hill
#

Just use the new key, is the gear example not there?

random silo
#

Sorry didnt see that

brisk seal
grand geode
#

it replaces big blinds

#

these are generally easier than boss blinds

gritty finch
#

I'm thinking of modding the game, do mods corrupt save data?

#

Also, I have a current run that I am really proud of but I am scared of messing it up, is there a way to make a backup save of that somehow?

white scarab
gritty finch
#

fair, thanks!

white scarab
gritty finch
#

holy crap thank you!!!!

#

(im sorry if i missed this somewhere i cannot find it quickly in the server) how do you mod the game?

white scarab
#

It’s written for v0.9.8, but most modding is now on the v1.0.0 beta

#

For that you need to download the source code directly from GitHub instead of the releases tab (and then copy all of it into the folder)

gritty finch
#

thank you, ill start working on this in a while!!

magic brook
#

I made a mod

#

update

gritty finch
#

I don't know if this has been done before but what about a mod with like Uno cards or something lol

gilded vortex
#

I’ve seen ideas for specific UNO inspired effects like

polar schooner
#

Why are you over there

rigid jewel
#

We love duped cards that aren't placed into the hand correctly ❤️

polar schooner
#

but it's not a duped card

#

i have duplicated no cards here

rigid jewel
#

Wait what the

#

What the pair doin wtf

fast stone
#

two cards
five feet apart cuz they're not gay (they're ace)

drowsy onyx
#

ah yes... pa ir

terse dune
#

I was playing Cryptid and ended up pressing the View Integrity of Game Files button on Steam, and now whenever I press Play, it gives me this error message. Is there a way to just wipe your current run, while keeping all of your meta-progression? Can someone please help me?

brisk seal
#

you need Talisman

terse dune
brisk seal
#

well, idk then

terse dune
#

maybe I need to reinstall steammodded and lovely

white scarab
#

reinstall lovely

#

if you want to just fix the crash you can delete the save.jkr in your profile but your mods won't work anyway

fair bane
#

are there any 1.0.0 deck mods i could look at?

white scarab
#

Cryptid has a lot of decks

manic jasper
zenith drum
#

anyone know what mod/tool balatro university used in his most recent video for the faster restarting... if it's even public? (Video Title: "Canio go [not so] Big (World Record Attempt)" )

zenith drum
#

thanks

white scarab
#

yw

lyric estuary
#

Can someone help me?

candid sable
lyric estuary
#

Yeah

#

Playing a different mod right now

candid sable
#

You're on 0.9.8 or 1.0.0

#

I think the 0.9.8 version is no longer supported

swift pawn
#

hey all, I got a custom joker I think is written up, now I need to test. How do I make this show up in shop, without having to constantly reroll to find it? I'm using steamodded

#

i guess i could make a deck/challenge with it by default maybe...

grand geode
grand geode
swift pawn
#

oh thanks

swift pawn
#

INFO - [G] 2024-07-02 21:24:36 :: TRACE :: Loader :: Skipping non-Lua file or invalid header: kcvanilla.lua
Noticed my joker wasn't in the collection. Seems like my file is getting skipped? Invalid header?
kcvanilla.lua header:

--- STEAMODDED HEADER
--- MOD_NAME: KCVanilla
--- MOD_ID: KCVanilla
--- MOD_DESCRIPTION: KCVanilla
--- MOD_AUTHOR: [krackocloud]
--- LOADER_VERSION_GEQ: 1.0.0

Sorry if I'm missing something really obvious or in the docs, anyone know what's going on

swift pawn
#

I copied all my files to a new folder and it works now. Incredible

plucky pond
#

testing a new mod of mine which simply makes events run as fast as they possibly can

polar schooner
#

fastg

plucky pond
fast stone
#

runner's dream mod

plucky pond
#

this is probably going to break things but i'm testing it thoroughly

fast stone
#

i like how it looks!

plucky pond
grand geode
#

fucking YES please

#

i need to skip pack opening anim

rigid jewel
#

How well does this play with skip anims option in Talisman?

white scarab
#

I would guess pretty well

rigid jewel
#

Wonder if this is an “one or the other” or if it stacks.

white scarab
#

They override different aspects so they probably stack (Talisman with the number of animations and jenwalter’s mod with their speed)

plucky pond
#

basically, the game will run events as fast as its FPS will permit it to

gilded vortex
#

Although seeing the above comments maybe you could use both :0

plucky pond
jagged jay
#

how can i start making mods for this game? as in, what programs do i use. i already have lovely injector and steamodded, idk if i need anything else

tiny violet
#

Mods are written in a language called Lua, which is really easy to use if you have any programming experience

#

You don't need any tools other than a basic text editor, and all mods have their source code inside the mod folder so you can always open up an existing mod to see how they coded anything

#

There's also the Steamodded docs, which have a reference of everything you can do with the API

jagged jay
tiny violet
#

Just renaming your text files to .lua will work!

#

You've got to make sure you follow the right format for how Steamodded expects your lua files but yeah no fancy downloads needed

jagged jay
#

oh wow that's much easier than what i thought!!

#

and when i'm done coding smth, i just put it in the same folder i put other people's mods in, right?

tiny violet
#

Yep. There's no special packaging you need to do, just have your folder with the lua files and image assets in the standard Mods folder (just like any other mod)

jagged jay
#

cool!

#

also, is there a way to test stuff quickly?

tiny violet
#

If you hold down 'm' in-game, it will reload all mods and quit out to the main menu instantly without having to close the game

#

So, if you've made changes to your mod.lua, you can just save the file and hold 'm' to see those changes in-game

jagged jay
#

ohh okay. thanks!!

grand geode
tiny violet
#

I need to install DebugPlus, I've just been using a debug deck that loads in the jokers I'm currently testing at the start of the run

candid sable
#

Anyone also bump into the problem of shift + / not responding?

gilded vortex
#

It won’t have all extra features of DebugPlus

#

Which I don’t know because I don’t use

plucky pond
#

now you can play the game like a lightning bolt

wild thunder
#

mod idea: no 7s. straights and strength skip over 7, and 7s never appear in standard packs.

brisk seal
#

Why

white scarab
#

Aces are now considered 7s

wild thunder
#

because 7s are useless

white scarab
#

Not according to the four ULTRAKILL jokers in Cryptid

toxic cloud
#

you know what
screw you econ 7 that's way stronger than Cloud 9

brisk seal
#

I made a 7 based once

brisk seal
#

retiggered

latent nimbus
#

Retrigger every scored 7. Earn $7 for every scored 7.

toxic cloud
#

well, that sure sounds more straightforward

#

back then I accounted for shortening more than having a clear meaning

#

you just get 14 bucks per 7 assuming no more retriggers

latent nimbus
#

you could also word it like:
Retrigger all 7s, earn 7$ for every scored 7

fast stone
#

this implies it will also retrigger non scoring 7s

brisk seal
#

scored 7s are retriggered and give $7.

fast stone
#

so gold, steal and blue seal 7s could get retriggered as well

fast stone
latent nimbus
#

agreed

toxic cloud
round ore
#

1.0 out yet

brisk seal
#

steamodded 1.0.0?

round ore
#

Yeah

brisk seal
#

yes

#

it's been out

round ore
#

Like full release

brisk seal
#

no'

round ore
#

K still bo modding then my computer thinks 0.9.8 is a virus and deletes it repeatedly

zenith drum
#

anyone know of a mod that would enable / disable jokers, say if I wanted to disable some of the base game jokers to only play with modded ones.

fervent owl
#

The only solution is to tell Windows defender to ignore Balatro.exe folder

round ore
#

It deletes the version code when I run my virus detection software

fervent owl
#

What version code?

#

Idk I never used steamodded 0.9.8

humble saffron
urban grail
humble saffron
#

hm, windows defender catching lovely

urban grail
#

it's a thing that's happening to everybody

brisk seal
#

Finally a time it’s good to be using Mac

fervent owl
urban grail
#

how do I copy from the console log?

gilded vortex
#

which log

urban grail
gilded vortex
#

You can select and ctrl + insert

urban grail
#

thanks

round ore
#

So I'll ask again why isn't there just Steam workshop capability

polar schooner
#

None of this is official

#

to have workshop support would imply official mod support

feral jolt
#

It's recognized to some extent, otherwise why would this channel even exist

polar schooner
#

You'd still need the modding api to be built into the game itself to have proper workshop support

knotty roost
#

doin some texture stuff today

#

( I have to rearange every suit... 🥹 )

lean dune
#

the next best thing would probably be some integration to install mods in-game, which may be coming to steamodded down the line

round ore
#

It just has less issues framework wise for my laptop

lean dune
#

I see things more from the perspective of developing mods

#

also what's the difference on there being an official release for steamodded 1.0? the alpha has been available and is installed the exact same way a future release would be

#

lovely generally causes less antivirus issues (though defender recently just deleted it for almost everyone)

#

besides, if there's ever workshop support, modders aren't going to blindly abandon a well established modding API in steamodded

zealous wave
#

it should run the same regardless of whether you have a supercharged gaming pc or a laptop

round ore
#

My computer detects it as malware

#

Softwork*

lean dune
#

even lovely?

latent nimbus
#

and accessiblity

#

steam workshop is sorta built into steam itself, so theres a loeer barrier of entry, and generally they're scanned for viruses and whatnot

plucky pond
#

the moral is; not every game needs steam workshop integration. risk of rain 2 is a massive example of that

gilded vortex
brisk seal
#

first time using the tarot pallete, think it went well

gilded vortex
brisk seal
#

with this bonus blind yes

gilded vortex
#

I was thinking how knowing what bosses are coming could enable some interesting designs

#

Because they’d feel less punishing

brisk seal
#

that was the idea

carmine mortar
brisk seal
#

lemme just record a video

polar schooner
#

...I've managed to make a savefile so cursed that hitting the Next Round button just. Closes the game

#

how do i debug this

maiden marlin
polar schooner
#

Error loading file: Unexpected token 'o', ..."d","amt":to_big(1.4,"... is not valid JSON
yeah it uh, doesn't work with talisman

tranquil vessel
#

lol

#

balatro's savefile structure (.jkr) is just simple deflate-raw iirc

brisk seal
#

vanilla saves are non-comaptible with talisman

polar schooner
#

yeah so i have no idea why it just closes

#

i tried to open the game through command line to save the log but it didn't work

vivid kite
#

Hey, folks. Does anyone have a guide on installing Lovely on Mac? Whenever I drag the script to the Terminal it just gives me a “no permissions” error

#

I was trying to install Steamodded 1.0.0

#

But it won’t work without Lovely

maiden marlin
white scarab
polar schooner
#

the only thing i can think of it that it's... a perkeo crash, somehow??

#

since it's the only thing i have that triggers at shop end

#

Yeah I sold Perkeo and I could proceed to the next round

#

which makes me suspect it might be an Incantation issue?

grand geode
#

i'd assume it's trying to do some stuff with the eternal incan?

random silo
#

i just got the stupidest idea ever

grand geode
#

crashing instantly is usually an infinite loop

random silo
#

quick time events in balatro

#

i dont even know how i would begine to make it

#

and that would necessitate ui work meaning i would die a horrible and painful death

#

but one can dream

polar schooner
#

it would be nice if i could find actual log files for the game but it doesnt seem to save any

grand geode
#

can you find a lovely log for it

polar schooner
#

i don't know where lovely puts its logs

#

ah, lovely/log

#

Yeah nothing

#

it defaultlogs all the extra editins when i enter the shop but then the log just Ends

grand geode
#

rip

abstract agate
#

i just completed completionist+, but i did so with mods installed so I didn't get the achievement on steam - does anyone know a way to redo it and get the achievement without starting all over? do I need to reset my files?

white scarab
#

Uninstall the mods and finish a run

#

That works for unlocking it iirc

abstract agate
#

does it matter which deck i do it on?

#

just has to be vanilla balatro right?

grand geode
#

completionist+ is one of the retroactive ones, so you can install the achievementenabler mod

swift pawn
#

oh yeah. it's all coming together

cunning iris
#

wow those look freaking amazing

tiny violet
#

Do you ideas for the effects for any of them?

swift pawn
#

yeah i have an idea for all of them, but nothings set in stone. ideas are welcome

timid nexus
#

the modern art one isn't secretly a joker portrait 0/10 wiped from my memory given a bad yelp review /j wait oh my god it is

#

in all seriousness 10/10 art absolutely amazing

swift pawn
#

It is in fact vaguely inspired by the shape of joker

#

Kind of the right half of one

#

but yes, hard to see and not something i thought too hard abt

swift pawn
brisk seal
#

might be a bit insane

stoic oar
winter bone
#

yo who tf put a virus in my lovely 😭

#

alert level high 😭 🙏

#

windows defender can't find viruses but it sure can mark not viruses as such

stoic oar
#

long as its directly from github its all fine

misty geyser
#

kinda confused, whenever i add mods into my mods folder it doesnt show up in the mods tab of balatro, help?

winter bone
#

too much shit man

winter bone
#

has to load the mods

#

if that doesn't work it's your problem

misty geyser
#

how do i do that? im a little stupid

winter bone
#

by

#

restarting the fucking game

#

tf

#

you close the game

#

and then

#

you open the game

misty geyser
#

didnt do anything

winter bone
#

then

#

your problem

uneven cipher
#

might be dumb question but do most mods work on mac

misty geyser
#

i'd think so

winter bone
#

💀 mac users

uneven cipher
#

i play on ps5 actually

#

i have a pc but it would probably have a heart attack

fast stone
misty geyser
#

not 100% sure tbh

fast stone
#

lol, well make sure they are

misty geyser
#

cuz i legit just installed one and that ones working fine

uneven cipher
uneven cipher
#

maybe this isnt right?

toxic cloud
#

don't use run_lovely.sh like that

uneven cipher
#

it said that too

toxic cloud
#

just go to terminal and type sh path/to/run_lovely.sh

uneven cipher
#

ok

lean dune
#

Mods is in the wrong place in the game dir

#

it needs to go into the save directory

toxic cloud
#

I haven't checked the Finder image lmao

uneven cipher
#

im too slow for this

#

which one is the save directory vs the game directory

toxic cloud
#

the Mods folder should be in Library/Application Support/Balatro

uneven cipher
#

OH

#

i see

uneven cipher
toxic cloud
#

did you seriously type path/to/run_lovely.sh instead of the actual path

uneven cipher
#

i copied and pasted what you said

toxic cloud
#

🤦‍♂️

#

it should be a real path, like this

uneven cipher
#

i honestly didnt know that was what it meant lmao sorry

toxic cloud
#

hold option key, right-click run_lovely.sh and choose Copy file as pathname

uneven cipher
#

it still said it cant be opened for the same reason as the other

toxic cloud
#

right-click liblovely.dylib and choose Open with > Terminal

#

you'll still have the pop-up but it now has the Open button

uneven cipher
#

got it i think

toxic cloud
#

now it should be allowed to run

#

you're down to sh path/to/run_lovely.sh

uneven cipher
#

got it

#

sorry for being stupid LOL

toxic cloud
#

h

uneven cipher
#

it is not letting it load

#

immediate crash

#

ok now it wants to work

tiny violet
#

I might actually take inspiration from some of these for my own mod

blazing sky
#

mostly what the other dude was saying is right tho

gilded vortex
prime cairn
#

I'm trying to download something but for some reason downloading balatromods before is now causing errors for me

#

does anyone know how to fix the lovely injector issue?

grand geode
#

steamodded has more mods

prime cairn
#

I have no idea where to find the lovely injector thing

calm vessel
grand geode
#

lovely is an injector LMAO

prime cairn
#

or smth

grand geode
prime cairn
#

I don't remember

#

I need to delete it

grand geode
#

i don't think balatro has been out for a year

prime cairn
#

ik

#

I forgot

calm vessel
#

just verify file integrity on steam

prime cairn
#

ik but

#

I'm trying to download a diffrent thing

#

and it's for some reason trying to do something with the balatro mod file that doesn't even exist

calm vessel
#

what are you trying to do

prime cairn
#

uhh

#

so I have no idea how to fix this

#

so I was thinking if I could delete the lovey injector thing

#

this has happened for me multiple times

calm vessel
prime cairn
#

I'm not trying to download a balatro mod

#

I jsut want to fix this problem that is happening because of the balatro mod thing

grand geode
#

delete version.dll

calm vessel
#

i thought verifying did that oops

stone brook
#

nah verifying only checks balatro.exe i believe

grand geode
#

it checks for all files that steam downloads

#

all other files are untouched

prime cairn
stone brook
#

game directory

#

wherever balatro.exe is

prime cairn
#

It's not there...

grand geode
#

can you send a screenshot

stone brook
#

you probably left version.dll in downloads or your desktop or something

prime cairn
stone brook
#

look through your downloads folder, your desktop, wherever else you mightve put it

prime cairn
#

It was in system32..

grand geode
#

😭

prime cairn
#

so...

stone brook
#

wait no

prime cairn
#

?

stone brook
#

that one might be a normal version.dll

#

you should probably put that one back

prime cairn
#

k

stone brook
#

i would say to look at the date modified before removing it

#

but it probably changed because you deleted it

exotic shadow
#

Don't deletr the system32 one

prime cairn
#

there is 9 of them except for system 32 one...

stone brook
#

youre looking for a version.dll that is not 32kb

prime cairn
#

nvm it found a 10th one

stone brook
#

the lovely version.dll i have is 3114KB, so look for one around that big

#

yea youre gonna find a decent amount

prime cairn
#

YEA

#

I FOUND IT

#

Thanks guys for helping me

stone brook
#

out of curiosity, where was it

prime cairn
#

download 💀

stone brook
#

classic

fallow bramble
vivid kite
#

Also, guys, has anyone experience crashes with Codex Arcanum mod before?

swift pawn
white scarab
#

Yeah retrigger jokers were really complex to add

swift pawn
white scarab
#

I made an API for it in my mod that I plan to add to Steamodded eventually

gilded vortex
#

But I’m not sure that works exactly

swift pawn
#

I'm definitely saving jokerchan and power grid for last

glad sedge
#

guys i been having a brain meltdown after this one:

any ideas how to debuff a random card in hand?

Working code for flipping a random card as example:

function Blind:stay_flipped(area, card) local blind_type = self:get_type() if not self.disabled and area == G.hand then -- Apply the 1 in 7 chance to boss blinds only if blind_type == 'Boss' and pseudorandom(pseudoseed(self.name)) < G.GAME.probabilities.normal / 53 then return true end end return false end

THIS RIGHT HERE WONT WORK!!:
function Blind:debuff_card(area, card) local blind_type = self:get_type() if not self.disabled and area == G.hand and card.area ~= G.jokers then -- Apply the random chance to apply debuff for boss blinds only if blind_type == 'Boss' and pseudorandom(pseudoseed(self.name)) < G.GAME.probabilities.normal / 1 then card:set_debuff(true) end end end

#

using this debuffs the entire deck not only hand, i just cant wrap my head around why the flips works but debuff wont

function Blind:debuff_card(card) local blind_type = self:get_type() if not self.disabled and area ~= G.jokers then -- Apply the random chance to apply debuff for boss blinds only if blind_type == 'Boss' and pseudorandom(pseudoseed(self.name)) < G.GAME.probabilities.normal / 1 then card:set_debuff(true) end end end

grand geode
#

Blind:debuff_card's parameters are card, from_blind, not area, card

#

You want to check the card.area

grand geode
glad sedge
#

so if i get you right should i use:

if not self.disabled and card.area == G.hand and card.area ~= G.jokers then

#

mm no that nils the game.

maiden marlin
#

Are you on smods 0.9.8 or 1.0, and are you overwriting the base game Blind:debuff_card function?

glad sedge
#

for now overwriting since im quickly testing

maiden marlin
#

as opposed to using the smods mod.debuff_card

glad sedge
#

so what could i change to fix it? i feel like there is little code to change but cant realize what

maiden marlin
glad sedge
#

sure, one moment!

#

function Blind:stay_flipped(area, card) local blind_type = self:get_type() if not self.disabled and area == G.hand then -- Apply the 1 in 7 chance to boss blinds only if blind_type == 'Boss' and pseudorandom(pseudoseed(self.name)) < G.GAME.probabilities.normal / 53 then return true end end return false end

function Blind:debuff_card(area, card) local blind_type = self:get_type() if not self.disabled and area == G.hand then -- Apply the random chance to apply debuff for boss blinds only if blind_type == 'Boss' and pseudorandom(pseudoseed(self.name)) < G.GAME.probabilities.normal / 1 then card:set_debuff(true) return end end end

@maiden marlin flipping works just fine and flips only drawn hand, if i use

if not self.disabled and card.area ~= G.jokers then

it considers the deck and not only drawn hand. so its half working!!

#

the other method discord wouldn't allow me to send in one message:

function Blind:debuff_hand(cards, hand, handname, check) if self.disabled then return end if self.debuff then self.triggered = false if self.debuff.hand and next(hand[self.debuff.hand]) then self.triggered = true return true end if self.debuff.h_size_ge and #cards < self.debuff.h_size_ge then self.triggered = true return true end if self.debuff.h_size_le and #cards > self.debuff.h_size_le then self.triggered = true return true end if self.name == "The Eye disabled" then if self.hands[handname] then self.triggered = true return true end if not check then self.hands[handname] = true end end if self.name == "The Mouth disabled" then if self.only_hand and self.only_hand ~= handname then self.triggered = true return true end if not check then self.only_hand = handname end end end if self.name == 'The Arm disabled' then self.triggered = false if G.GAME.hands[handname].level > 1 then self.triggered = true if not check then level_up_hand(self.children.animatedSprite, handname, nil, -1) self:wiggle() end end end if self.name == 'The Ox disabled' then self.triggered = false if handname == G.GAME.current_round.most_played_poker_hand then self.triggered = true if not check then ease_dollars(-G.GAME.dollars, true) self:wiggle() end end end end

lean dune
#

that's not very readable, consider using codeblocks:
```lua
code_here()
```

maiden marlin
#

Have you updated Blind:debuff_card(card) based on Myst's advice?

#

You still have incorrect arguments

#

as for design, if you're going to debuff cards in hand, I'd process debuffs on the whole deck- then people know what cards will be debuffed

glad sedge
#

i used

function Blind:debuff_card(card, from_blind)
    local blind_type = self:get_type()
    if not self.disabled and card.area == G.hand then
        -- Apply the random chance to apply debuff for boss blinds only
        if blind_type == 'Boss' and pseudorandom(pseudoseed(self.name)) < G.GAME.probabilities.normal / 1 then
            card:set_debuff(true)
            return
        end
    end
end

but wont debuff anything

#

people wont know what cards are flipped so i followed that idea. do you think its possible to achieve?

maiden marlin
#

It's definitely possible to achieve. I just want to make sure your effect isn't one of the ones that would benefit from being debuffed in deck. If it's random then it's fine

#

oh, you have to call Blind:debuff_card() manually. think of it as recalculating whether a card should be debuffed or not

glad sedge
#

right, i want it to be random .later i will add more conditions like top amount of debuffs but first i need to get this right, so only drawn hand is where the debuff happens

maiden marlin
#

Blind:debuff_card() is only called at specific points in the base game. You'll want to call it after drawing a hand

lean dune
#

is it intentional that you're putting other debuffs from blinds out of use?

maiden marlin
glad sedge
#

exactly that yes.
can you guide me in how to call it after drawing the hand?

lean dune
#

I see

glad sedge
#

my mind thinks it should be really similar to how im succesfully flipping random drawn cards

maiden marlin
#

yeah, it's completely different

#

there are a couple places in the code you could do it, you could modify Blind:drawn_to_hand

#

I think that's a reasonable one

glad sedge
#

right, i modified that before:

function Blind:drawn_to_hand()
    if not self.disabled then
        if self.name == 'Cerulean Bell disabled' then
            local any_forced = nil
            for k, v in ipairs(G.hand.cards) do
                if v.ability.forced_selection then
                    any_forced = true
                end
            end
            if not any_forced then 
                G.hand:unhighlight_all()
                local forced_card = pseudorandom_element(G.hand.cards, pseudoseed('cerulean_bell'))
                forced_card.ability.forced_selection = true
                G.hand:add_to_highlighted(forced_card)
            end
        end
        
        if self.prepped and #G.jokers.cards > 0 then
            local jokers = {}
            for i = 1, #G.jokers.cards do
                if not G.jokers.cards[i].debuff or #G.jokers.cards < 2 then
                    jokers[#jokers + 1] = G.jokers.cards[i]
                end
                G.jokers.cards[i]:set_debuff(false)
            end 
            
            local _card = pseudorandom_element(jokers, pseudoseed('crimson_heart'))
            if _card and self:get_type() == 'Boss' and pseudorandom(pseudoseed(self.name)) < G.GAME.probabilities.normal / 100000 then
                if _card.area == G.jokers then
                    _card:set_debuff(true)
                    _card:juice_up()
                    self:wiggle()
                end
            end
        end
    end
    self.prepped = nil
end
#

the idea was to take the crimson heart ability and apply it globally to all blinds that are boss

#

it works! but.. i have to elaborate the debuff code here for drawn hands too it seems

#

im not so sure how to do so but if you say i should try it here its a good starting point

maiden marlin
#

not sure I got my point across, sorry. I was saying, just add a line that calls Blind:debuff_card on all cards in G.hand.

there is an issue in that set_debuff is supposed to recalculate the debuffed state of a card. so you'll have to save the result of the random check (debuffed or not)

glad sedge
#

that set_Debuff is disabling the joker correctly after some tests.

maiden marlin
#

sorry, edited above. call Blind:debuff_card

glad sedge
#

as far as i know i only changed the detection of blind from crimson to type boss and added pseudorandom and also a last check for jokers

maiden marlin
#

alright. to update the debuff on cards you'll have to call Blind:debuff_card on all cards in G.hand each time a hand is drawn

glad sedge
#

but not sure if this is correct before attempting to call it:

function Blind:debuff_card(card, from_blind)
    local blind_type = self:get_type()
    if not self.disabled and card.area == G.hand then
        -- Apply the random chance to apply debuff for boss blinds only
        if blind_type == 'Boss' and pseudorandom(pseudoseed(self.name)) < G.GAME.probabilities.normal / 1 then
            card:set_debuff(true)
            return
        end
    end
end
maiden marlin
#

I think it's correct

#

but, there's lots of little things that can be wrong. go ahead and try it out as is

#

hm, actually I think no cards are in hand when Blind:debuff_card() is called at the start of the round, so your function won't do anything unless you actually add another call when each hand is drawn

glad sedge
#

function Blind:stay_flipped(area, card)
    local blind_type = self:get_type()
    if not self.disabled and area == G.hand then
        -- Apply the 1 in 7 chance to boss blinds only
        if blind_type == 'Boss' and pseudorandom(pseudoseed(self.name)) < G.GAME.probabilities.normal / 53 then
            return true
        end
    end
    return false
end

function Blind:debuff_card(card, from_blind)
    local blind_type = self:get_type()
    if not self.disabled and card.area == G.hand then
        -- Apply the random chance to apply debuff for boss blinds only
        if blind_type == 'Boss' and pseudorandom(pseudoseed(self.name)) < G.GAME.probabilities.normal / 53 then
            card:set_debuff(true)
            return
        end
    end
end
grand geode
#

Blind:debuff_card() is called in set_blind which is before drawing cards i believe

glad sedge
#

and then

#
-- Debuff all cards in G.hand with a probability
        for _, card in ipairs(G.hand.cards) do
            local blind_type = self:get_type()
            if blind_type == 'Boss' and pseudorandom(pseudoseed(self.name)) < G.GAME.probabilities.normal / 1 then
                self:debuff_card(card, from_blind)
            end
        end
    end
#

seemed to do the job

#

@maiden marlin thank you, and everyone else!

maiden marlin
#

great! (this will break with DNA but let's not worry about that for now)

glad sedge
#

how so?

#

i see... i tested

#

any idea how to avoid calling the method when using dna or any other method that draws cards to hand , cryptid

maiden marlin
#

that's really tricky. what you want is to roll for a debuff on the new card, while keeping the old debuffs the same

glad sedge
#

actually playing cards will also apply debuff to alraedy cards drawn. i thought this was for the drawn cards only not cards in hand

maiden marlin
#

so, you'll need to set a variable on the card after you roll for yes/no on debuffing it

#

try setting something like card.ability.ANY_NAME_HERE = ... and clearing that variable on every card in Blind:defeat()

glad sedge
#

how about this:

        local new_cards = {}
        for _, card in ipairs(G.hand.cards) do
            if not card.drawn_to_hand_checked then
                card.drawn_to_hand_checked = true
                new_cards[#new_cards + 1] = card
            end
        end


        -- Debuff 
        for _, card in ipairs(new_cards) do
            local blind_type = self:get_type()
            if blind_type == 'Boss' and pseudorandom(pseudoseed(self.name)) < G.GAME.probabilities.normal / 1 then
                self:debuff_card(card)
            end
        end
    end
maiden marlin
#

you'll want to set a variable that keeps track of whether the card was debuffed- if blind:debuff_card() is called, you want to return the same answer

glad sedge
#

but after niling the blind on defeat, will that be a problem ? will it track purged and non existant debuffed cards?

#

i added


            self.dissolve = nil
            self:set_blind(nil, nil, true)
            
            -- Clear debuff effects on all playing cards
            for _, card in ipairs(G.playing_cards) do
                card:set_debuff(false)
            end
            
            -- Clear debuff effects on all jokers
            for _, card in ipairs(G.jokers.cards) do
                card:set_debuff(false)
            end
            
            return true
        end)
lean dune
#

nil for non-checked, false for non-debuffed cards

#

easy as that

glad sedge
#

i was surprised the blind defeat didnt have this code as failsafe, probably a good reason im missing

#

look at this magic code:

function Blind:debuff_card(card, from_blind)
    local blind_type = self:get_type()
    if not self.disabled and card.area == G.hand then
        -- Apply the random chance to apply debuff for boss blinds only
        if blind_type == 'Boss' and pseudorandom(pseudoseed(self.name)) < G.GAME.probabilities.normal / 10 then
            if not card.debuffed then
                card:set_debuff(true)
                card.debuffed = true
            end
        end
    end
end
uneven cipher
fallow trout
#

Could you invite me to this please? I so want to try multiplayer with my spouse.

merry marlin
#

could anyone help me learn how to mod balatro? I've never modded a game before so I'm new to all of it

misty geyser
#

are error screens normal to see?

plucky pond
tranquil vessel
misty geyser
#

figured out it was because of a mod i was using, got rid of it

#

it was the joker display one

brisk seal
#

in 1.0.0

west hill
#

4/3 D:

brisk seal
#

i just didn't add a check yet

icy lily
fallow bramble
icy lily
#

ty o7

brisk seal
#

woohoo!

fair bane
#

my game always seems to crash when (i assume) an unlock pop up appears when going to the main menu and i dont know how to fix it without disabling all my mods

signal basin
#

achievements are not accepted by steam even though I use achievement enabler, can someone help me

white scarab
#

you have to finish a run for it to register iirc

exotic shadow
#

Can't tell what mod is causing it with just this

fair bane
#

ah alright

#

one sec then

exotic shadow
#

Not sure but cryptid might be the culprit

tiny violet
plucky pond
#

karl would approve of this

tiny violet
#

I think the effect is interesting - upgrades your hand type, but you can hold onto it and wait until you've got the perfect hand to use it on

plucky pond
#

the trick is that how it upgrades it depends on the cards

#

e.g. mult cards will permanently add +4 mult to the hand type

#

currently it considers the card's rank, enhancement and edition for upgrades

#

and i've also made it so that when a card is exhausted/destroyed, it will level up the hand once

misty geyser
#

should i be using steammodded 1.0?

exotic shadow
#

Depends

#

If you just want to play with mods, see what version your mods support

#

If your developing mods, you'll probably want to consider 1.0, as that way you don't have to rewrite once it's final and also I'd you have issues, we can fix them before 1.0 releases.

grim fjord
#

What do I need to do differently in order to create a modded Joker in code? I can create vanilla Jokers just fine, but attempting to create a modded Joker crashes with the following error:

functions/common_events.lua:2245: attempt to index local 'center' (a nil value)
gilded vortex
grim fjord
#
apply = function(back)
  G.GAME.joker_buffer = G.GAME.joker_buffer + 1
  G.E_MANAGER:add_event(Event({
    func = function() 
    local card = create_card('Joker', G.jokers, true, nil, nil, nil, 'j_afmad', "afdeck")
    card:add_to_deck()
    G.jokers:emplace(card)
    card:start_materialize()
    G.GAME.joker_buffer = 0
    return true
  end}))
end
grim fjord
#

Mod ID is 'AF2024', Joker key is 'j_afmad'

gilded vortex
grim fjord
#

I'm a bit confused
If I change the Joker to have key = 'afmad' and the Mod ID is still AF2024, what key do I have to call?

grand geode
#

did you specify a prefix in your mod header?

grim fjord
#

I... might not have

grand geode
#

then your key should be j_AF20_afmad

#

if you don't specify a prefix, it's the first four characters of the mod id

grim fjord
#

Ah ok

grand geode
#

you might want to change the prefix though

grim fjord
#

What's the parameter name for that? MOD_PREFIX or something else?

grim fjord
grim fjord
#

Thanks everyone

gilded vortex
#

How would you rank the following Blinds:

  1. Base Chips can’t be greater than money
  2. +5% Blind Size for each $1
  3. All cards are debuffed if you have $10 or more (increased $ on victory)
fast stone
#

rank as in difficulty or?

grim fjord
#

Going off immediate impressions I'm'a say 1, 3, 2 from easiest to hardest

fast stone
#

yeah for difficulty id go with 1, 3, 2

gilded vortex
#

1 makes the most sense as a Showdown Blind, while one of the other two make more sense as normal Blinds

#

Maybe I’ll buff 1 and I’ll think which of the other two I want to add (maybe both)

grim fjord
#

1 would be harder if you specified Chips in general, but with specifically Base Chips seems pretty easy to bypass with your garden variety chip engine

#

2 is Violet Vessel as long as you have $40 or more (which you are probably doing in the later pre-endless antes, especially if you have Seed Money)

gilded vortex
grim fjord
#

3 is Verdant Leaf as long as you have $10 or more (which you are almost certainly doing past ante 2 or 3), though you can roll down in the previous shop to get past that, and the increased reward makes it more viable to do that

#

They're giving me "Finisher Blinds' little siblings" vibes, which I weirdly like the more I think about it

gilded vortex
#

There’s also a combination of 2 and 3 which scales faster (e.g. +10%) but only for each $1 above $10

steel radish
#

I recently installed steamodder 0.98 and using a hand speed mod. Seems to not be loading at all now. Do I need to update anything? Sorry I'm a n00b at this so appreciate any help 🙂

#

4 speed super slow now xD

fervent owl
#

Really depends on how you play, but more often than not I'd invest into planets, so having a cap on base chips is rough

gilded vortex
#

Though I changed Chips to X5 because the original was too rough

#

I didn’t find the non-Showdown version (only Base Chips) that hard, but I’d also change it to X5

gilded vortex
gilded vortex
#

Report the bug in the mod’s thread in #1209506514763522108 preferably with the actual error message

gritty finch
#

Where is a good place where I can like browse Balatro mods?

gilded vortex
shrewd plume
#

is there a balatro mod which disables joker cap?

stable lagoon
#

A lot of mods mention "steammodded 1.0.0+" but where in the world can you even find it? I can only find 0.9.8 and back..

stable lagoon
#

lol thanks 😩

#

Any ideas what it could be where only one mod doesn't load any graphics? Trying out snoresvilles turbulent jokers, but the other jokerpacks I've added shows new card graphics normally. It plays correctly as well, just that it's jimbo on every card scholar

#

the images are all in the directory when I check

stone brook
#

theres like, hundreds of different ways that could happen

#

i'd imagine its either an incorrectly named directory or sprite sheet

agile stirrup
#

guys, what is the name of mod with colour palettes like this?

stone brook
#

morefluff

agile stirrup
#

thx

stable lagoon
versed bough
#

are there a collection of art templates for mods, eg. blank jokers, blank tarots, blank spectrals, blank planets

stable lagoon
#

Oh another quick question, verifying steam files completely removes steamodded/modfiles from %appdata% right? 👍

fast stone
#

um, not sure
i don't think it will

stone brook
#

so %appdata% is completely untouched i think

stable lagoon
stone brook
#

lovely (version.dll) has been getting caught by anti-viruses recently so its probably that

stable lagoon
#

yeah I got that too when I installed it

random silo
gilded vortex
#

I presume they don’t have the mod installed and want to install it

agile stirrup
#

guys, how to update steamodded? Just launch new injector?

calm vessel
white cedar
#

Can someone link me to a mod that disables animations?

rare shell
#

isn't it in the vanilla game?

white cedar
#

nope

rare shell
#

I'm pretty sure it is

white cedar
#

directly disables, not speeds up.

fervent owl
#

Skips animations?

fast stone
#

skip the animations, you mean?

white cedar
#

ye

gilded vortex
#

Talisman?

white scarab
white scarab
#

yw

urban grail
#

is this a good wiki for my mod?

GitHub

Contribute to cerloCasa/Easier-Scoring development by creating an account on GitHub.

fast stone
#

i think it looks good

fervent owl
#

The only thing I don't understand is why call methods aChips and aMult

#

But then also addMoney

#

Single letters in names are pretty confusing

grand geode
#

stay true to the thunkness

fallow bramble
#

Should be called addingAllTheBonusChipsFromTheJokerToTheTotalOfTheChipsCount

fervent owl
#

Nah, it should be called ac()

grand geode
#

c()

fervent owl
#

+c()

grand geode
#

instructions unclear, accidentally added chips in c++

fervent owl
#

Accidental operator override 🦭

stone brook
#

c + n where n is the amount of chips you add

#

thats the entire line

fervent owl
#

I can see that work

#

Wait no

grand geode
#

hey guys did you know that love2d shaders are a fucking nightmare

fervent owl
#

Sounds like fun

brisk seal
#

least useful consumable playing card ever.

#

(it can only be used on the blind select screen.)

shrewd plume
#

Is there such a thing?

abstract sand
#

anyone have a good grasp on lonely/brainstorm mod here?

#

i followed the readme.txt but still nothing is happening

white scarab
#

firstly, is Lovely installed? (you should see a command prompt open before Balatro if so)

abstract sand
#

ope yes

#

and actually i resolved it

#

lovely was pathing to a different mod folder

#

tyvm for your prompt reply

white scarab
#

yw

agile stirrup
#

how can I fix that? (here's the mod list)

rare shell
humble saffron
#

they never expect it

hardy brook
agile stirrup
rare shell
#

you're looking at 0.9.8, but you need 1.0.0 steamodded

umbral atlas
#

out of curiosity, how much did yall play before starting to mod the game, did most people go for the "all gold stickers on all jokers" thing before modding?

#

im just bored/curious

fervent owl
#

I finished c++ before getting into modding

#

I don't really play modded content, or not yet at least, just started creating mods

#

I think majority didn't do c++ tho

azure sierra
#

Does anyone know if there is a list of mods for steamodded 1.0?

white scarab
sturdy salmon
rugged dune
#

does anyone know if the boredom joker (i think) can retrigger copies of itself?

#

like if i had 2 would they keep triggering each other

#

from cryptid

#

or could it retrigger a brainstorm thats copying it or similar

white scarab
#

No

#

The way I have the API set up retrigger jokers can’t trigger other retrigger jokers, otherwise you could get infinite loops with ex. Boredom and Canvas

rugged dune
#

cool i thought so

#

my pc is just dying

#

current fps 6 😭

#

its been counting my score for the past 20 mins

#

im gonna have to pull the plug

white scarab
#

Or you could use Talisman

#

And reload the save

#

Low FPS probably means a lot of calculating

rugged dune
#

i have it set to disable scoring animation already if thats what you mean lol

white scarab
#

ye

rugged dune
#

ill just have to end the run here then

#

exponentia is very strong lol

#

especially with double scale

polar schooner
#

uhhhh huh

#

it used three standard packs at the same time

fair mango
#

does any1 else have an issue where they cant screen share balatro to discord after modding it

#

like instead of showing hte game it shows the

#

other window that opens up

#

this thing

winter bone
#

When is the dice mod getting art

winter bone
#

I don’t think anyone has tried

calm vessel
#

could be wrong tho

grand geode
#

if there are multiple windows discord should be able to pick that up

fair mango
#

think it just has to do w/ playing balatro on fullscreen idk why

#

i changed to windowed borderless and it works fine

grand geode
#

i was on windowed the whole time

fast stone
grim fjord
#

This game's robustness continues to astound me

rigid jewel
#

(Thank Observatory for this)

fair mango
#

how do i deactivate it 🙏

glad sedge
#

spent 24 hs trying to fix this: i need to guarantee 10 random different debuffed cards, anyone can help me, please?

function Blind:debuff_card(card, from_blind)
    self.debuff_count = self.debuff_count or 0
    self.debuff_attempted = self.debuff_attempted or false
    self.debuff_target_count = self.debuff_target_count or love.math.random(0, 10)

    if not self.disabled and not self.debuff_attempted then
        if self:get_type() == 'Boss' and card.area ~= G.jokers then
            if self.debuff_count < 10 then
                -- Check if the debuff has already been applied
                if not card:has_debuff() then
                    card:set_debuff(true)
                    self.debuff_count = self.debuff_count + 1
                end
            end

            if self.debuff_count >= self.debuff_target_count then
                self.debuff_attempted = true
            end
        end
    end
end
#

if anyone know how, dm me no matter the time, i will really appreciate this

fast stone
fair mango
#

tysm bro

#

had no idea 😭

lunar fable
#

why dose this happen?

grand geode
#

Talisman moment

#

do you have Talisman installed?

lunar fable
#

yes

#

it was working last week and i havent updated

#

mod list

#

steammoded isint working/instaled?

lunar fable
#

is there a mod that repetedly refreshes seeds untill the first shop has something spesific or a sertin skip tag with something in it (like soul)

grand geode
#

i think i fucked something up

#

i'm not sure what

tranquil vessel
#

looks fine to me

#

then again I probably need new glasses

stoic oar
grim fjord
#

Is there a way to check the game state immediately after using a consumable? For example, say I wanted to check the game state after using a Wheel of Fortune to see if it granted any editions, how would I go about that?

#

Using context.using_consumeable by itself checks the game state prior to the consumeable going off, and adding context.after doesn't work

maiden marlin
#

Just overwrite use_consumeable, probably

#

(contexts are very limited, not everything is implemented)

grim fjord
#

Overwriting the context completely seems a bit extreme, but is there a way to make my own context?

toxic cloud
#

Simplified English WIP balatrojoker

grim fjord
#

How would I go about doing that?

gilded vortex
grim fjord
#

Aight, so I managed to hook into use_consumable and make my own context:

local old_usecon = Card.use_consumeable
Card.use_consumeable = function(self, area, copier)
    local out = old_usecon(self, area, copier)
    for i = 1, #G.jokers.cards do
        G.jokers.cards[i]:calculate_joker({after_consumeable = true, consumeable = self})
    end
    return out
end
#

But for some reason the new joker calculation is still taking place before it sees an edition has been added

lean dune
#

that's due to event logic

#

you need to use an even yourself if you wanna go after the events from the use function are done

devout citrus
#

swomebody here that can help me?

#

keeps crashing when i try to start

grand geode
#

update lovely

devout citrus
#

how exactly?

lean dune
#

oops, there

#

get this one

devout citrus
#

nope, still not working idk

#

now i get
Error

Syntax error: game.lua:4: '=' expected near 'Game'

Traceback

[love "callbacks.lua"]:228: in function 'handler'
[C]: at 0x7ffa7b572fa0
[C]: in function 'require'
main.lua:16: in main chunk
[C]: in function 'require'
[C]: in function 'xpcall'
[C]: in function 'xpcall'

lean dune
#

verify game files on steam

sturdy canyon
#

now get ready for

exotic dagger
#

600 drunks?

bright comet
fallow bramble
glad sedge
# glad sedge spent 24 hs trying to fix this: i need to guarantee 10 random different debuffed...
function Blind:debuff_card(card)
    -- Shuffle function
    local function shuffle(t)
        local n = #t
        for i = n, 2, -1 do
            local j = love.math.random(1, i)
            t[i], t[j] = t[j], t[i]
        end
    end

    self.debuff_count = self.debuff_count or 0
    self.debuff_attempted = self.debuff_attempted or false

    if not self.disabled and not self.debuff_attempted then
        if self:get_type() == 'Boss' and card.area ~= G.jokers then
            -- Gather all cards into a single list
            local all_cards = {}
            for _, playing_card in ipairs(G.playing_cards) do
                if playing_card.area ~= G.jokers then
                    table.insert(all_cards, playing_card)
                end
            end

            -- Shuffle the list of all cards
            shuffle(all_cards)

            -- Debuff the first 10 cards from the shuffled list
            for _, playing_card in ipairs(all_cards) do
                if not playing_card.debuff then
                    playing_card:set_debuff(true)
                    self.debuff_count = self.debuff_count + 1
                    if self.debuff_count >= 13 then
                        self.debuff_attempted = true
                        break
                    end
                end
            end
        end
    end
end
`

just in case anyone cared about this mechanic i implemented. finally got it working.
it debuffs in this case 13 cards minimum each blind boss, no matter which boss. and shuffles it with fisher yates shuffle algorithm, which i think is pretty neat

latent flax
#

Quick question, I modded Balatro and put something in through the directory, yet I can no longer find the mod file on my computer, and it essentially won't let me mod anything else into the game

sturdy canyon
random silo
#

Balanced

woeful prism
#

I use a custom card deck where hearts are red, diamonds are blue, clubs are green and spades are black. I managed to use a lua file to change the card deck and joker png's. But how do I change the in game texts to the correct colors? Thanks.

random silo
#

I think those are hard coded

white scarab
#

You can change them with Trance I think

#

Unless Smeared hardcoded it

latent flax
west hill
#

they're not hardcoded

#

its either G.C.SUITS or G.C.SO_1

#

I don't remember which one

fervent owl
#

it is suits yeah

#

theres' like 3 tables

#

for suit colors

#

or wait

#

lemme check

#

might be misremembering smth

west hill
#

iirc suits is set to either so_1 or so_1 depending on if you have high contrast enabled or not

fervent owl
#

this is G.C table

rare shell
random silo
gilded vortex
#

You can also execute a command to open it directly but I forget if it’s just %appdata% or if it needs something before

tiny violet
#

I believe it's just Windows + R -> %appdata%. That's what I've been using.

sturdy canyon
fallow bramble
west hill
brisk seal
#

4 in 3 chance to float away

west hill
#

oh snap good spot

#

now to figure out how to independently change atlas positions

polar schooner
#

gives... how much??

brisk seal
#

white scarab
#

Is that purple one Epic?

#

Wait nvm

brisk seal
polar schooner
#

it uses the foil(?) cycling colour

white scarab
#

DARK_EDITION

polar schooner
#

uhhhh problem

#

rip The Run

brisk seal
#

That’s cruel blinds for you

#

Wait mystic summit?

#

How’d that get debuffed

glad sedge
polar schooner
glad sedge
polar schooner
grand geode
#

Go ahead. Play the game.

brisk seal
#

lol

polar schooner
#

i love , it's my favourite game

faint crown
brisk seal
#

that's clearly .

candid sable
candid sable
toxic cloud
#

Ig this is much shorter than the original

polar schooner
#

"Cards you already own can appear again"

toxic cloud
#

that doesn't apply to booster packs having multiple copies of a card you don't own

grand geode
#

Duplicate cards can appear

toxic cloud
#

should I straight up make a WIP post for this tho

brisk seal
toxic cloud
#

can multiple copies of a voucher appear tho (I'm not talking about Cryptid's Equilibrium deck)

brisk seal
#

voucher tag

toxic cloud
#

it makes the next ante voucher appear simultaneously with current one

grim fjord
#

This calculate function took like three days to write

#

But it finally does what I want

#

No hooking or added contexts required

tranquil vessel
#

lmao I like the <= check

vocal jewel
#

I am become plant, destroyer of runs

toxic cloud
#

gotta love that Oppenheimer tarot

vocal jewel
#

too much power for one man to handle...

opaque badge
#

Are there any mods to launch the game faster? xD

brisk seal
#

May I suggest a catapult?

glad sedge
#

any ideas to completely rework ancient joker? i want to give it another task but dont know what

glad sedge
#

little trick to show the debuff layer above the flipped joker if is debuffed:

        elseif self.sprite_facing == 'back' then
            local overlay = G.C.WHITE
            if self.area and self.area.config.type == 'deck' and self.rank > 3 then
                self.back_overlay = self.back_overlay or {}
                self.back_overlay[1] = 0.5 + ((#self.area.cards - self.rank) % 7) / 50
                self.back_overlay[2] = 0.5 + ((#self.area.cards - self.rank) % 7) / 50
                self.back_overlay[3] = 0.5 + ((#self.area.cards - self.rank) % 7) / 50
                self.back_overlay[4] = 1
                overlay = self.back_overlay
            end

            if self.area and self.area.config.type == 'deck' then
                self.children.back:draw(overlay)
            else
                self.children.back:draw_shader('dissolve')
            end

            if self.sticker and G.shared_stickers[self.sticker] then
                G.shared_stickers[self.sticker].role.draw_major = self
                G.shared_stickers[self.sticker]:draw_shader('dissolve', nil, nil, true, self.children.center)
                if self.sticker == 'Gold' then 
                    G.shared_stickers[self.sticker]:draw_shader('voucher', nil, self.ARGS.send_to_shader, true, self.children.center) 
                end
            end

            -- Draw debuff shader if the card is debuffed
            if self.debuff then
                self.children.back:draw_shader('debuff')
            end
        end
sturdy canyon
#

deck of equilibrium:

sturdy canyon
#

thats not very normal is it

polar schooner
#

so question about dx tarot curses... are the icons for them meant to disappear once you fulfill the criteria to lift the curse or is it a marker that the curse cannot appear again

urban grail
polar schooner
#

no rare cards annihilatedforever

urban grail
#

yeah that's a shame

polar schooner
#

...?????

#

oh there is a fallback curse, neat

woeful prism
# fervent owl

Thank you for the reply. I tried inserting this code but it doesn't work. What am I missing?

gilded vortex
#

Did you overwrite the existing function instead of hooking?

lean dune
#

you can just change G.C.SO_1 in your mod code without overriding set_globals

woeful prism
gilded vortex
#

I mean, as you wrote it it looks more like an overwrite than a hook 🤔

tranquil vessel
#

victin wants you to "wrap" around the original function, and replace all of its calls with the wrapped version
aure's solution would probably work too though

lean dune
#

in fact, set_globals is called before mods are loaded, so you could only possibly change it with lovely

#

and if the overwrite was being applied, all other colors would be gone from the game, which would have caused major issues

#

a hook would equally have no effect

woeful prism
#

Ok, I'm in over my head... What should I put into mod lua to overwrite the suite colors?

lean dune
#

G.C.SO_1 = {...}

tranquil vessel
#

G.C.SO_1 = ... with all the hex values you already have there

gilded vortex
#

I was trying to understand why it didn’t break which is why I asked if it was a hook or not

#

I wasn’t trying to suggest hooking

woeful prism
gilded vortex
#

Well, Hearts’ isn’t

grand geode
#

hearts has one extra character

woeful prism
grand geode
#

please don't reply ping me, thanks

lean dune
#

yeah I'm pretty sure the game doesn't allow hexes to be 7 chars

woeful prism
#

no more game crash, but it isn't working

gilded vortex
gilded vortex
#

Or change the contrast

#

If the game is still open

lean dune
#

6 or 8, but most definitely not 7

grand geode
#

yeah its RRGGBB or RRGGBBAA

woeful prism
# gilded vortex Try `SO_2`

Tried SO_2 and SUITS... same result. Change contrast? Man, here was I thinking it would be easy... The comment says these values are for the high contrast suit colors. I'm using the standard suit colors.

west hill
#

SO_1 is normal colours

#

You could try setting SO_1 and SUITS, I’m not sure where the game overwrites the values

woeful prism
tranquil vessel
#

well that was a fun rabbithole

#

somewhere, at some point the colours get saved in the function LOC_COLOURS at misc_functions:1493

#

when I override (or hook into) that function I can change the colours

west hill
#
for suit, _ in pairs(G.C["SO_1"]) do
    local colour = (SMODS.AltTextures.Suit[name].suits and SMODS.AltTextures.Suit[name].suits[suit] or SMODS.AltTextures.Suit["Default"].suits[suit] or nil)
    G.C["SO_1"][suit] =  (colour and HEX(colour) or G.C["SO_1"][suit])
    G.C.SUITS[suit] = G.C["SO_1"][suit]
end
``` this 100% works though
tranquil vessel
#

oh, that's cool

#

but I'm new to steamodded, and I'm getting an error on AltTextures?

west hill
#

AltTextures aren't released yet

tranquil vessel
#

bruh

woeful prism
west hill
#

but in that code snippet the AltTextures stuff is just grabbing a table of suit colours like this

suits = {
        Clubs = "1e7a46",
        Spades = "255e85",
        Diamonds = "d18a18",
        Hearts = "ff4ca1"
    },
tranquil vessel
#

yeah doesn't work for me if I try something like this

suit_table = {Hearts = HEX('ed2324'), Diamonds = HEX('3bb3f8'), Spades = HEX("000000"), Clubs = HEX("ffffff")}

for suit, _ in pairs(G.C["SO_1"]) do
    G.C["SO_1"][suit] = suit_table[suit]
    G.C.SUITS[suit] = G.C["SO_1"][suit]
end
tranquil vessel
west hill
#

are you on smods 1.0?

tranquil vessel
#

... I am, and now that you say it, that might be an issue

west hill
#

I don't know why that wouldn't work for you then :/

#

oh, your keys aren't capitalised

tranquil vessel
#

oh, that might do it huh

gilded vortex
#

By the way @west hill do you want to add additional colors?

woeful prism
gilded vortex
#

I had code to generate a Wild color that smoothly transitions between the four different suit colors, and it automatically updated when changing colors

tranquil vessel
#

^ depends on what version of steamodded you're using

west hill
#

I wasn't planning on adding any additional colours like that

#

That sounds interesting though

tranquil vessel
woeful prism
gilded vortex
#

That’s 1.0

gilded vortex
#

It has no INIT

tranquil vessel
#

(I did change the colours for visibility btw, so you'll have to change those back)

west hill
#

oh maybe the early version of alttextures that got merged in by mistake is stopping you guys from updating the table normally

tranquil vessel
#

lmao that'd be something

west hill
#

that would also explain why mine works

#

yeah, I think it would load your code but then it will overwrite it when it sets the card texture to the default one

woeful prism
tranquil vessel
#

something like this

--- STEAMODDED HEADER
--- MOD_NAME: Four Color Deck
--- MOD_ID: FourColorDeck
--- MOD_AUTHOR: [wout25]
--- MOD_DESCRIPTION: This mod change the default deck to match the standard colors used in four color decks in poker.

----------------------------------------------
------------MOD CODE -------------------------

-- AFAIK, `INIT` like this is no longer necessary in steamodded 1.0.0?
function SMODS.INIT.FourColorDeck()
    local FHC = SMODS.findModByID("FourColorDeck")
    local sprite_cards_1 = SMODS.Sprite:new("cards_1", FHC.path, "8BitDeck.png", 71, 95, "asset_atli")
    local sprite_jkr = SMODS.Sprite:new("Joker", FHC.path, "Jokers.png", 71, 95, "asset_atli")
    local sprite_ui_1 = SMODS.Sprite:new("ui_1", FHC.path, "ui_assets.png", 18, 18, "asset_atli")
    sprite_cards_1:register()
    sprite_jkr:register()
    sprite_ui_1:register()
end



old_loc_colour = loc_colour

function new_loc_colour(_c, _default)
    suit_table = {hearts = HEX('ed2324'), diamonds = HEX('3bb3f8'), spades = HEX("000000"), clubs = HEX("ffffff")}
    return suit_table[_c] or old_loc_colour(_c, _default)
end

loc_colour = new_loc_colour
----------------------------------------------
------------MOD CODE END----------------------
grand geode
#

that is extremely old code

west hill
#

@tranquil vessel can you comment out lines 430-434 of utils.lua in the steamodded files and try the for loop again?

tranquil vessel
#

sure

west hill
#

good to know

#

I suppose when the final version is merged anyway people should migrate to using that to retexture things

tranquil vessel
#

How long will it take for AltTextures to be merged? If it's gonna be a while, might be nice to remove those lines from utils.lua so other people don't trip over the same thing

west hill
#

I have a fully working version that is available to test but ejwu wanted to change a few things

woeful prism
tranquil vessel
tranquil vessel
#

didn't think it would but it did

#

should now also be fixed in my original message

woeful prism
maiden oak
#

I don't know if this is the correct place to ask this but is it possible to modify the quickrestart mod to automatically restart until an ante which contains an arcana skip with a soul card in it? (or does such a mod already exist?)

tranquil vessel
white scarab
crude hazel
#

how get install streammodded? i tryed and no mod folder appeared

white scarab
#

You must create it

crude hazel
#

oh

#

bruh

#

make one then put mods in

#

and thats it?

candid sable
#

You can try and maybe it works

#

If you didn't mess anything else up

fervent owl
crude hazel
fervent owl
#

folder with mods has to be named Mods

crude hazel
#

ook

#

thx

crude hazel
crude hazel
fervent owl
#

yes

#

read readme

#

for the project

crude hazel
#

when i open it there is only 1 thing named version.dll

#

is that right

crude hazel
fervent owl
#

where did you put version.dll

crude hazel
fervent owl
#

yeah, so when you start the game you should get a console

#

which would indicate that lovely is installed

crude hazel
#

i did

#

but mods are not working

fervent owl
#

does steamodded work?

#

do you get a "mods" button in the main menu

crude hazel
#

its brainstorm mod

fervent owl
#

that appears with steamodded only

#

if you just need brainstorm, I believe the folder needs to be named Brainstorm

#

like

#

Mods/Brainstorm

#

otherwise it won't work

crude hazel
#

does it look ok

fervent owl
#

nope

crude hazel
#

whast wrong

#

with it

fervent owl
crude hazel
fervent owl
#

go into explorer, and in the path paste this %AppData%/Balatro/Mods

#

well

#

%AppData%/Balatro/

#

then press enter

crude hazel
#

It says “this folder is empty”

blissful nebula
#

and put your mods there

crude hazel
#

And name is “Mods”

#

Right?

#

Cap m and all lower

blissful nebula
#

I assume anyway, I'm not a windows users but it's similar to whatb you do for mac

blissful nebula
crude hazel
#

Oh wait

#

I’m stupid

#

@fervent owl sorry

#

U prb rageing at me rn

blissful nebula
#

I think stupid went offline lol

crude hazel
blissful nebula
#

so u good now?

crude hazel
#

Me try

#

Wiat

crude hazel
blissful nebula
#

oof

blissful nebula
crude hazel
#

so ig its a win?

west hill
#

Can you screenshot your mods folder?

crude hazel
west hill
#

Okay so you don’t have a mods button because you haven’t installed steamodded

tepid apex
#

question how do i download mods? i want to learn the game first but i was curious i saw someone with a full stone deck

crude hazel
#

do i put the version.dll in the folder b4 mods one?

crude hazel
fast stone
#

no no, version.dll is lovely

west hill
#

No version.dll is to install lovely and that goes in the game directory

crude hazel
#

ok

fast stone
#

steamodded is a different thingy

#

ye