#💻・modding-dev

1 messages · Page 587 of 1

shell timber
#

does wordle still store all of their answers in a massive array?

vale grove
frail parcel
#

i am once again asking why this doesnt work

slim ferry
#

its loc_txt, not loc_text

frail parcel
#

thx

#

is there a way to add another blind to a ante

vale grove
slim ferry
#

not without patches. theres only 3 blind choices that can be used

#

you would have to patch in another and then do a bunch of ui shenanigans to make the blind selection also show it

frail parcel
#

i see

#

how do i replace the big blind

vale grove
#

maybe its easier to assign the joker a random word from all the wordle options instead

slim ferry
frail parcel
#

i see

#

how do i make it like a pool
like what boss blinds do

slim ferry
#

just make a function that picks a random blind with a certain parameter

#

thats how get_new_boss works too, it grabs a random blind with a boss parameter set

frail parcel
#

where do i put the function

slim ferry
#

wdym where do you put it? like where you want to change the big blind i guess?

daring fern
#
local date = os.date("*t")
local newdate = string.format("%04d-%02d-%02d", date.year, date.month, date.day)
local _, json = require"SMODS.https".request("https://www.nytimes.com/svc/wordle/v2/"..newdate..".json")
local word = JSON.decode(json).solution
```?
vale grove
vale grove
#

in vs code

#

<@&1133519078540185692>

vale grove
daring fern
vale grove
#

yes that ty

vale grove
#

and it shows even the one in advance

daring fern
vale grove
#

hmmm

#

i think so?

#

bcs i want it to store the daily wordle, idk how else you'd do that

daring fern
vale grove
#

previously ive just been booting up balatro to check lmao

daring fern
vale grove
vale grove
#

I've been using that but how do I check If the code u gave me correctly gives back the wordle

daring fern
#

But it does work.

#

I tested it.

vale grove
#

what day does it take the wordle from tho?

daring fern
vale grove
#

alr

vale grove
#

bcs it does indeed work (really surprised you can just check the worlde in 4 lines of code) but when i play a blind with the joker in hand it takes like a second to load

daring fern
#

Also it could be one line.

vale grove
floral marsh
#

am I applying the editions wrongfully in this challenge?

daring fern
# daring fern Also it could be one line.

local word = JSON.decode(({require"SMODS.https".request("https://www.nytimes.com/svc/wordle/v2/"..string.format("%04d-%02d-%02d", os.date("*t").year, os.date("*t").month, os.date("*t").day)..".json")})[2]).solution

daring fern
floral marsh
#

g

vale grove
daring fern
vale grove
daring fern
vale grove
daring fern
# vale grove im reading the example and it uses Card: something something, what on earth do i...
local oldmainmenu = Game.main_menu
function Game:main_menu(change_context)
    local g = oldmainmenu(self, change_context)
    local date = os.date("*t")
    local newdate = string.format("%04d-%02d-%02d", date.year, date.month, date.day)
    local _, json = require"SMODS.https".request("https://www.nytimes.com/svc/wordle/v2/"..newdate..".json")
    G.modprefix_wordleword = JSON.decode(json).solution
    return g
end
vale grove
#

so a hook is essentialy storing an entire function inside a single variable?

daring fern
vale grove
#

wdym every function?

daring fern
vale grove
#

ohhhh

#

than what is the purpose of a hook exactly?

#

a global definer?

daring fern
vale grove
floral marsh
#

the jimbo curse

#

is taking over

#

so I got 2 issues here:

  • the jimbo curse
  • the negative edition not applying on the other half of the cards
floral marsh
#

havent made the custom rules and stuff yet

#

doing the starting stuff first

lavish elm
#

quick question do custom jokers appear in buffoon packs or judgement automatically or do I have to implement this myself?

floral marsh
lavish elm
#

ok thx

daring fern
daring fern
#

Also it's without the e_ prefix.

floral marsh
#

I love having to change 52 lines

floral marsh
#

🗿

#

I just sneezed so hard I felt my soul leaving my body

wild berry
#

why am i getting this error

crimson tapir
#

does anyone know why the last pixel of my pack is being extended this is my atlas lua SMODS.Atlas({ key = 'Junk1', path = 'JunkPack.png', px = 71, py = 95 })

wild berry
#

its probably because theres a few pixels at the end of it

#

show the sprite

crimson tapir
slim ferry
#

pixels at the edge of the 71x95 area usually cause colour bleeding issues, not this

wild berry
slim ferry
#

oh nvm then

crimson tapir
wild berry
#

center it in the spritesheet

#

make it not touch the edges of its border

crimson tapir
#

it does

lavish elm
#
local other_card1 = nil
        for i = 1, #G.hand.cards do
            if G.hand.cards[i] == card then other_card1 = G.hand.cards[i + 1] end
        end
        if context.cardarea == G.hand and context.other_card == other_card1 then
            return {repetitions = 1}
        end

why this not work?

slim ferry
#

the sprite is way too small

#

you need 71x95

#

and then a 1 pixel gap between the border

wild berry
#

yeah

crimson tapir
wild berry
#

yep

slim ferry
#

yeah

wild berry
#

fixed for u

slim ferry
#

regardless of the actual sprite size, all centers should be 71x95 sprites

lavish elm
#

I don't want the joker I actually want this to work in the hand

crimson tapir
slim ferry
slim ferry
#

card is the joker

lavish elm
#

wait then how do I check for the hand/scoring hand

wild berry
#

context.other_card

slim ferry
lavish elm
#

it is an edition that retriggers the card to the right

slim ferry
#

playing cards cant retrigger anything other than themselves

#

would require some extra shenanigans for the playing card version of the edition

lavish elm
#

oh man

alpine tulip
#

been messing around with retrigger effects and was wondering if there is a context that occurs directly after all retriggers involving this joker has. my joker uses a count to determine how many retriggers occur but i cant seem to find a way to set the count back to zero after it has finished retriggering without breaking blueprint and brainstorm interactions

wintry solar
#

its pretty simple to retrigger other playing cards now we have mod calculate functions

slim ferry
alpine tulip
#

yeah i know, the way my joker figures out how many retriggers to do is based on a count tho and blueprint and brainstorm cause issues

alpine tulip
slim ferry
#

i imagine

#

actually

#

what is card.ability.extra.count

alpine tulip
#

it doesnt unfortunately because if blueprint or brainstorm are used, they'll reset the count and then the joker wont have its own retriggers to use

alpine tulip
#

the way my joker gets retriggers is by playing gold cards with each gold card adding to the count. if the joker is used to retrigger, i want the count to get reset to 0 but right now, it'll only work if its being used immediately to score whereas i want to have the option to be able to save the retriggers when not pointing to another joker thats involved in scoring.

#

im curious if there is a way to use event but i dont quite know how i would do so

hidden mirage
#
            card.ability.extra.xmult,
            localize(suit, 'suits_singular'),
            colours = { G.C.SUITS[suit]
        } } }```how to use the color in loc_txt
lavish elm
#

how to make editions not appear for playing cards?

nova orchid
#

how do i make a joker check if there's another specific joker anywhere?

#

i want to check for j_otm_python

#

how would i do that

daring fern
nova orchid
#

like this?

daring fern
hidden mirage
#

