#💻・modding-dev

1 messages · Page 296 of 1

primal robin
#

Sounds bad

#

Save game on each card retrigger

manic rune
#

save game everytime anything happens

primal robin
#

Every frame

manic rune
#

good idea, let medo that

zealous glen
#

Save the game while saving the game

primal robin
#

Save game state in file instead of RAM

reef belfry
#

wouldnt it be funny if someone made Mult!

faint yacht
#

Putting save_run() within hooked draw_card ain't working either.

reef belfry
#

factorial mults

manic rune
#

what could possibly go wrong

#

-# why did my fan already start running wild, i didnt even boot up balatro

zealous glen
placid star
#

would you happen to have an example of this in vscode?

manic rune
#

it doesnt even boot up

#

😭

#

thats wild

primal robin
#

Its saving

#

Keep waiting

manic rune
#

it got to the loading screen

#

then immediately shuts down

#

🥀

primal robin
#

Thats a bummer

unborn bay
manic rune
#

huh

unborn bay
manic rune
#

the game still runs with save_run being run everyframe

#

somewhat stable too, i will add

unborn bay
#

the inevitable memory leak

faint yacht
#

💀 Just trying to make the specific enhanced cards always get drawn after the initial draw and stay between exits and re-entering of a run.

violet oasis
#

Does anyone have a cheatsheet for what each colour listed in globals.lua is used for? I'm changing some of them but I can't notice anything different 😭

reef belfry
#

whats da {X:mult} equivalent of this

manic rune
#

i tried exiting while using a consumable, guess its soft-locked now

modern kindle
#

Nah, you just have to defeat the hex card now

unborn bay
#

The Hex

manic rune
#

The Hex
Polychrome cards are
debuffed

unborn bay
#

that actually sounds like a good boss blind idea

reef belfry
#

that is just an indirect nerf to the wheel

#

why would u nerf the wheel...?

modern kindle
#

Everything is a indirect nerf to the wheel
Even the wheel

reef belfry
#

actually thats true

unborn bay
#

9 times out of 10 i get nope outta that shit

#

they deserve it

modern kindle
manic rune
#

i love you for that dilly

modern kindle
#

:D

next timber
#

how do i change how a soul sprite moves? i imagine its something to do with draw steps but i do not understand draw steps at all

manic rune
#

im confused

#

why does polychrome account for negative's weight too

#

but not foil or holo

wintry solar
#

Because it does

#

Although they line looks different to how I remember writing it originally

reef belfry
#

how do you get the level of played hand as a variable

faint yacht
#

G.GAME.hands[context.scoring_name].level ?

#

Hooking G.FUNCS.draw_from_deck_to_hand does work for the cards drawn and what not... but I end up with ghost cards that become actual cards when the run is saved and re-entered...

unborn bay
# unborn bay programming

i got this really horrible idea of just making it trigger every sold joker if it is cryptid rigged

#

now figuring out how exactly to do that

#

i could probably use retrigger_joker_check to do it but im not sure

next timber
#

how would i change how a specific card's soul sprite moves?

unborn bay
long sun
#

how do you apply a shader to a Joker?

#

like Invisible, eg.

crisp coral
#

SMODS.DrawStep

long sun
#

thanks :D

#

oh hmm, how do i implement that?

#

it doesn't mention shaders

unborn bay
#

yeah

#

i need to figure out if the joker could actually calculate something and get something out of it

daring fern
long sun
#

mhmhm

placid star
#

is this the wrong syntax for changing emp to true? my game keeps crashing on use at this line...

daring fern
# long sun mhmhm
draw = function(self, card, layer)
  card.children.center:draw_shader('shadername', nil, nil, nil, card.children.center)
end
``` Try putting this in the joker.
long sun
#

will do, thanks :D

#

hmm, didn't quite work

reef belfry
#

i wouldve expected it to default to high card if you havent played a hand yet

#

huh

daring fern
# long sun

Try this ```lua
draw = function(self, card, layer)
card.children.center:draw_shader('negative_shine',nil, card.ARGS.send_to_shader)
end

reef belfry
#

i learn something new everyday

rich geyser
#

Hey guys, do any of ya'll know how to set the discards to 0? I tried using the basic config of discards = -3, but on higher difficulties, that leaves the deck with -1 discard, which is not intended

daring fern
long sun
#

you can't see it, but it worked :D thanks!!

tepid rock
#

Is there somewhere I can see how each joker is coded outside of card.lua? Getting lost with all the layers lol ^^'

rich geyser
#

Sorry if I'm bothering, I'm pretty new in this whole modding thingy

daring fern
rich geyser
daring fern
rich geyser
#

config = {
discards = -3,
hands = 1 -- Gain 1 extra hand
},

rich geyser
daring fern
placid star
#

dead ass kill me

#

why is applying styling through variables not somewhat easy and intuitive

rich geyser
tepid rock
#

both actually

reef belfry
#

or should i just leave it be since its not that big of a deal

placid star
manic rune
tepid rock
#

my bad ^^'

daring fern
next timber
#

is there a better way to control the position of a card's soul sprite other than patching the soul sprite drawstep?

placid star
daring fern
placid star
daring fern
# placid star yeah

You would put each text you want it to say as a different entry in descriptions.

placid star
long sun
#

hi sorry to bother again :D

placid star
long sun
#

is there an easier way to apply a shader to a card's soul?

#

i tried card.children.floating_sprite:draw_shader('voucher', nil, card.ARGS.send_to_shader, nil, card.children.center, 2*scale_mod, 2*rotate_mod)

#

but it needs calculations for scale_mod and rotate_mod

daring fern
placid star
daring fern
rich geyser
#

hey, it's me again. I tried to use apply = function() G.E_MANAGER:add_event(Event({ func = function() -- Immediately set discards to 0 ease_discard(-G.GAME.current_round.discards_left) return true end }))
But it sets itself back to 3 when the round starts, am I doing something wrong?

red flower
reef belfry
#

I should probably put my names and descriptions in localization to save future me some hairs

placid star
red flower
#

it's one text per key, you need more than one key if you want to change between them

placid star
red flower
#

yes

placid star
#