how to check during context.after if the hand was not valid during a boss blind (not 5 cards for example)

crimson tapir
#

how do i change the scale of a consumable like how wee is but with a consumable

zealous glen
crimson tapir
zealous glen
crimson tapir
gleaming plover
#

as far as I know it means a friend and I know 😉

zealous glen
crimson tapir
#

oh ok

#

how do you do it with a joker then

zealous glen
#

Anyways it’s somewhere in the wiki but it might be easier to look at Vanilla Remade

#

Because I assume it’s done there too

crimson tapir
#

ok

wild berry
#

how can i give a index to my custom rarity

daring fern
wild berry
#

like this

#

being able to assign a number

#

as a rarity

#

this is the rarity

daring fern
wild berry
#

so i dont have to add the joker to a table in the rarity everytime

red flower
wild berry
#

wait

#

shit

red flower
#

you do rarity = "modprefix_key" in the joker

wild berry
#

oh

#

thanks

red flower
#

adding a name to things doesn't do anything, you want loc_txt or a localization file

robust marsh
#

mmm, how do people add buttons into the run_setup screen properly? I want to rewrite my code from a while ago because right now I'm just inserting the button very awkwardly..

wild berry
red flower
red flower
wild berry
#

oh

#

also how can i make a gradient

red flower
wild berry
#

ty

robust marsh
wild berry
#

does badge_colour support gradients

daring fern
wild berry
#

how so

wild berry
daring fern
wild berry
#

kty

glass crown
#

if i wanted to go about
A. altering the card on the main menu
B. pushing the card on the main menu upward
how would i go about that?

nova orchid
#

i literally cannot find the vanillaremade or whatever mod no matter what i search on google

alpine tulip
nova orchid
#

how do i sprite new ranks

#

bro where is everybody

cursive gazelle
#

Please don’t spam

shell timber
#

repeating your question 3 times doesn't make it more likely for someone to answer

nova orchid
#

i sent it 2 minutes inbetween each time

cursive gazelle
#

Notmario can you link them the mod example from smods

#

I’m not on my pc

shell timber
nova orchid
#

(i'm joking)

#

i still don't know how to sprite new ranks :P

slim ferry
#

have you tried reading the docs

#

i feel like its explained quite clearly there

nova orchid
#

i'm trying to sprite a new rank, not a suit, a suit sounds much more simple than a rank, but i'm trying to sprite a rank

cursive gazelle
#

Have you tried reading his name

nova orchid
#

i'm good at coding, bad at modding in general

#

i still do not know how to do it

slim ferry
#

its the same as suits but organized in columns instead of rows

nova orchid
#

X or Y

#

because i don't know if you're saying if each should be in a different column or if they should all be in a column

wild berry
#

im getting this error

daring fern
wild berry
#

oh

#

right

slim ferry
slim ferry
#

yes

#

and then the suits should be in the same order as the suits are in the vanilla sprites iirc

nova orchid
#

like this? (this is obviously not the final version, this is just a base so i know what the cards look like)

cursive gazelle
#

If you’re making a new suit or a deck skin you don’t need the background for the card

nova orchid
#

i know :P

#

it's just good for me to have as a base

#

so that i don't screw it up

#

also i'm making a new deck in general

#

not deck

#

rank

cursive gazelle
#

Suit

nova orchid
#

i'm making a new rank

cursive gazelle
#

Ah

slim ferry
nova orchid
#

like this?

#

i'll adjust the colour of the bottom one in a sec

slim ferry
#

yeah

burnt tide
#

how can I make a deck disable reward money ?

#

like the Red Stake but for all blinds

unkempt bronze
#

I think that's covered in VanillaRemade

#

Also... I'm having problems installing mods still

nova orchid
#

i did it! thank you

burnt tide
slim ferry
plucky berry
#

guys is there a way to create a deck that starts only with specific ranks?

#

like abandoned deck but I wanna remove 8 9 and 10s

plucky berry
#

everything I'm trying is either deleting every rank ore none

plucky berry
#

I was using olatrab and paperback as reference code

plucky berry
#

can you give me a link

unkempt bronze
plucky berry
#

tnx

#

abandoned deck uses
apply = function(self, back)
G.GAME.starting_params.no_faces = true
end,
but 8, 9 and 10s aren't in a category like face cards

wintry swallow
#

What is the code for the chances of a joker appering in the shop?

plucky berry
wintry swallow
#

Got it. thanks

daring heron
#

so can anyone explain how negative works as a shader
trying to recreate it in blender

wintry swallow
#

Now how can i find the rarity in the files of vanilla balatro?

real crown
#

What's the best/easiest way to implement increasing the odds of certain Jokers appearing when a special deck is being used?

#

Not of certain rarity, just strictly saying that x, y, and z jokers appear twice as often

static valley
#
            local rarity = joker.config.center.rarity
            local new_joker = SMODS.create_card({
                set = 'Joker',
                legendary = legendary,
                rarity = rarity,
                edition = joker.edition,
                stickers = joker.stickers,
            })

trying to make a consumable that rerolls a random joker into a new one of the same rarity, but for some reason it only rerolls into rare jokers.

red flower
red flower
real crown
wintry swallow
red flower
#

do you want to change the weights or just see them

wintry swallow
#

just see them

red flower
wintry swallow
#

And these are the original games weights (The words "Remade" kinda make me feel like they got edited.)

red flower
#

yes

wintry swallow
#

Okay, Thanks.

red flower
#

vanillaremade is just recreations of vanilla stuff using smods, these are just copied from the smods version of the rarities

daring fern
# static valley ```lua local rarity = joker.config.center.rarity local n...
local rarity = (type(joker.config.center.rarity) == 'number' and ({"Common", "Uncommon", "Rare", "Legendary"})[joker.config.center.rarity]) or joker.config.center.rarity
local _pool, _pool_key = get_current_pool("Joker", rarity)
local key = pseudorandom_element(_pool, pseudoseed(_pool_key))
joker:set_ability(key)
```?
static valley
#

figured it out

#

although now I should figure out how to make it so that it only gets an edition if the joker that is being rerolled had an edition previously

#

oh wait i figured that too

daring fern
static valley
#

then how do I apply the stickers and edition from the joker?

static valley
#

oh yea that

#

👍

red flower
# static valley oh yea that

also if you just want to change a joker for another the easiest way is to do joker1:set_ability("key for joker2") and it will keep everything

static valley
#

did some testing, and suddenly I got this:

INFO - [G] 2025-09-28 13:28:20 :: ERROR :: StackTrace :: Oops! The game crashed
card.lua:262: Could not find center "UNAVAILABLE"
loud summit
#

how do you check if a card is a consumable

daring fern
loud summit
#

thx

daring fern
# static valley figured out the issue
local rarity = (type(joker.config.center.rarity) == 'number' and ({"Common", "Uncommon", "Rare", "Legendary"})[joker.config.center.rarity]) or joker.config.center.rarity
local _pool, _pool_key = get_current_pool("Joker", rarity)
local key = pseudorandom_element(_pool, pseudoseed(_pool_key))
local it = 1
while key == 'UNAVAILABLE' do
    it = it + 1
    key = pseudorandom_element(_pool, pseudoseed(_pool_key..'_resample'..it))
end
joker:set_ability(key)
loud summit
#

what does get_id return for stone cards

static valley
#
    local key = pseudorandom_element(_pool, pseudoseed(_pool_key))

    while not G.P_CENTERS[key] do
        key = pseudorandom_element(_pool, pseudoseed(_pool_key))
    end

this is what I proceeded to do

daring fern
static valley
#

k

#

im guessing it's so that it does a different pool?

frosty rampart
daring fern
loud summit
#

oh

rotund sable
#

Fun

long sun
#

how do i check if a Joker is being destroyed? i had this but this isn't working
if context.selling_self or (context.destroy_card and context.destroy_card == card) then

daring fern
long sun
#

👍

#

do i need to check if it's this card?

daring fern
long sun
#

i tried that but it didn't work for my application

#

i need it to delay before it gets sold

#

(or destroyed)

daring fern
long sun
#

play a sound, eval a status text, delay 4.5 seconds, proceed

daring fern
long sun
#

mhmhm

#

i'm assuming i can return a table for that

daring fern
long sun
#

nevermind ^^;

#

ya you're right

static valley
#

for a card enhancement, how do I check when the card itself is about to be destroyed?

daring fern
static valley
#

how do I check the card's rank and suit?

daring fern
#

Is it possible for something to be something and not be something at the same time?

slim ferry
#

what does that even mean in the context of balatro

daring fern
static valley
#

how do I check if a very specific probability succeeds, specifically something like wheel of fortune?

unkempt bronze
daring fern
slim ferry
rocky plaza
#

i would imagine that couldnt be the case
i cant think of a possible way that this could ever be true
Card:is_face == not Card:is_face()

slim ferry
#

i dont think that would be possible, would require a not metamethod i imagine

#

but that doesnt exist

static valley
slim ferry
#

check vanillaremade

#

it has the same identifiers as vanilla

slim ferry
daring fern
rocky plaza
#

hmmmmge

#

yeah i suppose

#

but that would also rely on separate calls

#

i dont think there's a good way to make a playing card be both treated as a face and a nonface card
cuz if for instance Midas Mask calls Card:is_face to check if its truthy and Ride the Bus calls Card:is_face to check if its falsy
there'd be no way to predict the order to have Card:is_face determine whether it should return its normal or inverted value
so i think its safe to assume that if Card:is_face is true then not Card:is_face is false

slim ferry
#

use a lua parser to replace every instance of not Card:is_face with a unique function :clueles:

#

oh

#

yeah true

austere ravine
#

Why when i print to console does nothing happen

#

the function that the print statement is in is called and properly works as seen by my mod working but nothing gets printed

#

🤔

slim ferry
#

i dont think print goes into the lovely console

#

iirc

austere ravine
#

oh u right im brainwashed

daring fern
zealous glen
rocky plaza
#

hmm maybe

loud summit
#

guys why does my joker keep getting a self destructive tag applied?

rocky plaza
#

but then you'd need to know somehow if a joker is checking if a card is a face or if a joker is checking if a card is not a face
and i cant think of a good way that doesnt involve checking the code of the joker

daring fern
#

Also Ride the Bus would still reset because technically the card is a face card still I think.

plucky berry
#

is there a way to change the strength effect for a specific card? for example strengthening a 7 to a new rank I made

daring fern
zealous glen
#

And/or the function they cite for changing the rank of cards

#

Otherwise, you could try taking ownership of Strength, or hooking the aforementioned function

plucky berry
#

I found there is a next parameter but not previous

plucky berry
zealous glen
#

Maybe at the bottom section, where it lists methods

daring fern
zealous glen
daring fern
zealous glen
# daring fern Why not?

It seems dubious to manipulate the config of objects mid run; I don’t know if it affects existing objects, and how it interacts with saving and loading

#

It’s more straightforward to hook the SMODS function that changes ranks and use that

daring fern
plucky berry
#

I need to change it in general

#

like whenever the mod is active the strength effect is different

zealous glen
#

Oh

plucky berry
#

not for specific jokers or decks

zealous glen
#

Just take ownership

daring fern
zealous glen
#

I think that’s the recommended way

zealous glen
#

It avoids collisions, for one

daring fern
plucky berry
#

hmmm... does this work if I want only 7s of specific suits to do that?

zealous glen
daring fern
plucky berry
#

yeah I mean is there a way to add an if

daring fern
zealous glen
zealous glen
daring fern
zealous glen
#

Which is why I don’t understand

#

Taking ownership checks for collisions

#

AFAIK

daring fern
zealous glen
#

So two mods can’t change the same value

#

I thought the point of taking ownership was to check for collisions

nova orchid
#

i have an absolutely evil idea for a blind, but i don't know how i would make it

#

as soon as the blind starts, you get 100 seconds, and if you fail to beat the blind in those 100 seconds, you immediately lose the run

frosty rampart
#

reference cryptid "the clock" for how to track time

nova orchid
#

couldn't i just use os.time

#

that's in base lua

#

the main issue would be drawing a timer to the screen

daring fern
nova orchid
#

oh yeah because pausing and stuff

#

how do i hook

#

and also how do i draw the timer :P

nova orchid
#

time since asking: 30 minutes
responses: 0

nova orchid
#

that isn't helping it's too confusing :P

#

like this?

mystic river
#

... where do i put the localization strings for a new consumeable type?

daring fern
mystic river
#

can you be more specific? there's several relevant localization strings and i don't know what keys they go under

daring fern
mystic river
#

and the undiscovered description?

unkempt bronze
#
SMODS.Challenge {
    key = 'laundry_day_1',
    rules = {
        custom = {
            { id = 'laundry_day' },
        }
    },
    jokers = {
        { id = 'j_DNA' },
    },
    restrictions = {
        banned_cards = {
            { ...27 jokers... },
            { id = 'c_star' },
            { id = 'c_moon' },
            { id = 'c_sun' },
            { id = 'c_world' },
            { id = 'c_sigil' },
            { id = 'c_incantation' },
            { id = 'c_grim' },
            { id = 'c_familiar' },
            { id = 'v_magic_trick' },
            { id = 'v_illusion' },
            { id = 'p_standard_normal_1', ids = {
                'p_standard_normal_1', 'p_standard_normal_2',
                'p_standard_normal_3', 'p_standard_normal_4',
                'p_standard_jumbo_1', 'p_standard_jumbo_2',
                'p_standard_mega_1', 'p_standard_mega_2' } },

        },
 
      banned_other = {
            { id = 'bl_club', type = 'blind' },
            { id = 'bl_goad', type = 'blind' },
            { id = 'bl_window', type = 'blind' },
            { id = 'bl_head', type = 'blind' },
      },

    },
            
    deck = {
        type = 'Challenge Deck',
        cards = {
            { s = 'H', r = 'A' }, 
            { s = 'H', r = 'K' },
            { s = 'H', r = 'Q' },
            { s = 'H', r = 'J' },
            { s = 'H', r = 'T' },
            { s = 'H', r = '9' },
            { s = 'H', r = '8' },
            { s = 'H', r = '7' },
            { s = 'H', r = '6' },
            { s = 'H', r = '5' },
            { s = 'H', r = '4' },
            { s = 'H', r = '3' },
            { s = 'H', r = '2' },
         }
    },
}```
#

Code for a mod challenge I'm trying to play

solid mesa
#

oh

#

i dont know enough about challange to know what is wrong

unkempt bronze
#

Well, that's fine since the code was ignored for missing }

#

to match { on line 13

solid mesa
slim ferry
#

i dont think that just

#

magically fixes challenges from other mods crashing

solid mesa
#

"could"

unkempt bronze
#

You guy want to read the crash log?

solid mesa
#

yea, gimme one second im getting in my computer

unkempt bronze
#

The entire error

red flower
#

you can copy paste from the crash screen

unkempt bronze
#

I probably should have

red flower
#

what's line 81

#

in your code

unkempt bronze
#

{ s = 'H', r = '4' },

#

Just saying "the deck has a 4 of hearts"

unkempt bronze
red flower
#

can you send the whole file

mystic river
#

whole

red flower
#

im assuming thats not the whole file because it says ...27 jokers...

mystic river
#

not an edited snippet

red flower
#

it's a syntax error but i dont see it there

unkempt bronze
#

It couldn't fit with all 27 jokers in place

mystic river
#

don't send it as a message, upload it as a file

unkempt bronze
#

My Challenge, called Laundry Day, which rescricts your deck down to one suit of cards

red flower
#

I don't see the problem there either. Maybe you didn't save?

slim ferry
mystic river
#

the file
to your hard disk

#

maybe you just typed the changes and then didn't commit them

mystic river
#

i mean that seems unlikely but it's worth checking

#

most things you can use to edit lua files don't autosave

unkempt bronze
#

Then how save in github?

mystic river
#

are you editing the file on github, the website?

unkempt bronze
#

yea

mystic river
#

that is,
certainly a workflow you've chosen
you should edit the file that's on your computer

unkempt bronze
#

that a problem, or...

mystic river
#

smods isn't looking on github for your mods, after all

#

it's looking in your mods folder

unkempt bronze
mystic river
#

okay, well, double-check that you actually did that with this one

#

yeah i straight up don't get this error when i load that file

unkempt bronze
mystic river
#

i generally recommend editing your files in a local workspace, perhaps using a tool like visual studio code, and then using git to put your files on github (visual studio code integrates this and makes it easy to do without having to learn git itself, probably other coding environments do also)

unkempt bronze
#

error, challenge couldn't be loaded

mystic river
#

j_dna, not j_DNA
keys are case sensitive

unkempt bronze
#

ah. but what about the center issue?

mystic river
#

i believe that is the center issue
it's trying to get info about j_DNA, which doesn't exist

unkempt bronze
#

Still not working

#

same issue too, indexing a local center

#

Also, it's titled "ERROR", so... I'm a bit bad at ccoding

mystic river
#

it doesn't have localization strings

unkempt bronze
#

How do I add those in?

mystic river
#

easy way to do it is

loc_txt = {
  name = "Laundry Day"
}

the proper way to do it is to make a localization file, but that's a fair amount of work to get started and only relevant if you expect to translate the mod

GitHub

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

unkempt bronze
#

Also, when I click on restrictions, it just crashes then and there

mystic river
#

yes, managing that for the first time is a fair amount of work

frosty dock
#

what is

mystic river
#

getting rid of all the random additional stuff that gets in there because you're a new modder who doesn't know what you're doing

#

(source: that's what i did lol)

frosty dock
#

what random additional stuff, just don't run other mods when you do it

unkempt bronze
#

Not getting the game to crash upon trying to make a bonus challenge happen. Also, it's only the restrictions, the deck works just fine, and the name didn't update.

frosty dock
#

(if there's additional stuff from smods, that's a bug and I don't know about it)

unkempt bronze
mystic river
#

not really, i haven't made a challenge in a while

frosty dock
#

hold on lemme have a look at the crash

unkempt bronze
#

give me a momen

mystic river
#

probably one or more of your keys is wrong
it's trying to display the restricted cards, so if a key is wrong it will try to index G.P_CENTERS.["key that doesn't exist"], which will be nil

unkempt bronze
#

and the code

frosty dock
#

you still have j_DNA

unkempt bronze
frosty dock
#

it needs to be j_dna

mystic river
#

lmao yes that would do it

frosty dock
#

the bans wouldn't cause a crash if they were to be inaccurate

unkempt bronze
#

might have the wrong files...

frosty dock
#

they'd just fail to ban the card

mystic river
#

best way to determine a card's key is to search localization/en-us.lua in the vanilla source for it

unkempt bronze
#
        banned_cards = {
            { id = 'j_greedy_joker' },
            { id = 'j_lusty_joker' },
            { id = 'j_wrathful_joker' },
            { id = 'j_gluttenous_joker' },
            { id = 'j_blackboard' },
            { id = 'j_seance' },
            { id = 'j_shortcut' },
            { id = 'j_ancient_joker' },
            { id = 'j_castle' },
            { id = 'j_certificate' },
            { id = 'j_smeared_joker' },
            { id = 'j_certificate' },
            { id = 'j_bloodstone' },
            { id = 'j_rough_gem' },
            { id = 'j_arrowhead' },
            { id = 'j_onyx_agate' },
            { id = 'j_flower_pot' },
            { id = 'j_seeing_double' },
            { id = 'j_crazy_joker' },
            { id = 'j_droll_joker' },
            { id = 'j_devious_joker' },
            { id = 'j_crafty_joker' },
            { id = 'j_four_fingers' },
            { id = 'j_runner' },
            { id = 'j_superposition' },
            { id = 'j_the_order' },
            { id = 'j_the_tribe' },
            { id = 'c_star' },
            { id = 'c_moon' },
            { id = 'c_sun' },
            { id = 'c_world' },
            { id = 'c_sigil' },
            { id = 'c_incantation' },
            { id = 'c_grim' },
            { id = 'c_familiar' },
            { id = 'v_magic_trick' },
            { id = 'v_illusion' },```
#

here is the joker ban list, as is written in my code

frosty dock
#

at a glance

#

j_smeared_joker is wrong

#

it's j_smeared

mystic river
frosty dock
#

but again that would just not ban the card, not crash the game

#

the crash is from the j_DNA

unkempt bronze
#

(uploaded th wrong file)

frosty dock
#

these also each don't have _joker unlike their suit counterparts

unkempt bronze
#

the code as is currently downloaded

frosty dock
#

do you have that exact file in your mod folder?

unkempt bronze
#

yes

frosty dock
#

does it still crash

unkempt bronze
#

yes

#

DNA shows up, tho

frosty dock
#

when does it crash and what's the crash log now

unkempt bronze
#

As soon as I click on 'restrictions'

frosty dock
#

oh alright

#

that's because of the bad keys then

#

smeared, crazy, droll, devious and crafty are what I've noticed

reef karma
#

does someone know how to code custom card skins into the game?

unkempt bronze
#

new altas

frosty dock
#

oh hello again

reef karma
#

hi there

unkempt bronze
frosty dock
frosty dock
unkempt bronze
#

so, J_ancient there too?

frosty dock
#

the sinful jokers are though

#

j_ancient, yes

reef karma
mystic river
#

the type-chips jokers, ancient joker, and the order and the tribe all had the wrong keys

frosty dock
#

oh i missed order and tribe

unkempt bronze
#

And now it breaks somewhere else entirely.

mystic river
#

you did a tyop somewhere

frosty dock
#

well now you have a syntax error in your code 🤪

mystic river
#

all i had to do was fix the keys to refer to things that actually existed

frosty dock
#

if you're at all interested in learning something, I'd encourage you to just give it a try and ask if you get stuck. if not I can also just make it for you if you give me the assets

reef karma
#

okay, thanks!

unkempt bronze
#

It works! Mys. Minty, you're got yourself a credit on the total mod!

reef karma
unkempt bronze
#

Also, if anyone wants, you can download it and play it yourself! The name still doesn't work, but the rest is still there

frosty dock
#

yes, you're using an outdated template

#

though it should still be supported if I'm not mistaken

reef karma
#

Should I download the template you sent?

frosty dock
#

it's not strictly a template, just an example

reef karma
#

ah so i need to write the code from scratch kind of?

frosty dock
#

you'd have to copy the code from the example for each suit you have a skin for and adapt the data to fit what you have

#

really, just changing the key and suit as well as the palette colours (or removing the palette colour, i guess) should be enough

reef karma
frosty dock
#

I'm not sure that's a coherent sentence, but don't merge code from both examples if that's at all what you were trying to say

#

you'd want to create 3 more copies of everything after SMODS.DeckSkin { and change the key and suit for each as well as the loc_txt (for the display name)

#

you might also want to adjust the colors and customize the metadata in the json file

#

-# it'd totally better to have the example do all four suits

reef karma
#

oh god I don't know any of those words 😭

#

ill try brb

#

thanks!

frosty dock
#

what words, I can try to explain better

reef karma
#

what is metadata?

frosty dock
#

mod ID, name, author, etc

reef karma
#

also, did you have a nice day today?

frosty dock
#

yeah I did, ty for asking

reef karma
#

sure!

frosty dock
#

how about you?

reef karma
#

yea pretty good

frosty dock
reef karma
#

ok,thanks!

#

do i have to have the high contrast one?

plucky berry
#

I'm going insane trying to make strenght effect depend on card suits

frosty dock
#

you can get rid of the second palette

reef karma
#

lets go

frosty dock
#

also snap the corresponding atlas definitions if you don't have the files

reef karma
#

i have the image for the cards, is that good?

frosty dock
#

i meant if you don't have separate high contrast files

#

you'd want to get rid of the atlas definitions with hc in them

reef karma
#

ah ok makes sense

plucky berry
#

Can someone help me with this? I'm trying to make 7 be strenghtened to a new rank only if it's of my modded suits

  {
    next = { '8', 'napoli_Fante' },
    strength_effect = { fixed = 1 }
})

G.E_MANAGER:add_event(Event({
    func = function()
        local napoli_suits = { 
            napoli_coppe = true, 
            napoli_denari = true, 
            napoli_bastoni = true, 
            napoli_spade = true 
        }

        local rank_7 = SMODS.Ranks["7"]
        if not rank_7 then return true end

        if G.playing_cards then
          local applied = false
            for _, card in ipairs(G.playing_cards) do
                if card and card.base and card.base.suit then
                    local suit = card.base.suit
                    if napoli_suits[suit] then
                        rank_7.next = { "napoli_Fante", "8" }
                        rank_7.strength_effect = { fixed = 1 }
                        applied = true
                        break
                    end
                end
            end
        end

        return true
    end
}))```
#

this code obviously does not work

frosty dock
#

ugh that's not something that plays nice with the current API

#

a possible solution I see is allowing strength_effect to be a function

plucky berry
#

i tried that but it crashes if i make it a function

frosty dock
#

ik, it's not currently supported

#

I'm just thinking about how to support it

#

there's not really a clean workaround

plucky berry
#

I'm trying to make a neapolitan deck of cards, so ranks 8, 9 and 10 are face cards "Fante", "horse" and "king"

#

and J,Q,K are not there

#

for now i was able to make the deck with the right cards and to make straights work, but then if i use strenght on a 7 of neapolitan suits it gives me an 8 (which has no sprite cause that card doesn't exist, instaed it's replaced by the fante)

#

this is what i've got for now, sprites are wip

reef karma
#

Can I also delete the "icon lc", or is that important? (Sorry if I'm interrupting)

plucky berry
reef karma
#

yes

#

i think

plucky berry
#

you need them if you call them in the code

slim ferry
#

if you're making a deck skin it shouldnt be needed

plucky berry
#

otherwise the game sets a default one

slim ferry
#

since im pretty sure its just used for the suit icon in the deck view

#

which deck skins dont change

plucky berry
#

yeah it is

#

usually it's for new suits

plucky berry
#

like paperback stars to make an example

frosty dock
# plucky berry this is what i've got for now, sprites are wip

sorry for delay, for now you can use this patch to allow strength_behavior (and prev_behavior) to be a function

[[patches]]
[patches.regex]
target = '=[SMODS _ "src/utils.lua"]'
pattern = '(?<indent>[\t ]*)(?<beh>local behavior =.*)\n[\t ]*if'
payload = """$beh
if type(behavior) == 'function' then
  rank_key = behavior(rank_data, card)
elseif"""
position = 'at'
line_prepend = '$indent'
#

why does that not parse

plucky berry
#

wha

#

where do i apply the patch?

frosty dock
#

do you have any lovely patches in your mod yet?

plucky berry
#

i don't think so

#

i have this

frosty dock
#

I'll get the functionality added into smods, just can't do it right away because of other pending changes affected by it

plucky berry
#

so i just put it in the main folder right?

frosty dock
#

I'll make sure the patch won't cause issues when it does get added (if I remember)

frosty dock
plucky berry
#

ok nice

#

i'll try and let you know

frosty dock
frosty dock
#

just make sure to also get rid of the suit_icon = {...} lines

nova orchid
#

how do i split my mod into multiple lua files?

frosty dock
unkempt bronze
#

Say, does anyone here know how to remove certain poker hands from scoring?

frosty dock
#

by taking ownership of them and changing their evaluate methods

reef karma
nova orchid
reef karma
#

sorry we are all asking for help all at once

frosty dock
unkempt bronze
#

thank you!

frosty dock
#

like i said you need a copy of this for each suit

reef karma
#

oh ok

unkempt bronze
#

On an unrelated note: "Laundry Day" version a.1 to release later today

frosty dock
#

a.1?

unkempt bronze
#

alpha.1

frosty dock
#

love me some nonstandard versioning

#

just know smods won't recognize that

unkempt bronze
#

I'm working on truly removing flushes, straights, and related hands from playing

plucky berry
# frosty dock yeah

[SMODS _ "src/game_object.lua"]:2029: bad argument #1 to 'ipairs' (table expected, got function)

unkempt bronze
plucky berry
#

maybe this code is wrong for the patch idk

    next = function(card)
        local napoli_suits = {
            napoli_coppe = true,
            napoli_denari = true,
            napoli_bastoni = true,
            napoli_spade = true
        }

        if card.base and napoli_suits[card.base.suit] then
            return 'napoli_Fante'  -- safe even as a string, patch wraps it
        else
            return '8'
        end
    end,
    strength_effect = { fixed = 1 }
})```
frosty dock
#

I didn't let you have next be a function

#

strength_effect is the one that can be a function

plucky berry
#

ohhh

#

ok

frosty dock
#

I think next is safe to just contain both ranks though?

plucky berry
#

yeah it is

#

im just dumb, i'm literally learning how to code with this shit

frosty dock
#

yeah just change that back to a table

plucky berry
#

probably not the best way to start coding

reef karma
frosty dock
#

that's all over the place, lemme fix it for ya

reef karma
#

Thanks!

feral tree
#

what's the varible to tell how many hands you have?

frosty dock
#

there were a lot of missing closing brackets, you didn't remove the suit_icon fields, the keys need to be unique and the suit names need to be capitalized. just to outline what I changed

#

also note the sprites in the asset file should be in the order of hearts, clubs, diamonds, spades from top to bottom

#

and 2->Ace from left to right

frosty dock
reef karma
#

omg thank you so much!

hidden notch
#

I'm trying to show the Description of "another" Joker, but I cannot figure out how to make the Variable work....```lua
local next_val = 2.0
info_queue[#info_queue + 1] = {
key = 'j_SEMBY_parking_disc_1', --..next_disc,
set = "Joker",
config = { extra = { ret = next_val } },
vars = { next_val },
specific_vars = { next_val }
}

frosty dock
#

info_queue[#info_queue+1] = G.P_CENTERS.j_SEMBY_parking_disc_1

#

if you do ever need to use this form, the correct version would be specific_vars = { vars = { next_val } } though

hidden notch
hidden notch
reef karma
#

the mod is loaded but it doesn't change the deck

plucky berry
#

i'm going insame

frosty rampart
#

unless you have a mod that adds a new "1" rank, there is no "1" rank. it's "Ace"

frosty dock
reef karma
#

select what there?

frosty dock
frosty dock
reef karma
#

it works!!!!!!!

frosty dock
#

amazing

#

I supposed you'll want to change the display name though, for that just change the loc_txt = "Example" lines to have the name instead of Example

reef karma
#

i really appreciate you taking your time to help me. It really means a lot

frosty rampart
#

what are you trying to do then

plucky berry
#

I'm tryna make 7 turn into either 8 or a new rank depending on suit

frosty dock
hidden notch
frosty dock
#

don't return 1 in the strength_effect function

plucky berry
#

oh

#

what do I return

frosty dock
#

return the rank key you want it to change to

#

so "8" or the key of your custom rank

plucky berry
#

so like '8'

#

ok I'll try that later

#

sadly I have a job

frosty dock
vale grove
#
SMODS.Consumable {
    key = 'Fent',
    loc_txt =  { 
            name = "Fentanyl", 
            text = { 
                "Give one card the {C:attention}Fent{} seal"
            },
    },
    set = 'Tarot',
    atlas = "consumables",
    pos = { x = 0, y = 0 },
    config = { extra = { seal = 'Fentanyl'}, max_highlighted = 1 },
    loc_vars = function(self, info_queue, card)
        info_queue[#info_queue + 1] = G.P_SEALS[card.ability.extra.seal]
        return { vars = { card.ability.max_highlighted } }
    end,
    use = function(self, card, area, copier)
        local conv_card = G.hand.highlighted[1]
        G.E_MANAGER:add_event(Event({
            func = function()
                play_sound('tarot1')
                card:juice_up(0.3, 0.5)
                return true
            end
        }))

        G.E_MANAGER:add_event(Event({
            trigger = 'after',
            delay   = 0.1,
            func    = function()
                conv_card:set_seal(card.ability.extra.seal, nil, true)
                return true
            end
        }))
        
        delay(0.5)
        G.E_MANAGER:add_event(Event({
            trigger = 'after',
            delay = 0.2,
            func = function()
                G.hand:unhighlight_all()
                return true
            end
        }))
    end,
}

i dont understand why thid doesnt work i double checked all the keys but when i run it i still get this error

frosty dock
#

looks like a mod prefix issue

nova orchid
#

how would i destroy a random joker that is not the joker that's destroying another joker, and destroying itself if there are no other jokers?

frosty dock
#

look at madness

#

but add an if/else that checks how many jokers there are

vale grove
frosty dock
#

set_seal has no context to know what mod it's being called from

#

so it needs the prefix

faint yacht
#

extra = 'toga_sealseal', as example of my Seal^2.

vale grove
frosty dock
#

show the seal's code please

#

but also

#

did you start a new run?

faint yacht
#

Or spawn a fresh copy of the tarot.

frosty dock
#

or that, but on the same tarot the value won't update

feral tree
#

where can i find all the base game sound effect keys for play_sound?

vale grove
#

nvm found it

#

wrong key calling

#

i might just be slightly stupid

frosty dock
#

and look in resources/sounds

faint yacht
frosty dock
#

oops, too used to assets

calm ember
#

so, can i have some help... im a noob, trying to add a custom "collab"/extra deck only appearance
Like these:

frosty dock
#

why is that even different in smods

frosty dock
#

I'll be off to sleep shortly, surely someone else can help if you need any further assistance

fallow breach
#

could someone send an example of this

#

because without examples this isn't very helpful

unkempt bronze
#

What's wrong now?

#

Like, where's the inaccuracy in my code?

red flower
fallow breach
#

thank

unkempt bronze
calm ember
frosty rampart
#

lc is for low contract, hc is for high contrast

calm ember
#

yea lol i was just looking at the wiki for atlases, thanks

crude ermine
#

i have an idea

#

ehhhh?

unkempt bronze
#

Hmmm,

#

Don't hate it

crude ermine
#

found deck

hidden notch
#

Worked literally a Year ago apparently :D

unkempt bronze
crude ermine
calm ember
#
    key = "coderdeck",
    path = "coderdeck.png",
    px = 71,
    py = 95,
}
 

SMODS.DeckSkin {
    key = "coderdeck_Hearts",
    suit = "Hearts",
    loc_txt = "Example",
    palettes = {
        {
            key = 'coderdeck',
            ranks = {'2', '3', '4', '5', '6', '7', '8', '9', '10', 'Jack', 'Queen', "King", "Ace",},
            display_ranks = {"King", "Queen", "Jack"},
            atlas = atlas_lc.key,
            pos_style = 'deck',
        },
    },
}
SMODS.DeckSkin {
    key = "coderdeck_Diamonds",
    suit = "Diamonds",
    loc_txt = "Example",
    palettes = {
        {
            key = 'coderdeck',
            ranks = {'2', '3', '4', '5', '6', '7', '8', '9', '10', 'Jack', 'Queen', "King", "Ace",},
            display_ranks = {"King", "Queen", "Jack"},
            atlas = atlas_lc.key,
            pos_style = 'deck',
        },
    },
}
SMODS.DeckSkin {
    key = "coderdeck_Clubs",
    suit = "Clubs",
    loc_txt = "Example",
    palettes = {
        {
            key = 'coderdeck',
            ranks = {'2', '3', '4', '5', '6', '7', '8', '9', '10', 'Jack', 'Queen', "King", "Ace",},
            display_ranks = {"King", "Queen", "Jack"},
            atlas = atlas_lc.key,
            pos_style = 'deck',
        }
    }
}

SMODS.DeckSkin {
    key = "coderdeck_Spades",
    suit = "Spades",
    loc_txt = "Example",
    palettes = {
        {
            key = 'coderdeck',
            ranks = {'2', '3', '4', '5', '6', '7', '8', '9', '10', 'Jack', 'Queen', "King", "Ace",},
            display_ranks = {"King", "Queen", "Jack"},
            atlas = atlas_lc.key,
            pos_style = 'deck',
        },
    },
}```
It's only working for the hearts suit...
hidden notch
calm ember
#

im confused

feral tree
#

How do i have a joker forcewin the blind? not the run, the blind

worthy snow
#

Hey folks! I've found a function I am interested in patching, but I am having some dificulty determining whether it's possible to do with smods and / or lovely.

It's update_canvas_juice under comment_events.lua. I'd like to be able to update the entire implementation of that method to reflect a setting I am adding, but I am really lost. Does anyone know if this is doable?

Its only caller is in the Game (not G) namespace, but I certainly can and will not be responsible for the game loop itself in this mod lol. TIA!

unkempt bronze
red flower
red flower
worthy snow
#

I can, sorry, I should be more specific - I know you can patch per-line with lovely, but is there a nicer way to instead do the entire implementation of a function?

#

Based on how I understand it works, the answer is likely no. I can use regex to do the whole thing but I wanted to avoid that

red flower
#

I never made a pure lovely mod so I don't know exactly how but you can just load your own file and reimplement the entire function and it will rewrite the original or hook it to add functionality
SMODS handles the loading files part as well

worthy snow
#

Ah sweet, that sounds promising! Cheers 😄

desert ore
#

any notes? first time shading something like this

#

background planning to do smth else but don't know quite yet

coarse marsh
#

What does this mean

calm ember
#

can someone help me with SMODS.DeckSkin?

red flower
unkempt rover
#

How do I make a consumable like the Black Hole or the Soul? Having a hard chance of appearing in booster packs

frosty rampart
nova orchid
#

is this a good sprite

#

btw the back is just "4A4F4B4552" repeated a bunch, and if you interpret that as ascii bytes, it says "JOKER"

nova orchid
#

how would i make a card get an enchancement if it is the only card played on the first hand of a round (example: Ace of Spades, Ace of Diamonds would not do anything, but 6 of clubs would get enhanced, but only if it's the first hand of a round)

#

this is also inside of a joker btw

frosty rampart
#

"do something if first hand of round has only one card": reference DNA in vanillaremade
"apply an enhancement to a card": card:set_ability("m_modprefix_enhancementkey")

#

(replace card with whatever object refers to the card in the played hand)

meager quiver
#

i told you i could run with 100 mods

#

:P

#

but of course the balatro purists have to be high and mighty </3

hexed stump
#

Oh shit, more sticker functionality added since last time I worked on modding? fantastic

#

now I gotta redo my apply functions though

#

oh and my probability stuff

#

😔

#

looks better overall though

royal yarrow
#

hey, im just starting out modding, how would one go about making a joker similar to bloodstone but for spades? im stuck trying to find out how to check the suit of cards

#

any help would be appreciated, been looking thru the documentation but i cant seem to find anything there either

sturdy compass
#

I highly recommend you check out the VanillaRemade project. You can see exactly how Bloodstone is made so you can adjust accordingly

royal yarrow
#

where would i be able to find that?

sturdy compass
royal yarrow
#

thank you so so much

sturdy compass
#

No prob! It's a resource I wish I had when I started out lol

quasi comet
#

so i have a statement here that checks if a sold card is a specific edition (the edition changes; the edition_ returns the key of an edition)

#

whenever i satisfy the other stuff, its all good but it never gets through that step

umbral zodiac
#

is there a way to open a custom collection-like page with some specific cards other than manually making the ui for it

daring fern
umbral zodiac
timid zinc
#

i'm trying to access another mod's atlas in a center,

        key = { 
            mod = false
        }
    },
    atlas = 'paperback_decks_atlas',```
but it just crashes
timid zinc
#

Just looks like the typical "can't find atlas" crash to me

quasi comet
#

thanks

timid zinc
wind steppe
#

what does card_eval_status_text do

ashen drift
red flower
calm ember
#

Anyone know how to make the joker like.. tell you something? like the text prompt when you finish a round/start one

#

?

wind steppe
#

return message = "whatever you want it to say"

calm ember
#

thxx

#
            if context.setting_blind then
                card.ability.extra.Xmult = card.ability.extra.Xmult + 0.2,
                return message = '*grows*'
            end
``` not working...
daring fern
calm ember
#

Thanks omg that worked, and its so funny XD

hidden oak
#

Which design do you all like best? Working on my first mod and i want something pretty to look at to convince me to actually finish the project

wispy falcon
#

How do I check if the player is in a specific boss blind?

daring fern
gusty iron
#

If you're checking for a vanilla blind, don't include a modprefix!! ^^

bold gyro
#

hey y'all, how would i get the description of a joker that uses a multibox description (preferably as a list of lists or a list of lists of lists)? i've used the code below before but it breaks down if a joker uses multibox

localize{type = "raw_descriptions", set = "Joker", key = G.jokers.cards[my_pos + 1].config.center_key, vars = {0,0,0,0,0,0,0,0,0,0,0,0,0} }
daring fern
bold gyro
#

excellent, ty!

wispy falcon
#

Why might #G.deck.cards == 0result in a nil compare with number?

daring fern
#

Using == doesn't crash when you compare different types of values.

wispy falcon
#

What does SMODS.inject_p_card do?

daring fern
daring heron
#

does anyone here know what specifically the negative shader does so i can try and remake it in blender?

ashen drift
#

how does debugplus do savestates internally/where is the code for handling savestates in debugplus?

#

nevermind, found it!

ashen drift
#

why does this implode

#

and by implode i dont mean crash, just why it doesnt work

bold gyro
#

wait no nvm

#

worth a shot but prolly something else

ashen drift
#

i tried that before yeah

lavish elm
#

so I am trying to patch the game for the first time and for some reason I get a crash with a message I don't understand

[manifest]
version = "1.0.0"
dump_lua = true
priority = -10

[[patches]] #G.GAME
pattern = '''
target = 'game.lua'
match_indent = true
position = 'after'
payload = '''
allow_legendary = {in_shop = false, rate = 1.00},
'''
red flower
#

what's the crash

ashen drift
#

ok i think its because of the savestate thing

#

im gonna try and

#

uh

#

make it last a few more frames

lavish elm
#
 allow_legendary = {in_shop = false, rate = 1.00},
   |                                                 ^
expected newline, `#`

sorry for the late response used to hearing that discord ping noise

faint yacht
#
[[patches]]
[patches.pattern]
...
ashen drift
#

it might just be check for unlock function

lavish elm
faint yacht
#

Is that meant to be the pattern?

lavish elm
ashen drift
#

ok check for unlock

#

just does not do anything

#

??

#

wtff

lavish elm
ashen drift
#

nvm i think revo is just doing it wrong

#

i copied his code

clear ocean
#

what do you prefer?

lavish elm
vale grove
#

hey guys, how do i get the first letter of a joker name? (for more details i want a deck that looks at the first letter of a jokers name)

daring fern
vale grove
#

why 1,1 if you dont mind me asking?

ashen drift
#

from 1st char to 1st char

#

my brain farted

vale grove
#

ohh i see

clear ocean
timid parrot
#

I presume those are custom suits?

clear ocean
#

yup!

timid parrot
#

cool

#

sounds like a difficult deck

clear ocean
#

the only two decks the sleeves to be changed i think is checkered and hawaiian since that's the point of checkered and hawaiian already adds a full set to the initial deck

#

maybe do something similar to abandoned deck/sleeve where it converts another suit into leaves and roses

#

i could also do something like the starting cards for checkered and/or hawaiian with the sleeve are wild cards

timid parrot
#

starting with a lot of wild cards is kinda busted no matter how you spin it

clear ocean
#

yeah that is true

#

ideas:
checkered deck with hawaiian sleeve: starter leaf and rose cards are turn into spades or hearts
hawaiian deck with hawaiian sleeve: starter spade/heart cards are turn into leaves, and starter diamond/club cards are turn into roses

timid parrot
#

you don't technically have to make any modifications for checkered deck

clear ocean
#

i mean yeah

timid parrot
#

but yeah you could make checkered deck turn the extra cards into more hearts and spades

clear ocean
#

its more that checkered decks entire gimmick is you start with only spades and hearts

#

making it easier to build flush or spade/hearts builds

timid parrot
#

hawaiian deck + hawaiian sleeve maybe just gives you more hand size?

#

tbh I recommend making it easier to sift through the base deck anyway since you're adding so many new cards

clear ocean
#

good idea

#

thank you

timid parrot
#

do the new suits come with new hand types?

clear ocean
#

thats something im not sure

#

since the other mods and an entire api does that with spectrum hands so idk

timid parrot
#

well either you assume the use of the API or another mod or you add it yourself or you ignore it

clear ocean
#

ill think about it

meager quiver
#

guh, help

SMODS.Joker {
    key = "kittybrained",
    loc_txt = {
        name = "KittyBrained",
        text = {
            "Makes adjacent Jokers",
            "Become {C:attention}feline{} Jokers",
        }
    },
    rarity = 1,
    --atlas = 'genderbending.png',
    --pos = { x = 0, y = 0 }
    cost = 4,
    update = function(self, card, dt)
        if G.jokers then
            local adjacent_jokers = get_adjacent_jokers(center) --logic for adjacent jokers stolen from pokermon xwx
            for i = 1, #adjacent_jokers do
                CardSpecies.transform(adjacent_jokers[i], "cat")
                CardSpecies.transform(card, "cat")
            end
        end
    end
}

heres the related functions:

function CardSpecies.transform(card, specie)
    -- morphs cards
    card.species = specie --crashes if i do card.center.species????
    return
end

get_adjacent_jokers = function(card) --stole from pokermon xwx
  local jokers = {}
  if #G.jokers.cards > 1 then
    local pos = 0
    for i = 1, #G.jokers.cards do
      if G.jokers.cards[i] == card then
        pos = i
        break
      end
    end
    if pos > 1 and G.jokers.cards[pos-1] then 
      table.insert(jokers, G.jokers.cards[pos-1])
    end
    if pos < #G.jokers.cards and G.jokers.cards[pos+1] then 
      table.insert(jokers, G.jokers.cards[pos+1])
    end
  end
  return jokers
end

its currently not transforming them qwp

#

i may be stewpid,,,,,,

clear ocean
red flower
clear ocean
red flower
#

hello

meager quiver
clear ocean
#

mod progress is going well

meager quiver
#

changing a badge basically

clear ocean
#

made two suits with art from @rotund ridge and made an edition that adds a hand size with help from @timid zinc

red flower
clear ocean
#

all is left for the deck that properly adds the suits is the art which i might do later since i have work in about two hours

meager quiver
daring fern
red flower
#

so card.species is changed but the badge is still the same? then that's a problem with the badge code

meager quiver
red flower
#

i dont recommend changing a center at runtime however

meager quiver
ashen drift
#

n i need help

meager quiver
wind steppe
#

you can just run print(put whatever you want to print here, including variables)

red flower
wind steppe
#

that too

red flower
ashen drift
#

bruhhhh

#

mb then

#

ill keep banging my head

meager quiver
#

so i may be stewpid

wind steppe
meager quiver
#

WAIT, ITS HALF WORKING NOW

#

although its not changing actually adjacent jokers hmmmm, okay i mightve botched the logic i had copied while trying to test it over and over, let me re-make the pokermon logic fully and test again, if it works then we'll be poggers

ashen drift
#

i thought it was supposed to return true and then thats it but its still fucked i cba

wind steppe
#

question. how many ghosts have you angered

#

because i dont think theres any other explanation for this

ashen drift
#

like none

loud summit
ashen drift
#

why is it fucked up ts pmo

clear ocean
#

🥀

wind steppe
#

what other mods do you have

#

one of those could fuck it up maybe

ashen drift
#

debugplus and debugplusplus

#

okay im not sure if its something w my machine

wind steppe
#

buy a oujia board and make a deal with the ghosts to stop haunting your code

ashen drift
#

@wind steppe can you check if its normal on your side

#

press y anywhere

loud summit
#

do u have a localized name defined

ashen drift
#

im 99% sure that isnt the problem but ill try anyways

wind steppe
#

great readme btw

loud summit
#

i did in fact read it

wind steppe
#

wait like half an hour

ashen drift
#

bruh

#

disable hp

wind steppe
#

i cant because it crashes on load

ashen drift
#

remove the mod folder tempararily

#

move it outside of the mod folder

wind steppe
#

right

#

im. stupid

#

@ashen drift its fucked for me too

ashen drift
#

???

#

okay

#

what the flipping fuck

#

Why

lavish elm
#

how to make the add_to_deck function auto update for example:

mult = 2
add_to_deck mult = mult*2
mult = 4
remove_from_deck mult = mult/2

now mult = 2 when it was supposed to be mult = 4

slim ferry
#

look at vanillaremade turtle bean, it tracks how much hand size its still giving to remove the correct amount

lavish elm
#

ok thx

keen atlas
ashen drift
#

wtf

keen atlas
#

actually

ashen drift
#

ok am i just fucked

keen atlas
#

am i supposed to press y at a specific time or wut

ashen drift
#

anytime

#

cuz i hooked it to game update

#

which should run at all frames

keen atlas
#

yeah it works

ashen drift
#

wtf

keen atlas
#

with a clean save

ashen drift
#

this is so rigged

#

why am i just fucked

#

hm

#

oh yeah thats the problem

#

whatever im gonna do something else anyways

thorn basin
#

question: how can I set for the showman effect to make only common jokers and tarots reappear in the shop multiple times?

daring fern
#

Also you're missing your mod prefix.

thorn basin
#

oh yeah I forgot about that

#

okay fixed it, just out of curiosity how does the showman effect work in default?
like, when you normally have some jokers in the joker slots, the game has a pool of all the jokers in the collection and doesn't instance the same ones you have as long as you don't have showman (or use other ways), right?

loud summit
#

i THINK when its generating valid targets to pull from it excludes already owned ones from the set

thorn basin
#

aight