ah and for calling it in your joker file would it just be --
loc_txt = {name = 'name', text = j_prefix_key ?

red flower
#

no, you wouldnt use loc_txt

#

the default text would the the one under your joker key and for the alternative texts you need to return key in loc_vars

rich geyser
daring fern
long sun
#

in draw

tepid rock
rich geyser
# red flower no idea, thats how i do it
        G.E_MANAGER:add_event(Event({
            func = function()
                G.GAME.round_resets.discards = 0
                ease_discard(-G.GAME.current_round.discards_left)
                return true
            end
        }))
    }```

I'm doing it something like this, I also tried setting it out of the apply, but it didn't work either
red flower
tepid rock
#

gotcha, thank you. I'll see if i can figure it all out ^^'

red flower
placid star
rich geyser
daring fern
red flower
placid star
red flower
#

yes

red flower
zealous glen
placid star
# red flower yes

so then my loc_vars would look like

if phase == 'Xmult' then
  return {j_jjok_inoxmult} 

(plus the rest of the description), but if this is correct, where would i return my Xmult value to be called in #1#?

daring fern
zealous glen
#

Instead of C

#

But you need to return vars.colours

#

Which you access via an integer index

long sun
#

this is appearing under the soul, is there a way of making it appear on top? or is there an easier way?

placid star
orchid thunder
#

If I want to have xmult when a playing card is scored how would I do that again

daring fern
placid star
unborn bay
#

you don't need loc_txt if you already have a localization set for your joker

daring fern
placid star
unborn bay
#

ofc that's assuming that the joker is juiced up in the calculation

red flower
placid star
#

this must be like wheres waldo for you guys huh

daring fern
unborn bay
placid star
reef belfry
#

I love how my first ever joker was literally just turn every card into glass but slightly worse to some random ass bullshit in the span of 2 other jokers

red flower
unborn bay
#

currently as it acts right now the joker will always reroll what joker from that card area it would mimic every time a calculation could be called which is fine but

the main idea is to not do that and only reroll when the card actually triggers by itself

#

🤔

#

hmm

long sun
#

ah

#

how do i fix that, then?

#

does SMODS have a feature that does that for me?

zealous glen
#

Change the order you draw layers

#

Idk what you’re doing or what you want to recommend a more specific solution

long sun
#

ah, i'm trying to give my card's soul the voucher shader

zealous glen
#

What is the code

zealous glen
long sun
#

not sure that will help

runic pecan
#

How to read a playing card's edition?
Is there something like SMODS.has_enhancement but for editions?

zealous glen
long sun
#

where should i put it?

zealous glen
#

Put it inside soul_pos

long sun
#

okay

#

sounds weird but i'll give it a go

red flower
runic pecan
red flower
#

it's a table

#

v.edition.key gives you 'e_foil' iirc

long sun
#

not sure why it should go in soul_pos, it was drawing stuff when it was where it was

manic rune
#

how do yall draw text

long sun
#

just, not correctly

reef belfry
#

Pray for a miracle

manic rune
#

🙏

#

amen

runic pecan
red flower
#

yes

manic rune
#

ghghgh is there actually no font for this 😭

red flower
#

kecil yack

unborn bay
#

lclil pacv

reef belfry
#

U should like

#

Do bigger text

#

N like downsize the layer

#

Then work from there

manic rune
#

are you all sending me a code from mars

manic rune
unborn bay
#

arial at 6px Trollic

ruby delta
#

Can someone help me am making a joker and am getting this issue please anyone I will expand the issue

reef belfry
#

If its asperite i aint got a single clue how that works

unborn bay
#

from the looks of it it seems to be aseprite

reef belfry
#

Does asperite havw pre made fonts?

#

Thats awesome as hell if so

zealous glen
reef belfry
#

Iont think low res px by px font exists out ther so id rather just draw them pixel by pixel

zealous glen
#

I didn’t mention low res pixel fonts

#

And they do exist

#

But I wasn’t talking about them

unborn bay
#

low res pixel fonts exist and they are coming for you

tall wharf
potent trout
#

making a reskin mod, calling it bubblatro

zealous glen
long sun
#

right, but it caused an error that i wasn't getting earlier

ruby delta
#

Am making this joker but it's not working as it should be I want it to fix it I tired my best so how can I make the joker add up multiplier per how many red seal cards it has applied on like 4 red sealed card x 0.5 mult would give me told of 2mults that's how I want it to be like the steel joker

zealous glen
long sun
#

ahh i see

zealous glen
#

result

#

I might've tweaked it slightly since then

long sun
#

lemme try that syntax, wasn't aware i could do that :D

#

thanks!

ruby delta
daring fern
ruby delta
#

@daring fern

long sun
#

oooooooooh definitely getting closer!! will play around with this, thanks :D

daring fern
#

When do you want your joker to give mult?

manic rune
#

totally didnt trace over a pack

tall apex
crisp coral
#

imagine not handdrawing your text

tall apex
#

esp with text thats just using a font

unborn bay
#

me tracing over a printer png i found on the internet (i am a bad person)

crisp coral
#

imagine

daring fern
#

Scoring hand is always greater than 0 and you should be checking for context.joker_main

crisp coral
#

this fucking booster sprite sucks ass

tall apex
ruby delta
tall apex
crisp coral
#

im not proud at all this sucks 😭

tall apex
#

you wanna see something that sucks?

daring fern
unborn bay
tall apex
#

my spritework is bad on purpose tho, its supposed to be cringe asf :3

tall apex
manic rune
crisp coral
#

no that's ayin clearly

manic rune
#

i cant imagine ayin's handwriting looking like that honestly

ruby delta
stark geode
daring fern
tall apex
#

mine is literally called cleo's cringe circus, and my self insert joker is a 2010 scenecore clown girl, the whole point is for someone to have second hand embarrassment and find random shitposts in my mod LMAO

manic rune
#

i REALLY need an artist 🗣️

tall apex
#

PEOPLES ARE IS SO COOL WHY SAY BAD

manic rune
#

actually, the text should be higher, hold on

daring fern
#

It's context.joker_main

stark geode
#

Because its funny

#

And the number go up

unborn bay
#

the joys of seeing a number go up

daring fern
#

Also why are you returning nil?

tall wharf
tall apex
#

number do go up

#

im also cruel and i have number DONT go up jokers

stark geode
#

The awful absurdity of 30 negative perkeos

tall apex
#

bcos funny

ruby delta
tall apex
stark geode
manic rune
thin anchor
#

redone some enhancements

late basin
#

Hi, I'm trying to make a custom joker mod and for some reason my balatro isn't reading my main .lua file? Please help! 😭

river crane
long sun
#

hi, weird bug with my shader code — i applied it to all of my legendaries, and when hovering over and rotating Ignaize, all of the others do the same

daring fern
#

It should work I think.

long sun
#

and they don't individually

#

hard to describe

ruby delta
long sun
#

it's like, all of the souls have the same shine direction as Ignaize

ruby delta
#

Exactly

daring fern
ruby delta
long sun
#

( @zealous glen sorry to bother again ^^ Ignaize controls the shines of all of the other legendaries )

#

(no idea why, hoping you know)

placid star
#

is there a way to use add_card() to spawn from a pool?

dreamy thunder
#

iirc

placid star
#

isnt set for spectral, tarot, joker, etc. not pools?

dreamy thunder
#

it works with ObjectType

placid star
#

ah

placid star
dreamy thunder
#

ye

placid star
#

okayy ty

dreamy thunder
#

np

manic rune
#

wait

#

i got the order wrong, f

rich geyser
#

I'm trying to create a joker with 6 possible random effects, but it's not working, does anyone know what am I doing wrong?

` apply = function()
SMODS.UTILS.HOOKS.set("calculate_hand_values", "RalseiBuff", function(orig, ...)
local res = orig(...)
local roll = pseudorandom(1, 6)

        if roll == 1 then
            G.GAME.current_hand.base_mult = G.GAME.current_hand.base_mult + 25
            G.E_MANAGER:add_event(EventText({text = "+25 Mult", colour = G.C.MAGENTA, scale = 0.8}))
        elseif roll == 2 then
            G.GAME.current_hand.mult = G.GAME.current_hand.mult * 5
            G.E_MANAGER:add_event(EventText({text = "x5 Mult", colour = G.C.MAGENTA, scale = 0.8}))
        elseif roll == 3 then
            G.GAME.current_hand.chip_bonus = (G.GAME.current_hand.chip_bonus or 0) + 50
            G.E_MANAGER:add_event(EventText({text = "+50 Chips", colour = G.C.MAGENTA, scale = 0.8}))
        elseif roll == 4 then
            G.GAME.dollars = G.GAME.dollars + 5
            G.E_MANAGER:add_event(EventText({text = "+$5", colour = G.C.MAGENTA, scale = 0.8}))
        elseif roll == 5 then
            G.E_MANAGER:add_event(EventText({text = "Nothing happened...", colour = G.C.RED, scale = 0.8}))
        elseif roll == 6 then
            G.E_MANAGER:add_event(EventText({text = "Nothing happened...", colour = G.C.RED, scale = 0.8}))
        end

        return res
    end)
end`
potent trout
#

hows these for packs (would replace joker packs)

rich geyser
daring fern
halcyon osprey
#

is there anyway to make the gamble variable like a range? so i dont have to write == 1 .. .. .. ==35

rich geyser
gleaming zealot
#

balatro!

#

balatro?

manic rune
# halcyon osprey is there anyway to make the gamble variable like a range? so i dont have to writ...
local stuff = {
  {odds = {1,2,3}, randmoney = pseudorandom('unluck',-10,-1)},
  {odds = {4,5,6}, randmoney = pseudorandom('fine',1,10)},
  {odds = {7,8}, randmoney = pseudorandom('good',11,20)},
  {odds = {9}, randmoney = pseudorandom('great',30,50)},
  {odds = {10}, randmoney = pseudorandom('awful',-50,-11)},
}

local gamble = pseudorandom('bank',1,10)
for _,v in ipairs(stuff) do
  for _,odd in ipairs(v["odds"]) do
    if odd == gamble then
      return{
        dollars = v[randmoney]
      }
    end
  end
end

i would probably do smt like this :p

#

probably not the most efficient method, but you only need to edit stuff now

rich geyser
daring fern
daring fern
old bane
#

how would I add like a little text box below a card? I want to have a little display (that's not JokerDisplay) where I can put a dynamically updating value, and I'd like it to move with the card if possible

manic rune
#

take reference from jokerdisplay's code

halcyon osprey
#

well process was faster but damb

potent trout
halcyon osprey
#

annnd it did nothing

manic rune
halcyon osprey
manic rune
#

umm

#

hmm

rich geyser
#

I don't really know why, but this is what actually ended up working lol

halcyon osprey
#

just added local to gamble

#

soon this will be the 3rd tile done for my mario party deck

manic rune
#

thats odd, it should work

#

but also

#

if u use this much numbers, my approach is probably not what you want

#

hol on

halcyon osprey
#

i want things to be out of 100 for those real rare chances

#

wait doesnt work

#

yeah

next timber
#

would it be better for a legendary to retrigger the 6th joker a couple of times (it also gives you a joker slot so you can always have a 6th joker) or to duplicate it

old bane
tall wharf
#

sorry

#

i couldn't help much in recent times

old bane
#

or maybe i could like just have a little text in the middle of the screen that updates

manic rune
#
local stuff = {
  {odds = {min = 1, max = 49}, randmoney = pseudorandom('unluck',-10,-1)},
  {odds = {min = 50, max = 80}, randmoney = pseudorandom('fine',1,10)},
  {odds = {min = 81, max = 98}, randmoney = pseudorandom('good',11,20)},
  {odds = {min = 99, max = 99}, randmoney = pseudorandom('great',30,50)},
  {odds = {min = 100, max = 100}, randmoney = pseudorandom('awful',-50,-11)},
}

local gamble = pseudorandom('bank',1,100)
for _,v in pairs(stuff) do
    if gamble >= v["odds"]["min"] and gamble <= ["odds"]["max"] then
    return{
      dollars = v[randmoney]
    }
  end
end

i would probably do smt like this :p

halcyon osprey
#

scary red

limber warren
#

hey there, can anyone help me out with an error that i'm running into?

hushed field
manic rune
#

sorry im writing it on discord using phone rn

#

so i cant really keep track of what im doing

halcyon osprey
#

thats crazy like thats a talent

manic rune
#

🥀

limber warren
#

msg = string: "[SMODS BALATRO2 \"main.lua\"]:639: attempt to index field 'extra' (a number value)"

config = { extra = {card1_valid = false, card2_valid = false} },
...

    calculate = function(self,card,context)

        -- Checks played cards if they're the right ingredients
        if context.individual then
            if context.cardarea == G.play then
                -- If the suit matches
                if context.other_card:is_suit(G.GAME.current_round.recipe_card.suit) then
                    -- If any of the two ranks match
                    if context.other_card:get_id() == G.GAME.current_round.idol_card.rank1 then
                        card.ability.extra.card1_valid = true
                    elseif context.other_card:get_id() == G.GAME.current_round.idol_card.rank2 then
                        card.ability.extra.card2_valid = true
                    end
                end
            end
        end


        if context.cardarea == G.jokers and context.after == true then
            -- If hand has valid recipe, generate a tag
            if card.ability.extra.card1_valid == true and card.ability.extra.card2_valid == true then
                G.E_MANAGER:add_event(Event({
                    func = (function()
                        add_tag(Tag('tag_handy'))
                        play_sound('generic1', 0.9 + math.random()*0.1, 0.8)
                        play_sound('holo1', 1.2 + math.random()*0.1, 0.4)
                        return true
                    end)
                }))
            end
        end
    end,
halcyon osprey
#

typing anything on phone is a talent 😭

manic rune
#

i got 180 wpm on pc so its not that bad 😭

limber warren
#

for some reason extra is getting turned into a number value

halcyon osprey
manic rune
#

fair, i sometimes do the same when im lazy :p

hushed field
manic rune
#

and theres also the "scroll your finger across the keyboard" technique

halcyon osprey
#

Okay so its still not giving the money

limber warren
#

oh?

hushed field
#

Oh wait, never mind, I'm dyslexic I think

limber warren
#

am i being stupid rn

manic rune
#

can you try adding a print("smt") inside the if cube?

#

see if it prints

hushed field
limber warren
#

yeah

#

sorry

#

should i post more info so that its easier to solve

halcyon osprey
#

It does Print the number

limber warren
#

:(

halcyon osprey
#

but its just printing the gamble value

#

ill print odds

hushed field
#

yeah. Just from those snippets, I can't spot what would be wrong. It reads to me like you're setting up something wrong somewhere else, because I don't see how the extra of a joker should be changed

halcyon osprey
#

blank

manic rune
#

wha

#

v["odds"] is blank??

limber warren
#

yeah thats whats troubling me.. uh, what should i send to make it easier to figure out?

#

maybe i should make local variables isntead of using extra

halcyon osprey
#

i guess so

hushed field
manic rune
#

i must be dumb somewhere

#

wait

limber warren
#

sorry, uses a lot of template code so the comments are still there

runic pecan
#

Is there an in-game per-run table that tracks how many times the player uses a specific consumeable, or do I have to implement such feature (either with hooks or patches) myself?

manic rune
#

there should be one

#

considering theres that uhh thingy that shows how many cards you used the most in vanilla balatro

#

this one

stark geode
#

what have i done

hushed field
# limber warren

I'd avoid using context.individual for this, by the way. I don't see why this would overwrite the config with a number, but also, you can avoid this entire crash by not storing that information on the card.

manic rune
halcyon osprey
#

how do i print v? just

#

print(v)?

manic rune
#

mhm

#

debug plus handles printing tables :p

limber warren
#

im going to try using local variables instead of booleans in extra, ill report back

halcyon osprey
#

it just printed the range

#

min 1 max 49

manic rune
#

can u take a ss of what it printed rq

#

:p

hushed field
halcyon osprey
limber warren
#

that's what ill do, thank you for your help :)

halcyon osprey
manic rune
#

wait, doesn't that mean the if statement already worked

limber warren
#

okay, it didnt crash when i played a hand

manic rune
#

its just the return part that doesn't work now, i guess

hushed field
manic rune
# halcyon osprey

can u just try ease_dollars(v["randmoney"]), and remove the return block?

manic rune
halcyon osprey
#

it did the thing but now no message lol

limber warren
manic rune
stark geode
manic rune
#

hm

limber warren
#

so its better than it just crashing lol

hushed field
stark geode
#

i mihgt need to make talisman a dependency

limber warren
#

uhh.. ill need to figure out how to set that up lol

#

i do have debugplus installed

manic rune
# halcyon osprey

SMODS.calculate_effect({dollars = v["randmoney"]}, card) this time

hushed field
#

just write some print("hello?") in you code and see which prints pop up 😛

manic rune
#

is dollars = ... how something gives money, ice

limber warren
#

ok

manic rune
#

just to be sure

hushed field
halcyon osprey
#

it is

manic rune
#

im gonna crash out if it was dollar, money or smt the entire time 🥀

#

its weird how returning that doesn't work in that case

halcyon osprey
#

it has to work because the Held in hand part works perfectly

lavish pine
#

Can anyone help me with making malverk texture packs?
Not sure how to do it myself but I have some made cards

halcyon osprey
#

The Bank Space, whenplayed, you gamble, when held you get $6

#

all space cards all go away after used or general discard

potent trout
#

chat did i cook

manic rune
#

the coloring is too bright for balatro

potent trout
#

yeah but im gonna retexture everything

manic rune
#

but other than that

#

u nailed the text so perfectly, what

#

how do people do that???

potent trout
#

traced it lmao

#

onion skin frames

manic rune
#

ah

#

i did that too ❤️

potent trout
#

and for the non existant letters in the font i eyeballed it

halcyon osprey
#

it funkin works WOO

#

thanks bepis

manic rune
#

nicee

halcyon osprey
#

u have simplified all the random things that ill be doing

manic rune
#

terribly sorry for pulling you through all that mess 💔

halcyon osprey
#

Nah in the end this is a MASSIVE help

#

the board generator is going to be using this, Other tile cards too

manic rune
#

aw, but also, do keep in mind that oops all 6s currently doesn't affect the odds, since thats what i assumed from your old code

#

:p

halcyon osprey
#

Oh i dont want oops to affect odds

manic rune
#

ic, it should be what you want then

potent trout
halcyon osprey
#

if its a chance thing thats one outcome, or like outcomes im fine overlapping, then i would do the oops probablitity stuff, but all of these are alternative outcomes, either a, b or c

#

and now i dont think its possible to do odds stuff for the board generator anyway

#

well wait hmm

#

okay well, tried putting a custum variable for the centers

#

that didnt work very well

#

anyone know how i can make randtile in the G.P_CENTERS.randtile become one of the random things on the odds?

#

what it did was just make a random card and that was it, the Enhancement of the Tile Cards werent added

placid star
#

im not even sure how to do this but ill ask here, how do i create a card from a specific pool? this code doesnt work and crashes my game on use

potent trout
#

legendary joker bg wahoo

placid star
#

I just did over the actual legendary jokers textures and tone shifted them...

potent trout
#

im redrawing almost everything from scratch for a visual mod

tropic sparrow
#

whoops

#

sorry for embed

onyx sonnet
daring fern
tropic sparrow
#

Thank you 🙏

worthy mortar
#

hey guys, does anybody know of some kind of testing framework for steamodded?

#

I'm imagining not but I'd feel awfully silly if I did a whole bunch of redundant work

old bane
#

is it already possible to select both a joker and a consumable in vanilla or is that just a modded thing? if it is a modded thing, how would i be able to change it so that I can do that in my mod?

worthy mortar
#

I think you just click on one and then the other? Am I misunderstanding something?

#

(tested it just now)

old bane
#

okay i just didn't know ty

worthy mortar
#

okay nice, np

placid star
#

can a joker have 2 rarities?

modest iris
#

hello guys, can someone help me with this issue im having? this is the code for my boss blind:

SMODS.Blind{
    key = "candle",
    boss = {showdown = false, min = 1, max = 10},
    loc_txt = {
        name = "Candle",
        text = {
            "First card in each scoring hand",
            "is destroyed",
        }
    },
    atlas = "Blinds",
    pos = {y = 0},
    discovered = true,
    dollars = 5,
    mult = 2,
    boss_colour =  HEX("b91408"),
    press_play = function(self)
        if not G.GAME.blind.disabled and G.play and G.play.cards then
            G.E_MANAGER:add_event(Event({
                trigger = 'after',
                delay = 0.5,
                func = function()
                    local _, _, _, scoring_hand = G.FUNCS.get_poker_hand_info(G.play.cards)
                    if scoring_hand and #scoring_hand > 0 and #G.play.cards > 1 then
                        local first_card = scoring_hand[1]
                        local destroyed_card = nil
                    
                        for i = 1, #G.play.cards do
                            if G.play.cards[i] == first_card then
                                destroyed_card = G.play.cards[i]
                                break
                            end
                        end
                        play_sound('tarot1')
                        G.deck:remove_card(destroyed_card)
                        destroyed_card:start_dissolve(nil, 1)
                        end
                    end
                    return true
                end
            }))
            return {
                remove = true
            }
        end
    end

}
#

as the description says, i want this boss to destroy the first card of every scored hand. the problem is, when i destroy a face card, canio doesn't get triggered and doesn't get +1 xmult. how can i make it so everytime this boss destroys a card, the destroying event actually triggers jokers that benefit for it

daring fern
modern kindle
#

quantum rarity support when

old bane
#

is it possible to loop through all the SMODS.Seals? i wanna automatically create tarot cards that apply those seals

#

(but first i have to loop through each and print their keys to see if its even possible)

old bane
#

i tried it before and it only did the vanilla ones (im trying to loop thru my modded ones)
maybe ill try it again after all the seals are loaded in

placid star
#

what the sigma am i doing wrong, crashes on mult_mod = ...

daring fern
old bane
daring fern
old bane
#

mm

placid star
daring fern
placid star
#

omg someone told me of a way to get vscode to auto fill function params by adding smods file to workspace but i cant get it to work

placid star
rain slate
#

I think I may have broken balatro

#

I added support for card sleeves and made one of the sleeves give an Oops All 6s when it's the same sleeve as the deck but

#

I did a few runs with the mod on for fun and I had that deck and sleeve combo and I opened a buffoon pack in like Ante 2 or 3 and I got a duplicate of the Oops All 6s ???

#

without a showman ???

south lintel
#

how do I change the suit of a card? I'm trying to change suits of scored cards to a specific suit but I can't make it work

worthy mortar
#

iirc cards have a method called change_suit or something direct like that

#

search cards.lua or whatever it's called

ruby delta
#

@daring fern
sorry for disturbing you again, am making another joker which does this
If first hand contains one card, gain 2 copy of that card . Gain 5$ every time a card has been copied, here is the code
''''

SMODS.Atlas {
key = "weiss",
path = "weiss.png",
px = 142,
py = 190
}

SMODS.Joker {
key = 'weiss',
loc_txt = {
name = 'Weiss',
text = {
"If scoring hand has {C:attention}1 card{}, copy it {C:attention}twice{}.",
"Gain {C:money}$5{} for each copy made."
}
},
rarity = 2,
cost = 8,
config = {
copied_this_round = false
},
atlas = 'weiss',
pos = { x = 0, y = 1 },

calculate = function(self, card, context)
    if context and context.before and not self.config.copied_this_round then
        if #context.scoring_hand == 1 then
            local to_copy = context.scoring_hand[1]
            local copy1 = Card(to_copy.ability, G.hand)
            local copy2 = Card(to_copy.ability, G.hand)
            table.insert(context.scoring_hand, copy1)
            table.insert(context.scoring_hand, copy2)
            G.GAME.dollars = G.GAME.dollars + 10
            self.config.copied_this_round = true
        end
    end

    if context and context.after then
        self.config.copied_this_round = false
    end

    return {}
end

}

''''

#

The code is basically not working

worthy mortar
#

(use backticks(`) to make a code block)

daring fern
ruby delta
# daring fern Replace `self.config` with `card.ability`

Am still getting the crash tho

Oops! The game crashed:
‎card.lua:260: attempt to index local 'center' (a nil value)

‎Additional Context:
‎Balatro Version: 1.0.1o-FULL
‎Modded Version: 1.0.0~BETA-0312b-STEAMODDED
‎LÖVE Version: 11.5.0
‎Lovely Version: 0.7.1

@daring fern

tepid crow
#

"unofficial port"?

#

Oh is it a mobile thing?

gaunt thistle
#

looks like redacted

ruby delta
old bane
ruby delta
# daring fern Replace `self.config` with `card.ability`

''''

SMODS.Atlas {
key = "weiss",
path = "weiss.png",
px = 142,
py = 190
}

SMODS.Joker {
key = 'weiss',
loc_txt = {
name = 'Weiss',
text = {
"If scoring hand has {C:attention}1 card{}, copy it {C:attention}twice{}.",
"Gain {C:money}$5{} for each copy made."
}
},
rarity = 2,
cost = 8,
atlas = 'weiss',
pos = { x = 0, y = 1 },

calculate = function(self, card, context)
    if context and context.before and not card.ability.copied_this_round then
        if #context.scoring_hand == 1 then
            local to_copy = context.scoring_hand[1]
            local copy1 = Card(to_copy.ability, G.hand)
            local copy2 = Card(to_copy.ability, G.hand)
            table.insert(context.scoring_hand, copy1)
            table.insert(context.scoring_hand, copy2)
            G.GAME.dollars = G.GAME.dollars + 10
            card.ability.copied_this_round = true
        end
    end

    if context and context.after then
        card.ability.copied_this_round = false
    end

    return {}
end

}

''''

glass scaffold
#

Can anyone help?

ruby delta
# glass scaffold Can anyone help?

Try this?
if context.cardarea == G.play and context.other_card and
(context.other_card:get_id() == 14 or context.other_card:get_id() == 7) and
not context.repetition then

#

@glass scaffold

ruby delta
glass scaffold
old bane
#

how do i get the name of a localization entry based off of its key? i'm trying to get the name of a seal using loc_vars

ruby delta
sacred quarry
#

hey everyone! how do yall go about testing your modded jokers in game? is there an easy way to spawn them

old bane
errant karma
#

ok so im tryna make a music replacement mod, how would i go about it if the music is sped up in the game files?

sacred quarry
glass scaffold
indigo mesa
#

why is this code not working? it doesnt crash or anything it just doesnt work, if somebody can tell me what im doing wrong here it would be appreciated

    if context.cardarea == G.play and context.repetition and not context.repetition_only then
        if context.other_card:is_suit("Diamonds") and 
            pseudorandom('grindstone') < G.GAME.probabilities.normal/card.ability.extra.odds then
            return {
                message = 'Again!',            
                repetitions = card.ability.extra.repetitions,
                card = context.other_card
            }
        end
    end
  end```
glass scaffold
tepid crow
old bane
#

how do i get the localized name of a seal? i really don't want to have to use
G.localization.descriptions.Other[self.config.generated.."_seal"].name

glass scaffold
modern kindle
#

i havent removed my bind regardless so ive noticed no difference

#

mine is just normal f5

tepid crow
#

same 😭

modern kindle
#

we're such twins

tepid crow
#

twinning so hard rn

old bane
#

how does one do that

#

my lappytoppy doesn't like alt and fn and f5 being pressed at the same time

tepid crow
#

holy shit instant restart on alt+f5 is really nice though, glad aure added that

modern kindle
#

do we yet have the extra lovely window closed when we restart

#

i havent updated in a short while

tepid crow
sacred quarry
#

i just made my first joker, holy cow

tepid crow
# old bane how does one do that

this is the code I use

SMODS.Keybind{
    key_pressed = 'f5',
    action = function(self)
        SMODS.save_all_config()
        SMODS.restart_game()
    end,
}
#

actually hold on aure's addition is pretty nice

tepid crow
#

can't take my eyes off you

tepid crow
modern kindle
#

tragic

#

not the end of the world but sometimes when im printing shit i cant tell which window is my current

tepid crow
#

yeah I think it's just a bit of a pain to fix

modern kindle
#

likely so yea, i believe it was something ont he lovely side not smods as well

south lintel
#

how can I force a specific joker to spawn? something like riff raff but it spawns a specific joker instead

ruby delta
#

@glass scaffold sorry for disturbing check dm 🙏

shrewd cobalt
#

is take_ownership the right function to use here? I'm trying to change the quip dialogue

glass scaffold
#

No crashes, but won't add the cards to the hand. Instead, it adds a blank card and a Joker to the Joker slot.

Anyone got a fix?

long sun
#

old Jokers, but yay!!

modern kindle
#

what if i ate them

tall wharf
#

teto...

long sun
long sun
tall wharf
#

omg ghost

#

waow...

#

artist detected...

long sun
#

:D

dense adder
#

anyone know the context, for jokers to only show up in store if you have the specific enhancment like Glass Joker only showing if you have a Glass card?

long sun
#

i'm really proud of where i've gotten to with my art :D

#

my girls!! ✨

tall wharf
#

i mean i ugess

long sun
#

dfjhnbgjkdfngkjfdngjk i love your art!!!

errant karma
#

i've wanted to make a balatro mod for a while
what am i getting myself into and is this a good idea

sacred quarry
#

anyone know what I would put in for a joker to get +2 mult at the end of round?

muted narwhal
#

how does one actually begin making a mod?
like is there like a baseline I should be working off of or is there like specific files I should be working off of or something? (this is my first time doing something like this so I have no idea where to go or how to start on this)

sacred quarry
#

@muted narwhal I am in the same boat and I'm slowly getting it

#

if you need any resources feel free to DM

dense adder
sacred quarry
red flower
#
if context.end_of_round and context.main_eval and context.gameover == false then
   card.ability.extra.mult = card ability.extra.mult +2
end
errant karma
old bane
old bane
errant karma
#

i'll think about it lol

old bane
#

(the one where the male trainer is the main one teaching)

errant karma
#

i gtg now so i'll brainstorm on other replacements after

drowsy tulip
#

can someone explain why this patch isnt patching

#

ignore the payload

red flower
drowsy tulip
#

idk but when i boot the game up nothing happens

#

doesnt matter if the payload is spam or actual code

drowsy tulip
red flower
#

check the lovely dumps

#

if smods overrides it then it will do nothing if you patch the main game

drowsy tulip
#

where are the dumps

red flower
#

lovely/dump in your mod folder

red flower
drowsy tulip
#

yep i just checked steammodded does override that function

red flower
#

you will need to target that file then

#

there's a context.stay_flipped now too if that works instead of your patch

opal holly
#

i need to branch into more styles

cursive sentinel
#

hi, I'd like to try making a mod to add a couple jokers, but I'm not sure where to start. Are there any resources for beginners or advice you could give me? Thanks in advance

glass scaffold
#

My DMs are always available if you need assistance in your time

cursive sentinel
#

thank very much, looking to it

shrewd cobalt
#

Nicest modding community ive seen

glass scaffold
south lintel
#

how can I force a specific joker to spawn? something like riff raff but it spawns a specific joker instead, I want to spawn a predetermined joker form the collection

glass scaffold
#

I need to know 2 things:

1: context for a Joker to check when a blind has started
2: how to set current score to the blind's requirements.

#

-# and maybe how to set a Joker to a custom rarity.

south lintel
glass scaffold
wispy umbra
#

I searched the post history, but I can't find anything for it. I'm trying to get xchips, but it does not appear to be working

frosty dock
#

x_chips and remove the other keys

shrewd cobalt
#

how do I make this update function only occur when the joker is in your deck? When I pull up the card in collection it debuffs everything without it being in the deck

frosty dock
#

no card, message or colour

wispy umbra
frosty dock
#

no

tardy reef
#

Hey, this is probably something obvious I'm missing, but any reason why my values are showing up as nil in the joker description?

frosty dock
#
return {
  x_chips = card.ability.extra.x_chips
}
red flower
glass scaffold
tardy reef
#

Ahh, so I do, thanks

frosty dock
shrewd cobalt
#

ahhhh, much appreiated!

tardy reef
#

I'm flying by the seat of my pants right now so I'm still missing things like that

frosty dock
#

actually scratch that

#

i think you want card.added_to_deck

wispy umbra
frosty dock
#

i guess it doesn't matter if a card is just sitting in the shop, but it's the safer option either way

wispy umbra
#

Is there an place to find all these modifiers in an easy-to-read format?

#

I've seen online tutorials, but they don't explain everything

shrewd cobalt
glass scaffold
thin anchor
#

what do you guys think

glass scaffold
thin anchor
#

thanks

formal parrot
tardy reef
#

I'm trying to figure out if a card being sold is an uncommon joker using the context, anyone know where I could find how to do that?

long sun
#

hi! really weird bug

#

hold on, lemme grab the ability first

#

what it should do:

  • hand is played
  • before scoring, it checks to see what ranks are there
  • it marks the new ranks it needs, and sends status texts
#

but instead of getting the ranks, it gets their positions in the played hand

#

...for some reason

#

so instead of a hand like 56789 marking those ranks, it marks 2345

#

(1 isn't a rank, Ace is 14)

#

here's the upper half of the code

#

it's driving me mad 😭 ideas?

frosty dock
errant karma
long sun
#

BASED SELECTIONS

errant karma
#

yes it is just music taken straight from mostly wii fit plus and the wii shop theme

long sun
#

though i think the Tarot music should be the weird zodiac app that the wii had

frosty dock
#
  1. should be something like G.GAME.chips = G.GAME.blind.chips +/- some UI updating that i don't remember
glass scaffold
long sun
#

THAT

#

YES

errant karma
#

oh

long sun
#

i loved messing around with that as a kid :3

errant karma
#

i will infact do that now lol

long sun
#

it made no sense but it was really funny to fling the miis around :D

glass scaffold
long sun
#

oop well i found one issue with my code

#

two seconds

#

(rank > get_id())

red flower
errant karma
#

just the main theme?

long sun
#

any one you want!

#

i don't remember them

#

it'll be a nostalgia trip when you show it in the mod :D

glass scaffold
#

how do you set the joker to a custom rarity?

glass scaffold
rugged pier
#

is there a way to access the base chips of cards left in deck ?

errant karma
#

correction: 2 with one of them being a layer you put on the 2nd one

red flower
long sun
#

oop! Sudoku works now :D

glass scaffold
cursive sentinel
#

i've got a crash at the beginning of creating a joker (following this youtube tutorial, https://www.youtube.com/watch?v=Zp-4U5TlbxY&t=7s at 4:50sec)

STEAMODDED 1.0.0
A tutorial on how to make a modded Joker.

https://github.com/art-muncher/Example-Mod -- EXAMPLE MOD
https://github.com/Steamopollys/Steamodded -- STEAMODDED
https://github.com/WilsontheWolf/DebugPlus -- DEBUGPLUS
-----------------------------------------------------...

▶ Play video
glass scaffold
cursive sentinel
#

i don't exactly know what caused this, i tried checking my files names and such but it looks like it's in order, i'm not sure what i missed here

glass scaffold
cursive sentinel
#

I'm not sure i understand the question

errant karma
tardy reef
#

Hey, where can I read how to use the "create_card" function?

tardy reef
#

I want to create a random rare joker, but I want to actually know what the function can do for future reference

red flower
tardy reef
#

Thanks!

red flower
cursive sentinel
red flower
cursive sentinel
#

there is a png in both 1x and 2x

#

i strictly followed the video up to this point

red flower
#

what's the filename

cursive sentinel
#

Jokers.png

#

in both files

#

in 2x the size is twice as big

red flower
#

can i see a screenshot of your mod's folder

cursive sentinel
#

the last is in x2 (there is also one in x1)

#

the mods overall file

red flower
#

hmm weird

#

oh

#

its 1x and 2x

cursive sentinel
#

ah

#

ah...

#

thank you very much

narrow iron
#

how can i check if a card is debuffed?

red flower
#

card.debuff

narrow iron
#

thank you!

tall wharf
#

?????????

narrow iron
#

can i debuff a joker with debugplus?

glass scaffold
lyric jasper
#

why is this code not working? its supposed to have a 1 in 2 chance of retriggering diamond suit cards but it doesnt retrigger

calculate = function(self, card, context)
    if context.repetition and context.cardarea == G.play and not context.repetition_only then
        if context.other_card:is_suit("Diamonds") and 
            pseudorandom('grindstone') < G.GAME.probabilities.normal/card.ability.extra.odds then
            return {
                message = localize('k_again_ex'),            
                repetitions = card.ability.extra.repetitions,
                card = context.other_card
            }
        end
    end
  end```
red flower
south lintel
red flower
#

SMODS.add_card{key = "j_modprefix_jokerkey"} for example

south lintel
#

alright, thanks

south lintel
red flower
south lintel
#

or can I not use vanilla jokers in this function

red flower
#

you can

south lintel
#

alrighty

rough furnace
#

you can get the key of any card with DebugPlus by hovering over it and running eval dp.hovered.config.center.key

errant karma
tardy reef
#

Question, what's the easiest way to spawn a modded joker for testing purposes?

red flower
#

debugplus

tardy reef
#

I think I've heard there's a mod for it?

#

Yeah that one

#

Thanks

long sun
#

hiya, quick question! how do i check the level of Straight?

glass scaffold
#

So uhhh how do badge colors work?

long sun
#

ah nevermind, found it :D

glass scaffold
#

This doesn't work btw

long sun
errant karma
#

thanks trance, very cool

glass scaffold
errant karma
#

i can already see the amount of wii energy in my Balatro

long sun
long sun
#

memories!!!!

errant karma
long sun
#

please do!

errant karma
#

might as well lol

glass scaffold
#

make it, this is peak

errant karma
#

done

potent trout
#

spritework go brrr

errant karma
#

wii cards is real!!!!

tardy reef
#

I got the effect of my joker working surprisingly quickly, but now I want to add a few messages to pop up under certain conditions, where can I read how to do this?

errant karma
tardy reef
#

Yeah

red flower
tardy reef
#

Like those "Upgrade!" bits of text that some jokers have

#

Thanks a lot!

long sun
placid star
#

does anyone know the end of ante context?

long sun
#

Currently +#2# Mult text works fine

#

this happens immediately after playing a hand

red flower
#

talisman turns hand levels into a table

long sun
#

ah

red flower
#

i dont really know how to fix that in this case

faint yacht
#

to_big(G.GAME.hands["Straight"].level) * to_big(card.ability.extra.mult_per_strength)

tardy reef
#

It's very simple, but I'm proud to have gotten it working so quickly, thanks a lot for the help!

placid star
glass scaffold
#

We're getting somewhere, but this still isn't insta-winning the blinds. Anyone know how to make it work?

glass scaffold
placid star
unkempt thicket
placid star
glass scaffold
red flower
#

i think setting_blind is too early to win the round tho, you might need an event that checks G.STATE == G.STATES.SELECTING_HAND

glass scaffold
red flower
#

that should do it

#

oh wait

placid star
#

anyone know how to check if a hand one shots a blind?

unkempt thicket
#

call when first hand drawn

red flower
# glass scaffold

context.individual and context.setting_blind is not going to trigger

unkempt thicket
#

instead of select blind

glass scaffold
faint yacht
#

Restarted run?

unkempt thicket
cursive sentinel
#

hey i wonder what is the line to call the orange color used for the acrobat or the dusk joker?

formal parrot
#

Uhh

#

Can i have 2 souls on the same joker sprite ?

unkempt thicket
formal parrot
#

How.

red flower
glass scaffold
#

So uhhh we're getting somewhere...

red flower
#

G.STATES.HAND_PLAYED

unkempt thicket
faint yacht
red flower
#

i just made my own custom context :3

unkempt thicket
#

Fair

glass scaffold
#

What in the-

#

It works

#

But how did we get here?

red flower
#

yeah it's what i was just saying

unkempt thicket
glass scaffold
placid star
#

is there any easy way to get a joker to print a varibale every time it changes other than adding it manually

long sun
unkempt thicket
long sun
#

oh i have Talisman

red flower
# glass scaffold Change `context.first_hand_drawn` to `context.after`?

this works

if context.setting_blind and context.main_eval then
    G.E_MANAGER:add_event(Event({
        blocking = false,
        func = function()
            if G.STATE == G.STATES.SELECTING_HAND then
                G.GAME.chips = G.GAME.blind.chips
                G.STATE = G.STATES.HAND_PLAYED
                G.STATE_COMPLETE = true
                end_round()
                return true
            end
        end
    }))
end
long sun
#

it's the same error though

cursive sentinel
#

heya im wondering where can i find the base game joker descriptions?

#

im searching all the colors in there

#

it doesnt seem to be neither in main.lua nor card.lua

#

and none of the others i checked

red flower
long sun
#

it's in localization/en_us.lua

cursive sentinel
#

thank you !

red flower
#

the colors are here btw

red flower
#

no, with the event

errant karma
#

this might be a stupid question but is there a way to unpixellate the background shader

red flower
#

yes, you can add the pseudorandom check before the event tho

red flower
glass scaffold
red flower
#

no thats the exact same thing

glass scaffold
#

wait I added an extra end above it. that should work.

glass scaffold
red flower
#

can you copy the code here

potent trout
#

my base tarot card pack reskins

glass scaffold
# red flower can you copy the code here
    if context.setting_blind and context.main_eval then
      if pseudorandom('random seed') < G.GAME.probabilities.normal / card.ability.extra.odds then
        G.E_MANAGER:add_event(Event({
          blocking = false,
          func = function()
            if G.STATE == G.STATES.SELECTING_HAND then
              G.GAME.chips = G.GAME.blind.chips
              G.STATE = G.STATES.HAND_PLAYED
              G.STATE_COMPLETE = true
              end_round()
              return true
            end
        end
      end
    }))
  end
}
red flower
#

like this

#

each function and if should have an end

#
calculate = function(self, card, context)
  if context.setting_blind and context.main_eval then
    if pseudorandom('random seed') < G.GAME.probabilities.normal / card.ability.extra.odds then
      G.E_MANAGER:add_event(Event({
        blocking = false,
        func = function()
          if G.STATE == G.STATES.SELECTING_HAND then
            G.GAME.chips = G.GAME.blind.chips
            G.STATE = G.STATES.HAND_PLAYED
            G.STATE_COMPLETE = true
            end_round()
            return true
          end
        end
      }))
    end
  end
end
long sun
#

fixed it!! needed :to_number() after the calculations

glass scaffold
#

Thank GOD

spark pumice
#

I'm currently trying to program a joker that selects a random joker during a boss blind and makes it negative and eternal! But when I get into a boss blind it just crashes and does this?

rugged pier
#
    update = function(self, card, dt)
        if G.STAGE == G.STAGES.RUN then
            card.ability.extra.deck_chips = 0
            for k, v in pairs(G.deck.cards) do
                card.ability.extra.deck_chips = card.ability.extra.deck_chips + math.floor(v.base.nominal / card.ability.extra.part)
            end
        end
    end,
    calculate = function(self, card, context)
        if context.before and context.cardarea == G.play then
            card.base.nominal = card.ability.extra.deck_chips
        end
    end
}

cannot figure out for the life of me why this could cause base get_id function to not work

red flower
rugged pier
#

so i use update to change the value of deck_chips

#

and context.before in calculation to set the nominal value of the chip

red flower
#

you should do the update part in calculate directly

#

no reason to do it every frame

rugged pier
#

as such

red flower
#

is that in loc vars

rugged pier
#

yes

red flower
#

then do it there too

rugged pier
rugged pier
red flower
#

do the update part in loc_vars and in calculate

#

so it doesnt run every frame, just when it needs to

rugged pier
red flower
#

yes

rugged pier
#

oh wow

#

i thought it was just loaded once

#

okay that helps

#

would that fix the original issue with get_id()

red flower
#

no

#

lol

rugged pier
#

rip

red flower
#

it's probably because you're modifying the nominal but I've never worked with enhancements so idk the best way to do that

rugged pier
#

okay instead of changing nominal ill just add it to chips, let me see if that makes a difference

#

although my other enhancement changes nominal and that seemed to have worked

silk scaffold
#
SMODS.Joker {
  key = "old_joker",
  config = {
      extra = {
          chip_bonus = 35,
          mult_bonus = 6,
          ante_count = 0,
          chip_gain = 0,
          mult_gain = 0,
      }
  },
  loc_txt = {
      name = "Old Joker",
      text = {
          "When you {C:attention}Ante up,{} gain",
          "{C:blue}+#1#{} Chips and {C:mult}+#2#{} Mult",
          '{s:0.85,C:inactive}(Currently +#5# Chips and +#4# Mult){}{}'
      }
  },
  rarity = 1,
  pos = { x = 19, y = 0 },
  atlas = 'joker_atlas',
  cost = 4,
  unlocked = true,
  discovered = true,
  blueprint_compat = true,
  eternal_compat = true,

  set_ability = function(self, card, initial)
    if card.config.center.key == "old_joker" then
      card:set_eternal(true)
    end
 end,
#

hey im still kind of struggling with something stupid

#

im unsure how to make a joker always spawn as eternal

#

im pretty sure this does NOT work since thru debug ive rolled into it without an eternal sticker

red flower
#

you don't need to check the key I don't think, and even then the key should be "j_modprefix_old_joker"

silk scaffold
#

i was told about that but i like tried j_nevernamed_old_joker and it didnt work

#

ill remove the key check and just have it do card:set_eternal(true)

#

ty

rugged pier
#

nvm the problem happens even before it gets to calculate

#

so its not that

#

its the second i highlight the card what that enhancement

#

nevermind wait a second, its not even my card thats breaking the game

#

i tried picking a random card

#

and my game still crashed

rough furnace
#

sned full crash

rugged pier
faint yacht
#

...cursed.

thin anchor
#

2

glass scaffold
#

2

faint yacht
#

Still trying to make the cards get always drawn to hand... and I forgot about booster packs, so it gets drawn even if the given pack has draw_hand set to false.

rough furnace
#

or wait

rugged pier
#

new run

#

no enhancements

rough furnace
#

something might be checking if a hand is valid on a not real hand

errant karma
#

is it possible to change the position of the card on the main menu?

rugged pier
#

hmm yeah

#

i removed my mod

#

and it still crashed

#

is it the new smod version maybe...

#

i was on 0315b and upgraded to 0407a

#

i just deleted the old smod folder and cloned the main branch

#

should i download the zip file from release instead

thin anchor
#

opinions

rugged pier
red flower
thin anchor
rugged pier
#

i need to iteratively find which mod is not compatible

rugged pier
#

no way around it

#

time to manually disable and enable mods one by one

red flower
#

yeah i dont think its an smods issue

rugged pier
#

yeah

jovial swallow
#

Anybody know how to make an enhancement that changes how many chips a card gives instead of adding bonus chips? I'm trying to make an enhancement that makes a card give zero chips, but keep it's rank and suit

rugged pier
#

got it

#

the issue is with divvy's preview

spark pumice
tepid crow
old bane
jovial swallow
#

thanks