#💻・modding-dev

1 messages · Page 504 of 1

modern kindle
#

are you doing awesome rn

clear ocean
#

used this joker art as a placeholder

#

at least it looks cool

normal crest
#

dunno, ask in modding-chat

clear ocean
#

fair enough

modern kindle
normal crest
#

its just not clear how many chips it gets, or that it'd reset at some point

#

At least to me

modern kindle
#

idk scored cards to me implies all of them due to lack of specification

#

i do think resets on discard would be better for clarification though

clear ocean
#

Looking at the vanilla jokers discard is typically not orange, should i highlight resets and or per hand?

normal crest
#

vanilla is not consistent, just do what you think is best

clear ocean
#

then i think this is best

#

okay that's enough for today i'm off to bed

modern kindle
#

rest well

clear ocean
#

thanks

#

I got some more ideas like one idea is a fortune cookie joker which doubles luck and decreases or “cracks” each time a lucky card is triggered

chrome widget
#

sup gang

clear ocean
#

Or wheel of fortune hit too hah

runic pecan
#

Question: if the hand has five Wild cards, would context.poker_hands.Flush contain just one item or up to the amount of suits?
I'm worried whether the highlighted Flush[1] would cause issue or not.

runic pecan
sonic cedar
#

how would one have a joker reroll into a specific boss blind for no reason in particular isaac_grin

#

hi dilly

modern kindle
#

wave emoji

sonic cedar
foggy ginkgo
#

How does one make it so if you play 4 stone cards cards it's considered a four of a kind

faint yacht
#

iirc there's a new context for hand modification, including changing that poker hand it is under conditions.

#

Because you can return one of 'replace_scoring_name', 'replace_display_name', 'replace_poker_hands' to context.modify_hand...

foggy ginkgo
#

This is all I got lmao

#

It works

#

But when trying to detect stone cards it doesn't work

faint yacht
#

You should probably iterate over the hand and check if only Stone cards are present.

foggy ginkgo
#

But when I do this and select 4 cards of any

#

So I be in a pickle

faint yacht
#

context.other_card is not sent alongside those contexts.

foggy ginkgo
#

Yeah that's the problem

faint yacht
#

Iterate over context.scoring_hand:

local isstone = true
for i = 1, #context.scoring_hand do
  -- check if only Stone cards are present. If not, use 'break' to end the loop and set isstone to 'true'
end
if isstone then return { ... } end
foggy ginkgo
#

Where would I put this

faint yacht
#

Where you are currently checking for Stone cards, just move the actual enhancement check inside the loop.

foggy ginkgo
#

Like this?

#

Or do I change the ...

#

Sorry I'm a little silly

sonic cedar
foggy ginkgo
#

I can't cook 😔

modern kindle
#

I can smiley face

wooden swift
#

does anyone know how to change a jokers soul_pos when it activates

vernal path
#

What would be the best way to count the number of total chips scored (up to a certain value, then reset. it won't go above 21)? I'm not even sure what context I should put it in, it just earns $ sometimes when you meet that requirement

wooden swift
chrome widget
#

Updated the challenge buttons to automatically use the mod color and the mod icon with a tooltip for the mod name

foggy ginkgo
#

How you do that :O

chrome widget
#

hooking basically

formal parrot
#

How did you do that ?

  • Oh just coding
vernal path
#

Okay, I'm trying to make a joker that copies an enhancement to other cards, but it's broken and I'm not sure what's wrong since the exception it throws is a little vague.

calculate = function(self, card, context)
        if context.individual and context.cardarea == G.play and not context.blueprint then
            if (#context.full_hand == 1 and G.GAME.current_round.hands_played == 0 and SMODS.get_enhancements(context.other_card)) then
                card.ability.extra.enhancement = SMODS.get_enhancements(context.other_card)
                card.ability.extra.trigger = true
            end
        end
        if context.individual and context.cardarea == G.play and not context.blueprint and card.ability.extra.trigger and G.GAME.current_round.hands_played ~= 0 then
            card.ability.extra.trigger = false
            return {
context.other_card:set_ability(card.ability.extra.enhancement),
            }
        end```
I know it stores the enhancement, but it's throwing `attempt to index field 'config' (a nil value)`, like it isn't? Am I missing something obvious here, or is there a different path I should be taking on this?
normal crest
#

get_enhancements returns a table, which looks like { m_lucky = true }

chrome widget
#

I hooked the UIBox_Button function and reorganized the returned UI nodes to sort them into columns and add the mod icon SMODS uses for the mod config menu in the first column????

vernal path
chrome widget
#

Hmmm what's the best way to get text nodes from the localize function...

normal crest
#

you can get the enhancement key by doing context.other_card.config.center.key, and set_ability accepts a string too

#

You should also change your way of checking if the card is enhanced, the way it is rn will treat every card as enhanced

vernal path
#

oh, right since it returns a table either way

normal crest
#

context.other_card.ability.set == "Enhanced" is prob enough

vernal path
#

hmmmm... i think the context in which i am applying the enhancements is too late, as it's not counting during scoring of changed cards. Although, I may keep that for balancing reasons.

#

im almost done with my current last call bbs cards 33 Still need to figure out hooking as that's probably the best way of getting chips scored, since it's supposed to count initial chips from the hand played as well as all the other cards and jokers

#

that's for another time though, im gonna try and start work on my music ones

modern kindle
#

oh yea....papas cookin..

flint sparrow
#

hey guys, i have a joker that is supposed to decrease the level of full house and flush house hands

calculate = function(self, card, context)
        if context.before and context.scoring_name == "Full House" then
            return {
                level_up = -30,
                message = ("I FORBID THIS!")
            }
        end
    end,
calculate = function(self, card, context)
        if context.before and context.scoring_name == "Flush House" then
            return {
                level_up = -50,
                message = ("I FORBID THIS!")
            }
        end
    end,```

although it only decreases the level of flush house, any way i could fix this?
maiden phoenix
#

The Balatro ARG

maiden phoenix
chrome widget
#

Ughhhhh what is the most generic way to get text nodes for the UI? I'm running into a crash where it says a UI node is crashing due to missing a colour property but because it's from a draw function, I can't actually trace it easily

flint sparrow
# maiden phoenix You can only have one calculate func per joker

ah. i tried doing this earlier but it bugged out in ways i can't explain

calculate = function(self, card, context)
        if context.before and context.scoring_name == "Full House" or "Flush House" then
            return {
                level_up = -30,
                message = ("I FORBID THIS!")
            }
        end
    end,```
maiden phoenix
#

Because Full House is always true

#

Check the code for trousers how they do the hand check

vernal path
#

if context.before and context.scoring_name == "Full House" or "Flush House" then this is basically saying "false or "flush house"

maiden phoenix
#

But otherwise youd do 'context.scoring_name == 1 or context.scoring_name == 2'

flint sparrow
vernal path
#

try it and see

flint sparrow
vernal path
#

check your syntax

manic rune
vernal path
manic rune
#

crash when i press the buttons, weird

#

ah nevermind i see

#

weird, this shouldve crashed my mod

flint sparrow
manic rune
#

did you install lua extension

flint sparrow
#

im new to this lua thing, i should probably do that

flint sparrow
#

i'm not sure how to rewrite this to make it stop yelling at me

manic rune
manic rune
#

oh but also

#

you are putting a return after a return there

vestal magnet
#

if i make a custom rarity what do i put in the "rarity =" field in a joker

vernal path
#

yeah, that's probably unreachable code. I'd put the full house check and flush house check in separate blocks like

  do something
end
if y then
  do something else
end```
vernal path
#

With the latest smods update (and, well, in general) how am i supposed to represent chance numbers? It doesn't like it when i set chance = G.GAME.probabilities.normal in config.extra

faint yacht
#

The SMODS.get_probability_vars for loc_vars and such & SMODS.pseudorandom_probability for actual chance effect rolls.

vernal path
#
config = {
        extra = {
            chance = SMODS.get_probability_vars(),
            odds = 3,
            Tarot = 0
        }
    },``` like this?
wintry solar
#

Chance = 1

#

Then you use the function in loc vars

manic rune
#

is this how you create a fake card

wintry solar
#

I’m not sure you can emplace it

foggy ginkgo
vernal path
#

which is very silly

distant junco
#

yo, im trying to make a joker that checks if the chips are below 30 and if they are then it x15 mult. but it keeps x15ing no matter what

#

pls help

placid star
#

could a joker stabily store a joker cardarea in it ability.extra. table?

placid star
#

iirc its just chips

distant junco
#

oh

#

is there like some documentation or something

placid star
placid star
#

does anyone have an example of a joker storing a card area (not in the main_end using nodes), everything works fine, i can have multiple copies but when i COPY my joker my game crashes, no crash log either

distant junco
maiden phoenix
#

You get a stack overflow no? Areas saves jokers and one of them have an area so it repeats

maiden phoenix
placid star
#

this is factual information, i think the mult value is just mult

maiden phoenix
#

Whats your thing for/do?

placid star
#

i use control c with debug or ankh to test

#

only ref i have to the card area at current

maiden phoenix
#

What is that area for?

placid star
#

storing jokers, im not scoring them however

maiden phoenix
#

If you have jokers saved do you want the copy to have em too?

placid star
#

that would be preferable

maiden phoenix
#

Yea sorry Im not sure how I can help, I dont mess with areas

placid star
#

they are... tempremental to say the least

maiden phoenix
#

I just know its a recursive issue

#

Does it hard crash or you got a log

placid star
#

no crash info

wild berry
#

is there a way to check if a playing card with a special seal / edition is triggered or not

placid star
wild berry
#

yes

#

i mean

#

if their special thing is triggered

#

like

#

if steel card

#

is activated or not

#

when in hand

#

or played

maiden phoenix
#

Check how Mime does it I think?

#

Not sure if SMODS has smt for that

placid star
#

i think mime just adds repetitions if cardarea is G.hand

placid star
# wild berry if their special thing is triggered

i think i understand what you mean..? you could check by hard coding each enhancement.. e.g.: if context.cardarea == G.play and context.individual and context.other_card:has_enhancement('m_glass') then

wild berry
#

alright got it

#

thank you

#

now how do i get to triggering the card

placid star
#

as in steel cards give Xmult when played?

wild berry
#

yes

placid star
#
  return {
  Xmult = 1.5
}
end```
wild berry
#

oh

#

i thought there was a way to like

#

trigger the card itself so

#

i dont have to hardcode it all

placid star
#

no matter how i think about it youll have to hardcode it i think

wild berry
#

ok

#

thanks again

placid star
#

np!!

#

sadly unless you change how the play evaluation works you need to hard code everything

#

and even then i dont have the brain power rn to think abt how to do that stably

wild berry
# placid star sadly unless you change how the play evaluation works you need to hard code ever...

something like this?

        local playtriggers = {"m_gold", "m_steel"}
        local handfunction = {}
        local playfunction = {"m_gold" = {dollars = 3}, "m_steel" = {xmult = 1.5}}
        if context.individual then
            local cantrigger = false
            local str = ""
            for _, x in pairs(playtriggers) do
                if SMODS.has_enhancement(context.other_card, x) then
                    cantrigger = true
                    str = x
                    break
                end
            end
            if cantrigger then
                return {unpack(playfunction[str])}
            end
        elseif context.final_scoring_step and context.cardarea == G.hand then
            local cantrigger = false
            local str = ""
            for _, x in pairs(handtriggers) do
                if SMODS.has_enhancement(context.other_card, x) then
                    cantrigger = true
                    str = x
                    break
                end
            end
            if cantrigger then
                return {unpack(handfunction[str])}
            end
        end```
#

sorry for the horrible formatting, discord just does that when pasting code

placid star
#

when do you want the values like the xmult to be triggered

wild berry
#

well, since steel triggers when in hand i want it to trigger when played

placid star
#

in card.ability

wild berry
#

so card.ability.h_x_mult?

#

and how did you bring up that menu

placid star
#

do you have debug plus installed?

#

press / then do eval G.hand.cards[index of card, e.g. 5 for 5th card in hand].ability

wild berry
#

i dont

placid star
#

install it

wild berry
#

alright got it

#

its because i was modding with just lovely and steamodded

#

no plugins

#

no nothing

placid star
#

yah it just makes debugging alot easier

wild berry
#

how come this crashes the game

#

i see nothing wrong

#

is it because im nesting a table inside a table

wild berry
#

nvm i fixed it but

#

it doesnt seem to work

#

new calculate code

            ["m_bonus"] = {
                ["chips"] = 30
            },
            ["m_mult"] = {
                ["mult"] = 4
            },
            ["m_stone"] = {
                ["chips"] = 30
            },
            ["m_glass"] = {
                ["xmult"] = 2
            },
        }
        local playfunction = {
            ["m_steel"] = {
                ["xmult"] = 1.5
            }
        }
        if context.individual then
            local cantrigger = false
            local str = ""
            for z, x in pairs(playfunction) do
                if SMODS.has_enhancement(context.other_card, z) then
                    cantrigger = true
                    str = z
                    break
                end
            end
            if cantrigger then
                return {unpack(playfunction[str])}
            end
        elseif context.final_scoring_step and context.cardarea == G.hand then
            local cantrigger = false
            local str = ""
            for z, x in pairs(handfunction) do
                if SMODS.has_enhancement(context.other_card, z) then
                    cantrigger = true
                    str = z
                    break
                end
            end
            if cantrigger then
                return {unpack(handfunction[str])}
            end
        end
    end,```
#

the joker doesnt seem to trigger even once

molten relic
#
        if context.individual and context.cardarea == G.play then
            if context.other_card:is_suit(card.ability.extra.suit) then
                    card.ability.extra.spade = true
            end
        end
        if context.joker_main then
            if card.ability.extra.spade == true then
                card.ability.extra.spade = false
                return {
                    xmult = card.ability.extra.xmult
                }
            end
        end
    end
}```
#

this sgit

#

whats wrong

wild berry
#

wait nvm im dumb

#

but

#

yeah nothing im just dumb

#

i looked at the code wrong

molten relic
#

i think i got it

#

what is game_object.lua?

#

okay i fixed it

#

but the joker doesnt work

#

im going to implode

maiden phoenix
#

show code and explain what its supposed to do

molten relic
#

no i changed it

maiden phoenix
#

Show the change please

molten relic
#
        if context.joker_main then
           for _, playing_card in ipairs(context.scoring_hand) do
                if playing_card:is_suit(card.ability.extra.suit) then
                    return {
                        xmult = card.ability.extra.xmult
                    }
                end
            end
        end
    end
}```
maiden phoenix
#

And it doesn't trigger the xmult?

molten relic
#

nope

maiden phoenix
#

Can you show your config table too?

molten relic
#

ill paste the entire code

#
    name = 'Wooden Spoon',
    key = 'j_bali_spoon',
    config = {
        extra = {
            xmult = 2,
            spade = false,
            suit = Spades
        }
    },
    loc_txt = {
        ['name'] = "Wooden Spoon",
        ['text'] = {
            "{X:red,C:white}X#1#{}{C:red} Mult{} if hand includes",
            "a {C:Spades}Spade{} card"
        }
    },
    pos = {
        x = 2,
        y = 0
    },
    cost = 5,
    rarity = 2,
    blueprint_compat = true,
    eternal_compat = true,
    unlocked = true,
    discovered = false,
    atlas = 'CustomJokers2',

    loc_vars = function(self, info_queue, card)
        return {
            vars = { card.ability.extra.xmult, card.ability.extra.suit }
        }
    end,
    calculate = function(self, card, context)
        if context.joker_main then
           for _, playing_card in ipairs(context.scoring_hand) do
                if playing_card:is_suit(card.ability.extra.suit) then
                    return {
                        xmult = card.ability.extra.xmult
                    }
                end
            end
        end
    end
}```
#

wall of text jumpscare

maiden phoenix
#

the Spades in config.extra should be in quotation marks btw but you don't use it it seems

molten relic
#

i do 😭

#

if playing_card:is_suit(card.ability.extra.suit) then

#

it works

#

because i forgot 2 fucking quotation marks

maiden phoenix
#

Oh thats weird I copy pasted the code to test it myself and it worked fine

molten relic
maiden phoenix
#

I did add em after pointing it out

molten relic
#

now i can FINALLY continue coding

wild berry
#
-- variables
config = { extra = {handfunction = {
        ["m_bonus"] = {
            ["chips"] = 30
        },
        ["m_mult"] = {
            ["mult"] = 4
        },
        ["m_stone"] = {
            ["chips"] = 30
        },
        ["m_glass"] = {
            ["xmult"] = 2
        },
    }
    playfunction = {
        ["m_steel"] = {
            ["xmult"] = 1.5
        }
    }} },
-- actual code
calculate = function (self, card, context)

        if context.individual then
            local cantrigger = false
            local str = ""
            for z, x in pairs(card.ability.extra.playfunction) do
                if SMODS.has_enhancement(context.other_card, z) then
                    cantrigger = true
                    str = z
                    break
                end
            end
            if cantrigger then
                return {unpack(card.ability.extra.playfunction[str])}
            end
        elseif context.final_scoring_step and context.cardarea == G.hand then
            local cantrigger = false
            local str = ""
            for z, x in pairs(card.ability.extra.handfunction) do
                if SMODS.has_enhancement(context.other_card, z) then
                    cantrigger = true
                    str = z
                    break
                end
            end
            if cantrigger then
                return {unpack(card.ability.extra.handfunction[str])}
            end
        end
    end,```
#

joker wont work

simple helm
#

how do i check if you have a joker from an specific pool?

red flower
simple helm
#

how do i do that?

red flower
spice wadi
distant junco
limber skiff
#

@red flower ive tried using SMODS.load_file but I cant seem to get it to work, is this how you use it or am I doing it wrong, I couldnt find it on the wiki

SMODS.load_file("Jokers/whatsappjokers.lua", "Commence_Trolling")

red flower
limber skiff
manic rune
#

🤔

#

just a theory though, whats the code that copies your joker

placid star
#

im just using ctrl+c or ankh (so copy_card) to test it

red flower
#

where are you saving the cardarea

placid star
#

inside ability.extra

red flower
#

that's the problem

#

dont store objects in the ability table

#

use G

placid star
#

what do i call the table in that case to account for multiple copies of my joker?

red flower
#

you can give each a unique id in the name

#

never done something like this so there might be a better solution

#

there are some mods that do this

wintry solar
#

Is the card area something to appear in the tooltip?

placid star
#

its to store jokers

#

not calculate them ill find that out later

placid star
# red flower use `G`

could i store them all within a sub table? e.g. G.mycardareas[cardarea1] .. G.mycardareas[cardarea2]

red flower
#

i dont think the game will save them properly if you do that

slim ferry
#

youre trying to store cards inside a joker?

placid star
#

mhm

slim ferry
#

cryptid has a joker that does that too, you could try looking at that

placid star
red flower
#

no it probably can it's just that it's programmed to only store cardareas directly in G

#

i dont remember where in the code rn

placid star
#

or instead of storing it in G.whatever[] could i do G[prefix_cardarea1]?

red flower
#

yeah

long sun
#

hiya! i'm using an extra in my Joker's pos, but doing so seems to only show that extra, not the base pos.

#

(pos = { x = 0, y = 0, extra = { x = 9, y = 0 } },)

#

why is this happening? ^^;

placid star
#

why do you have two pos tables...

long sun
#

for the sakes of animation

#

i'm able to animate both the base pos and extra pos, which is what i'm doing

#

oh and nevermind ^^;

#

i found an issue with my animation code, so uhm

#

ignore sdjfkngkjdfngdkf

#

ah ya i see, Aura implemented extras itself

#

lemme do this my own way then ^^;

distant junco
#

what duh hell it looks fine to me

#

some help me i might be missing something??

lament agate
#
        if context.joker_main then
            local suits_in_hand = {}
            for _, card in ipairs(context.scoring_hand) do
                if not card.debuff then
                    suits_in_hand[card:is_suit()] = true
                end
            end
            if suits_in_hand['Spades'] and
                suits_in_hand['Hearts'] and
                suits_in_hand['Clubs'] and
                suits_in_hand['Diamonds'] then
                if card.ability.extra.xmult_gain then
                    card.ability.extra.xmult = card.ability.extra.xmult + card.ability.extra.xmult_gain
                end
                card:juice_up(card.ability.extra.juice_power, card.ability.extra.juice_power)
                play_sound('chips1', math.random() * 0.1 + 0.8)
                return {
                    xmult = card.ability.extra.xmult,
                    message = localize('k_xmult_x', 'xmult'),
                    colour = G.C.MULT,
                    card = card
                }
            end
        end
#

does nothing somehow

#

any ideas?

long sun
manic rune
long sun
slim ferry
#

you shouldnt

long sun
#

so is_suit("Hearts") returns true only if the card is Hearts, or Wild or otherwise

manic rune
#

:is_suit() return a bool value when the card has the given suit, if you want to grab the card's suit, you need to check card.base.suit

lament agate
#

oh

#

oh shit my bad

distant junco
#

that makes sense

lament agate
#

i need to increment it right

manic rune
#

he misunderstood it though sob

lament agate
#

shut up

#

how's my code looking like:

formal parrot
long sun
#

where is my ball?

lament agate
#

ghh

distant junco
lament agate
#

and close the code again

long sun
#

```lua

your code

```

#

you can do that with other languages too

#

like C#, Java, HTML, JS, CSS, Python, ...

lament agate
#
if context.std_haver then
  return {
    hiv = true
  ]
end
distant junco
#
SMODS.Joker{
    key = "greg",
    loc_txt = {
        name = "Greg",
        text = {
            '{C:red}+2{} Mult[s]{C:green}#1# in 5{} chance of {X:red,C:white}x2{} Mult',
        }
    },
    blueprint_compat = true,
    rarity = 1,
    cost = 5,
    discovered = true,
    atlas = 'Jammbo',
    pos = { x = 2, y = 0 },

    config = { extra = { flat_mult = 2, xmult_chance = 0.2, xmult_value = 2 } },

    loc_vars = function(self, info_queue, card)
        local numerator, denominator = SMODS.get_probability_vars(card, 1, card.ability.extra.odds, "greg")
        return { vars = { numerator, denominator, card.ability.extra.xmult_value } }
    end,

    calculate = function(self, card, context)
        if context.joker_main then
            if SMODS.pseudorandom_probability(card, "greg", 1, card.ability.extra.odds) then
                return {
                    mult = card.ability.extra.flat_mult,
                    xmult = card.ability.extra.xmult_value,
                }
            else
                mult = card.ability.extra.flat_mult
            end
        end
    end
}

what have i done wrong now

slim ferry
#

your denominator isnt real

long sun
#

numerator and denominator are locals

#

they should be in your ability.extra

#

or you can recalculate them

slim ferry
#

also card.ability.extra.odds doesnt exist

#

idk what youre doing with that

placid star
#

@red flower so i get this crash on quiting to menu with my card area (stored as G.kenjkau-#SMODS.find_card-)

distant junco
placid star
#

for ref that function is the calculate card areas

distant junco
#
SMODS.Joker{
    key = "greg",
    loc_txt = {
        name = "Greg",
        text = {
            '{C:red}+2{} Mult',
            '{C:green}#1# in 5{} chance of {X:red,C:white}x2{} Mult',
        }
    },
    blueprint_compat = true,
    rarity = 1,
    cost = 5,
    discovered = true,
    atlas = 'Jammbo',
    pos = { x = 2, y = 0 },

    config = { extra = { flat_mult = 2, odds = 5, xmult_value = 2 } },

    loc_vars = function(self, info_queue, card)
        local numerator, denominator = SMODS.get_probability_vars(card, 1, card.ability.extra.odds, "greg")
        return { vars = { numerator, denominator, card.ability.extra.xmult_value } }
    end,

    calculate = function(self, card, context)
        if context.joker_main then
            if SMODS.pseudorandom_probability(card, "greg", 1, card.ability.extra.odds) then
                return {
                    mult = card.ability.extra.flat_mult,
                    xmult = card.ability.extra.xmult_value,
                }
            else
                mult = card.ability.extra.flat_mult
            end
        end
    end
}

ok new code but now instead of crashing it just does nothing

slim ferry
#

you didnt return the card.ability.extra.flat_mult

distant junco
#

yeah i did

#

thanks for your help!

#

i wish there was better documentation haha but i understand its difficult to put together

slim ferry
#

are you looking at the smods wiki

distant junco
#

yes

slim ferry
#

oh okay

distant junco
#

a lot of it is "to be completed"

lament agate
#

whats wrong

slim ferry
long sun
lament agate
distant junco
#

as in, i might be

slim ferry
lament agate
#

to card.base.suit

faint yacht
#

...why are you trying to card.base.suit() as if it is a function?

lament agate
#

fuck

#

you're right

red flower
placid star
red flower
#

its probably none of those

#

i solved it by hooking smods.calculate_context and preventing it from triggering when the game is ending

#

but i removed that because it hasn't happened in a while

lament agate
#

how do you change

#

ranks using dplus again

formal parrot
#

And read

lament agate
#

thanks heaven

gaunt thistle
#

it's hard but I think we all can do it

lament agate
#

we've been there before

gaunt thistle
#

i can't get ma pants off

red flower
#

i have never changed clothes

lament agate
#

damn you guys stinks

#

no wonder this chatroom reeks

maiden phoenix
#

Too busy coding

gaunt thistle
#

imagine smelling so bad you need to shower, ew

#

considering not smelling basd

maiden phoenix
#

Just hold your sweat in smh

formal parrot
#

This is a very accurate dev chat

maiden phoenix
#

Went ahead and added each effect and minion

#

Now to code em

placid star
red flower
placid star
red flower
#
-- dont trust that this is 100% correct because i didnt check
local calc_context_ref = SMODS.calculate_context
function SMODS.calculate_context(...)
    if G.in_delete_run then return end
    return calc_context_ref(...)
end
placid star
#

big ty that worked ive had this issue for so long

placid star
#

@red flower

use = {n=G.UIT.C, config={align = "cr"}, nodes={
      {n=G.UIT.C, config={ref_table = card, align = "cr",padding = 0.1, r=0.08, minw = 1.25, hover = true, shadow = true, colour = G.C.UI.BACKGROUND_INACTIVE, one_press = true, button = 'jjok_kenny_use', func = 'jjok_kenny_can'}, nodes={
        {n=G.UIT.B, config = {w=0.1,h=0.6}},
        {n=G.UIT.C, config={align = "tm"}, nodes={
          {n=G.UIT.R, config={align = "cm", maxw = 1.25}, nodes={ {n=G.UIT.T, config={text = 'BODY',colour = G.C.UI.TEXT_LIGHT, scale = 0.4, shadow = true}}}},
          {n=G.UIT.R, config={align = "cm", maxw = 1.25}, nodes={ {n=G.UIT.T, config={text = 'HOP',colour = G.C.UI.TEXT_LIGHT, scale = 0.4, shadow = true}}}}
          }
        }
      }}
    }}
end```
so this is my code for a joker with a use button, the ref table is `card` yet when i try to access `card.ability` in my functions it crashes, im assuming card here is reffering to the buttons instead but i cant find a solution
red flower
#

the card is arg.config.ref_table

#

where arg is the argument of the function

placid star
#

so do arg.config.ref_table.ability.extra?

quick scarab
#

Any ways to summon a random consumable with the exception of one type? (ex: Spawn Tarot or Planets ards but will not spawn a Spectral)

vestal magnet
#

nvm it didn't work

placid star
red flower
placid star
quick scarab
#

thank you

vestal magnet
#

yay

quick scarab
modern kindle
#

Hello chat

gaunt thistle
#

hi dilly!

modern kindle
novel yarrow
#

If I use G.GAME.round_resets.hands in context.end_of_round I'll get the amount of hands at the end of the round, right?

manic rune
#

reminders to never set card limit of cardareas to 1

#

it fucks up the aligning somehow

#

-# im lazy to figure out why

modern kindle
#

Ill set it to 0 then

manic rune
#

sob

limber skiff
#

Could anyone tell me what I'm doing wrong, it doesn't want to show the actual mult here
local joker = SMODS.Joker({ name = "Whatsapp Car", key = "whatsapp_car", slug = "whatsapp_car", config = { extra = { baseMultiplier = 1 } }, atlas = "whatsappcar", loc_txt = { name = "Whatsapp Car", text = { "For every {C:green}Whatsapp{} Joker,", "you will gain {X:mult,C:white}X#mult#{} applied to {C:red}ALL{} of them." }, vars = {"mult"} }, rarity = 3, cost = 6, unlocked = true, discovered = true, blueprint_compat = true, eternal_compat = true })

lucid owl
#

i ask this just in case, was chatgpt used to create this

limber skiff
#

i used copilot to help with the description because i was constantly not getting it right

novel yarrow
#

I hate copilot soooo much

manic rune
# limber skiff Could anyone tell me what I'm doing wrong, it doesn't want to show the actual mu...
SMODS.Joker({
    key = "whatsapp_car",
    config = {
        extra = {
            baseMultiplier = 1
        }
    },
    atlas = "whatsappcar",
    loc_txt = {
        name = "Whatsapp Car",
        text = {
            "For every {C:green}Whatsapp{} Joker,",
            "you will gain {X:mult,C:white}X#1#{} applied to {C:red}ALL{} of them."
        },
    },
    loc_vars = function(self, info_queue, card)
      return{vars = {card.ability.extra.baseMultiplier}}
    end,
    rarity = 3,
    cost = 6,
    unlocked = true,
    discovered = true,
    blueprint_compat = true,
    eternal_compat = true
})
#

i hope i didnt forget anything

limber skiff
#

would you mind explaining what was wrong

#

if possible

manic rune
#

sure, basicallyyy

#

between ## it has to be a number corresponding to the order of the variable thats gonna be returned in loc_vars

#

so #1# is pointing to card.ability.extra.baseMultiplier, as you can see in loc_vars

hidden sable
#

oh yeah i got confused on that when i started modding too lol

manic rune
#

-# i hope thats clear??? idk im bad at this 😭

#

yeah most of us got confused at this when we started me think :3

hidden sable
#

basically it's just in order of whatever you return in loc vars

modern kindle
#

Imagine being bepis and thinking you're bad at anything

hidden sable
#

{ 13, 14, 15 } in loc vars

#

will make #1# into 13, #2# into 14, and so on

#

it's all in order

#

gets really confusing when you have to say #2# in #3# chance

distant junco
#

how do i make a joker destroy itself? i cant find it in the documentation

novel yarrow
#

Is there a way to know how many hands were used in a round?

hidden sable
#

docs don't tell you stuff like that

hidden sable
distant junco
hidden sable
#

check the house

hidden sable
distant junco
#

is that the key

novel yarrow
#

It still gives you the amount you get at blind select

hidden sable
#

or at least

#

save the value

#

then check it later

novel yarrow
#

I did

#

It's commented out rn

hidden sable
#

like in some functions inside jokers it passes card

#

that would be the current joker card

#

i think

distant junco
#

ill try that

novel yarrow
manic rune
hidden sable
#

do i know the variable on the top of my head

#

hell nah

novel yarrow
#

Oh no worries, found it on the house

#

Thank ya

hidden sable
#

nice

novel yarrow
#

that makes my life way easier

manic rune
#

G.GAME.round_resets.hands - G.GAME.current_round.hands_left

#

oh theres hands_played

novel yarrow
#

I was doing exact that but in a more hacky way

#

I'm making a joker that gives you money if you beat the round using only one hand

hidden sable
manic rune
#

yeah i forgot that existed somehow

#

ui brainrot :3

#

terribly sorry

hidden sable
#

i was saying that earlier chat

#

😭

hidden sable
distant junco
#

ok this is probably a silly question but how do i do a message like gros michels extinct

#

i tried this, like in Vanilla Remade and that did not work

slim ferry
#

you have to actually add that message in a localization file

#

to use localize at least

distant junco
#

ohh

slim ferry
#

you can also just put a raw string

#

if you dont care to ever translate it

distant junco
#

i may do in the future but i doubt it

slim ferry
#

pretty sure any of those messages go into dictionary in misc in a localization file if i remember correctly

distant junco
#

thank you eris you have been very helpful today haha

#

it didnt work

slim ferry
#

how does your localization files look?

distant junco
#

i just did the string, for now

manic rune
distant junco
#

this is the code. I know its running because the maths is working fine

slim ferry
#

you have to

#

put the message in a return table

distant junco
#

ah ok

manic rune
#

if you dont want to return, use SMODS.calculate_effect({message = "Rotting!"}, card)

slim ferry
distant junco
#

will do

#

right i shall try again

#

it worked!!

#

awesome

limber skiff
winter flower
#

i don't think i'm doing this right
the LOADING flickers from end to splash prep

faint leaf
#

im trying to make a joker that only activates when a few other jokers are alongside it.. how would i go about doing that?

like lets say ive got a custom joker oops12 and i only want it to score if it also has an oops in a joker slot as well?

placid star
velvet bridge
#

Hey folks, brand new to the discord, I'm interested in reading through the codebase. Does anyone have a github link to share or a resources page?

placid star
velvet bridge
#

Thanks 🙂

velvet bridge
#

Sweet!

floral spindle
#
    loc_vars = function(self, info_queue, card)
        return {vars = { card.ability.extra.xmult, card.ability.extra.xmultincrease, card.ability.extra.blindsize }}
    end,```
#

only the first var is read and the other two are read as nil

placid star
#

dont do extra = {xmult = } just do extra = {xmult = 1.5, xmultinc...}

floral spindle
#

how do I get the current amount of chips scored of the current round

ocean sinew
#

found is defined as a local inside the for loop

placid star
#

well of course it is??? its a placholder

ocean sinew
#

and you're not using break so you just define it over and over again as found

placid star
#

i was too lazy to declare it outside the for loop

floral spindle
placid star
faint leaf
#

what am i doing wrong here? the jokers show up in game, but they dont give the crazy mult when theyre all together

sonic cedar
#

if i wanted to call in_pool in a function, would it be calculate_joker or something im not thinking of?

sonic cedar
manic rune
sonic cedar
# red flower wdym

like you know how objects use in_pool
if i wanted to handle a group of jokers instead of having to do each one individually
trying to hook in so i can just go "if joker is in this group, dont put it in the pool"

manic rune
#

have u guys seen the new credit page i made for nxkoo :3

sonic cedar
manic rune
#

i did fix the aligning later btw

#

turned out cardareas with card limit 1 got some weird alignment like that

sonic cedar
# manic rune

that.... that's exactly what i was envisioning for mine.... i didnt think it was possible

#

how the hell

primal robin
#

A lot of things possible

manic rune
#

true

primal robin
#

Scrollbar in question tho

manic rune
#

TRUE

sonic cedar
#

can you hover over them and it says what they did?

manic rune
#

have u finished it yet btw :3

manic rune
primal robin
#

Rn i'm more worried about how to deal with 98%

manic rune
#

im gonna work on a really cool ui tomorrow, yall wait :3

primal robin
#

Like, make much simplier config page for dummies

sonic cedar
manic rune
#

check tangents' code if u want to take inspiration from the credits menu
-# god spare your soul, the file names made me question why i mod

manic rune
sonic cedar
manic rune
#

if you want them to be even MORE simpler to understand then you could add live demonstration like my mod's introduction page

primal robin
#

But oh well

manic rune
#

😭

#

but tbf handy got the biggest config page in the entire modding scene i think

foggy ginkgo
manic rune
#

it actually looks like something you would see out of an AAA game
-# opinion from someone who have NEVER played an AAA game before btw

sonic cedar
primal robin
#

So big so I implemented search

manic rune
#

How

#

QUANTUM ENHANCEMENTS CANT BE THAT HARD 😭

primal robin
#

But maybe because it's in last tab people can't find it

sonic cedar
foggy ginkgo
#

I don't know bruh

primal robin
#

I geniuely no idea

manic rune
#

show me the dang code bruc 🥀

red flower
manic rune
#

you messin with the fabric of the universe there or smt

foggy ginkgo
#

This is literally the code 🥀

manic rune
#

so when they r flashbanged with text they got confused immediately :3

sonic cedar
primal robin
#

That's a problem for me. So I want to implement short version of config which you can toggle

manic rune
wintry solar
vast bough
#

ingore that

sonic cedar
#

bro forgot the context

manic rune
#

gotta take into consideration thats mac os too

#

weird shi always happens on mac istg

foggy ginkgo
#

Idk what it is but it's something in there

manic rune
#

do you have any other mods installed

foggy ginkgo
#

I do

manic rune
#

i dont think, its supposed to do anything similar to that

red flower
foggy ginkgo
#

But I recall turning off all my mods so

manic rune
#

weird

#

is this latest smods

foggy ginkgo
#

Hold up I think I figured it out

vast bough
#

hello, modding dev, why is this spawning the default joker instead of jokers from the desired rarities

 SMODS.add_card({ set = 'Joker', rarity = 'cosmicjo_arcane' })

i have got my rarities defined here and there are jokers with rarities in game that it can pull from

SMODS.Rarity {
    key = "imperial",
    pools = {
        ["Joker"] = true
    },
    default_weight = 0,
    badge_colour = HEX('ff001e'),
    loc_txt = {
        name = "Imperial"
    },
    get_weight = function(self, weight, object_type)
        return weight
    end,
}

SMODS.Rarity {
    key = "doom",
    pools = {
        ["Joker"] = true
    },
    default_weight = 0,
    badge_colour = HEX('252020'),
    loc_txt = {
        name = "Doom"
    },
    get_weight = function(self, weight, object_type)
        return weight
    end,
}

SMODS.Rarity {
    key = "arcane",
    pools = {
        ["Joker"] = true
    },
    default_weight = 0,
    badge_colour = HEX('2c90ed'),
    loc_txt = {
        name = "Arcane"
    },
    get_weight = function(self, weight, object_type)
        return weight
    end,
}

it just spawns jimbo, which i know is the default but like why, my modprefix is correct and everything im going a bit crazy tryna solve this code generation bug (its for jokerforge)

foggy ginkgo
#

Lmao yeah I found it

#

This is the problem

sonic cedar
foggy ginkgo
#

This is what I get for stealing code

manic rune
vast bough
red flower
foggy ginkgo
#

When I deleted it, it starts to work and not fly everywhere

vast bough
#

which is strange

sonic cedar
#

when's it coming

manic rune
vast bough
# manic rune is rarity in jokers `"cosmicjo_arcane"`?

yes

SMODS.Joker{ --Lady of the Stars
    name = "Lady of the Stars",
    key = "ladyofthestars",
    config = {
        extra = {
            slot_change = 3,
            strushplayed = 0,
            hands = 2,
            Planet = 0,
            c_neptune = 0
        }
    },
    loc_txt = {
        ['name'] = 'Lady of the Stars',
        ['text'] = {
            [1] = 'Grants effects for using {C:gold}Tarot{} Cards',
            [2] = '{C:blue}The Magician{} - Spawns a {C:planet}Neptune{} Card',
            [3] = '{C:diamonds}The Star{} - Adds an additional {C:money}$5{} every',
            [4] = 'time a {C:attention}Straight Flush{} is played',
            [5] = '{C:clubs}The Moon{} - Adds {C:attention}2{} {C:blue}Hands{} for the round',
            [6] = '(Currently {X:money,C:white}$#1#{})'
        }
    },
    pos = {
        x = 7,
        y = 0
    },
    cost = 20,
    rarity = "cosmicjo_arcane",
    blueprint_compat = true,
    eternal_compat = true,
    unlocked = true,
    discovered = true,
    atlas = 'CustomJokers',
sonic cedar
#

oh wait this is a PR

manic rune
vast bough
#

for the life of me i cant figure out why its not working lol

manic rune
#

i wish i could check how SMODS.add_card work but im on bed rn

#

sob

modern kindle
#

N is so beautiful

vast bough
manic rune
#

i actually planned on, checking its code

red flower
vast bough
#

the annoying thing is, sometimes it works perfectly and sometimes it doesnt

manic rune
#

but i think SMODS.add_card should be documented in the utility functions (or smt) tab of smods documentation

manic rune
#

N' can u pr me a stable release of bsr...

vast bough
red flower
#

yes

faint leaf
#

this code ive got doesnt seem to give the xmult when i have all 5 jokers owned... i know its probably a problem with that little middle part but i have no idea how to fix it.. please help!

red flower
manic rune
normal crest
vast bough
#

unless im being silly

#

wait lemme test something

red flower
faint leaf
#

theres 889

manic rune
#

yeah the key is j.config.center.key

#

not j.center.key

red flower
#

(i think)

faint leaf
manic rune
#

it should

vast bough
normal crest
twilit star
#

Balatro

vast bough
#

even simplifying the issue to one rarity still creates jimbos what is this

manic rune
#

but also, i dont think you even need that loop to check for if you have all the five jokers actually

faint leaf
# manic rune it should

unfortunate..yyyyy...... its not applying the xmult.. and im a billion percent sure i have the other jokers in my code correectly...

manic rune
#

just smt like

for _,key in ipairs(required_parts) do
   if not next(SMODS.find_card(key)) then return end
end

should work me think

red flower
manic rune
faint leaf
#

okay so just j_kaliimoddy_exodiahead

manic rune
#

so it should be j_kaliimoddy_exodiahead

#

yeah

faint leaf
#

awesome it works

#

thank you !!!

red flower
#

joyous

primal robin
#

IMPOSSIBLEEEEE...EE..E....>E..E>.

manic rune
#

no useless cards in deck truly

ocean sinew
#

In which line is the balatro hand scoring evaluated?

red flower
#

like the final chips * mult?

ocean sinew
#

and where chips are added to G.GAME.blind.chips

red flower
#

It's in G.FUNCS.evaluate_play after the Joker Debuff Effects comment

ocean sinew
#

thanks

vast bough
ocean sinew
#

btw do u know in which lua file is G.FUNCS.evaluate_play

normal crest
#

state_events.lua

ocean sinew
#

thanks

red flower
modern kindle
#

when will you read alot of me

red flower
#

now

modern kindle
vast bough
#

bro i am dying what is this tomfoolery

red flower
#

SMODS.add_card({ set = 'Joker', rarity = 'modprefix_testytest_royalty' })

#

you forgot the prefix

#

in the joker too

#

oh wait i misread

vast bough
#

the mod prefix is testytest yeah

red flower
#

hmm im going to test it myself

vast bough
#

yeah this is nutty

rotund sable
#

also while i still remember goodmorning we have to update the version of steamodded in the dependencies to the newest

#

shit wrong channel

vast bough
#

lmao

red flower
#

oh yeah it just doesnt work

#

it gets added to the pools properly

chrome widget
#

Someone please..... I need UI help please.......

vast bough
#

is this an smods issue then

red flower
#

oh no i lied

#

it works

vast bough
#

nooooo

red flower
#

i forgot my create_card shenanigans

red flower
#

if its the thing in the smods server i didnt understand it :3

chrome widget
#

FUCK

vast bough
modern kindle
#

im sorry winter i dont comprehend ui at all or i would love to help you

chrome widget
#

I just don't know how to normally get localization information outside of select contexts 😭 I don't know what I'm doing differently from instances in generate_ui

floral spindle
red flower
floral spindle
red flower
#

also whats line 202

floral spindle
red flower
#

you forgot an extra

#

card.ability.extra.xmult

floral spindle
#

man

vast bough
# red flower no it works with add_card

i did a clear wipe of my mods folder to just have smods, lovely, and the mod im testing only to realise i couldnt spawn anything in because i didnt have debug plus lmao

chrome widget
# red flower what's the problem exactly? can you re-explain it?

So basically, I need to get UI nodes from this localization entry to put them in this new "story" tab I added for challenges. So I have this entry stored under G.localization.Descriptions.Other

Typically, calling the localize function with type = 'descriptions' and set = 'Other' should make the localization function append the nodes to whatever table you pass in, in basically the same way descriptions are assembled for the card hoverboxea

plucky zenith
#

I'm back trying to get this one working again. I switched to context.starting_shop as SDM_0 suggested, but how can I make it handle one pack at a time if more than one pack is generate?

Right now it seems to work with a single pack but if two are generated then the sort of overlap on the screen, cards from multiple packs are shown all at once, and then once you choose a card all the display goes away but it still thinks you need to choose another card for the other pack.

red flower
#

else you would need to do stuff to detect when the last booster has been closed which will just be you recreating tags lol

chrome widget
# chrome widget So basically, I need to get UI nodes from this localization entry to put them in...

However, for whatever reason, doing this results in an error. It says some UI node doesn't have a valid colour in its config when it goes to draw, and the stack trace doesn't help because the draw function is called from the update behavior (so it's being created successfully without error, then the update grabs it, tries to draw it, and encounters whatever failed initialization)

localize{type = 'other', key = 'ch_st_'..story_id, nodes = story_text}
local story_node = {n=G.UIT.C, config={align = "cm", minw = 3, r = 0.1, colour = G.C.BLUE}, nodes={
    {n=G.UIT.R, config={align = "cm", padding = 0.08, minh = 0.6}, nodes={
        {n=G.UIT.T, config={text = localize('k_challenge_story'), scale = 0.4, colour = G.C.UI.TEXT_LIGHT, shadow = true}},
    }},
    {n=G.UIT.R, config={align = "cm", minh = 4.1, minw = 3, maxw = 3, padding = 0.05, r = 0.1, colour = G.C.WHITE}, nodes = story_text}
}}```
chrome widget
#

Maybe! But I don't see how what I'm doing is using it any differently than correct examples given?

#

The returned nodes should be just a list of row UI tables

winter flower
chrome widget
#

Setting the passed in story_text to an empty table results in it working correctly, so the outer nodes aren't the issue

vast bough
floral spindle
red flower
winter flower
vast bough
#

modding-dev the second 1 frame of minecraft is shown on screen

winter flower
#

why does the loading screen get stuck on "splash prep" and "end"

red flower
winter flower
#

oh

red flower
#

you need to hook into it, probably

chrome widget
red flower
#

i honestly dont remember :3

chrome widget
#

Wegh

sonic cedar
#

how can i make him start doing calc_dollar_bonus? cause while i did this with golden, i cant do that with a dynamic value like satellite or cloud 9

chrome widget
#

Hate, it's so hard to debugggg

sonic cedar
red flower
#

sounds hard

sonic cedar
#

ill do some tinkering i guess

dusky geyser
#

this joker is supposed to increment for each card destroyed, but instead increments for each destruction event (ie an immolate only gets it 10 chips instead of 50). how can i fix this?

red flower
chrome widget
#

Dunno, will have to try when I get home (at the deli for a yumby sandwidch)

red flower
#

im hungry i could go for a sandwich..

chrome widget
#

Get urself a sandwich

winter flower
#

i'm still so lost on hooks holy

red flower
dusky geyser
#

ah, thank you!

red flower
#

i will try to have a clear explanation on hooks in the vremade wiki soon

sonic cedar
split saddle
#

hey guys i'm back yay
finally got a new laptop and as such i'm back with more questions :D

i've seen some people do an "all boss blinds" challenge but they never provide a download link (probably because they made it themselves). so now i'm left wondering on how to do it myself?

#

as in, how to modify the small and big blind so that they're always boss blinds

red flower
sonic cedar
#

im 0 for 3 with these pushes istg

clear ocean
#

rate this joker idea

sonic cedar
#

prob calc, then in_pool, now blind changing

sonic cedar
clear ocean
#

i can look at the code for oops all sixes and lucky cat but not sure how to know if a wheel of fortune is triggered

red flower
#

thats really easy now

clear ocean
#

it's a context for that and if it's something['Wheel of Fortune']?

red flower
#

if context.pseudorandom_result and context.result and context.identifier == "wheel_of_fortune" then

clear ocean
#

thanks

#

okay this one should be in the bag then

red flower
#

it also works with lucky cards

sonic cedar
clear ocean
sonic cedar
#

wait that's right its being tracked

red flower
#

for lucky cards the identifier is either lucky_mult and lucky_money

clear ocean
#

context.identifier == "wheel_of_fortune" or "lucky_mult" or "lucky_money"?

red flower
#

the idea is there but thats not how lua works sadly

#

context.identifier == "wheel_of_fortune" or context.identifier == "lucky_mult" or context.identifier == "lucky_money"

split saddle
clear ocean
#

i need to catch up on my lua game then 😤

clear ocean
#

i have the programming in lua volume 4 book

red flower
clear ocean
#

wait you made that?

#

it's a good mod

red flower
#

yes

modern kindle
#

okay, i finally have my codebreaker pretty much how i want it

if any code tampering is detected before the boss blind of an ante it forces a blind, if tampering is detected during the boss blind it sets the next boss blinds ante

split saddle
#

??

modern kindle
#

delightful

red flower
clear ocean
#

the video doesn't show it because i'm testing it without any additional mods outside of debugplus

split saddle
red flower
split saddle
#

ok

modern kindle
#

anyway good luck smeele

austere schooner
#

the humble retcon

split saddle
#

But I assume that the important part is the for loop above, no?

red flower
#

that entire screenshot is jokerdisplay code

modern kindle
final jewel
#

Guys I don't understant why my code doesn't work. The part where using a consumable change the txt to active work but nothing else work

split saddle
clear ocean
split saddle
#

this is the one that i sent

red flower
red flower
modern kindle
split saddle
#

well, let's wait for eremel's thing then i guess

clear ocean
#

remembered that you make several text boxes

#

not sure if the currently chips should be in the first or second

#

what do you think

sonic cedar
#

god i wish somecom was here to help decipher his safe_set_ability code

modern kindle
#

he has been pretty quiet recently unless ive just been missing his active times

#

is he alright

placid star
#

can create_toggle() nodes have tooltips?

placid star
mental nacelle
#

does anyone here know if i can make a set of stakes "parallel" to the main set and have their descriptions show up properly?

sonic cedar
clear ocean
#

text = { { BOX 1 }, { BOX 2 } }

#

i'll have to work on the actual coding of the fortune cookie after work

#

fixed the writing as looking at the vanilla cards tarot cards have that too where it's the name followed by card

#

not sure if they are too long though but gotta get ready

sonic cedar
red flower
sonic cedar
#

got it

#

(ignore the obj i forgot to remove it)

modest dock
#

draw_card situation is crazy

sonic cedar
unborn bay
#

talisman ,,,,

sonic cedar
#

no wait its because the game is looking at ijiraq's table for extra

#

smh

#

why must i be plagued with complicated cards
why dont i just make +4 chips

modern kindle
#

alright after they were brought to my attention if codebreaker detects tampering it will debuff both chicot and luchador before you ever get to the blind and it wont be cleared until youve beaten it

chrome widget
sonic cedar
modern kindle
#

i was gonna just make it do on disable to the blind it just didnt work, but it didnt work how i wanted and i was too lazy to find a workaround so i just linked debuffing to my flags

chrome widget
#

Okay at the very least the stack trace there is actually direct since it occurs when the nodes are trying to set parent-child references

red flower
modern kindle
#

i doubt people are going to actually really try and cheat the codebreaker but, why not

red flower
#

if the first one works then you might need to append all nodes to that table?

chrome widget
#

wdym? they're already in a table yeah?

red flower
#

the structure might be looking like

{
  [1] = { { n = G.UIT.C ... } },
  [2] = { { n = G.UIT.C ... } },
}
#

this means that each node inside it is too nested

chrome widget
#

ough

red flower
#

i think doing desc_from_rows on each value solves it

#

that's what i have on one of my things

chrome widget
#
local parsed_text = {}
localize{type = 'other', key = 'ch_st_'..story_id, nodes = story_text}
for i, v in ipairs(story_text) do
    parsed_text[i] = v[1]
end

local story_node = {n=G.UIT.C, config={align = "cm", minw = 3, r = 0.1, colour = G.C.BLUE}, nodes={
    {n=G.UIT.R, config={align = "cm", padding = 0.08, minh = 0.6}, nodes={
        {n=G.UIT.T, config={text = localize('k_challenge_story'), scale = 0.4, colour = G.C.UI.TEXT_LIGHT, shadow = true}},
    }},
    {n=G.UIT.R, config={align = "cm", minh = 4.1, minw = 3, maxw = 3, padding = 0.05, r = 0.1, colour = G.C.WHITE}, nodes = parsed_text}
}}```

Okay well it doesn't *crash* but it does do this, organizing them into a single row
red flower
#

funny

chrome widget
#

oh wait right desc_from_rows()

red flower
#

yeah desc_from_rows(v)

chrome widget
#

crash

red flower
#

😭

sonic cedar
red flower
#

this is what i do for one of my config tabs

chrome widget
#

doing desc_from_rows(v[1]) does this tho

red flower
#

its trying

chrome widget
#

doing its damned best

split saddle
#

how do i know what planet is being used?

#

in context.using_consumeable

chrome widget
#

i'll try copying your example and see if it works

sonic cedar
chrome widget
#

err wait

red flower
#

-4

chrome widget
#

is the issue that I'm not passing in colours in the vars? I know you said it's usually caused by some nesting issue

red flower
sonic cedar
red flower
sonic cedar
#

CURSES

split saddle
#

I will never get over the fact that the code of this game is written in brittish english

#

like wdym i have to put an U in color?!?!?!

final jewel
#

I dont understand how the flip thing when a card is being enhanced work. Right now this code make me crash

chrome widget
#

the majority of english speakers worldwide use british English or some derivative due to the legacy of the British Empire fwiw

sonic cedar
#

added a nilcheck

chrome widget
split saddle
#

what do you mean America isn't the only English speaking country in the world?? /s

final jewel
chrome widget
red flower
sonic cedar
chrome widget
#

not really sure why only the last row is in that raised node?

red flower
#

the loc_vars should have removed the background so thats weird

chrome widget
#

oh I didn't use any loc_vars, should I?

red flower
#

this i mean

final jewel
wind steppe
#

how would i recreate a destroyed card with a random rank?

#

i want it to copy everything but the rank

split saddle
#

can somebody send a link to the vremade jokers?

split saddle
#

it should probably be pinned imo

final jewel
# chrome widget ???

I was saying that a lot of people in the world are considered english speaker but their english I limited like kids. Like me for example.

chrome widget
final jewel
red flower
chrome widget
#

also anyone can learn a language at any age, I'm not gonna associate choppy language skills with being a child tbh. Especially since due to the global hegemony of English-speaking countries, a lot of people are unfairly expected to learn english as a second language when English speakers aren't expected to learn second languages in return. So yeah you're fighting an uphill battle always being expected to engage with a lot of English-speakers in their native language rather than them having to use yours

#

oh sorry I missed it at the bottom using the background color lol

chrome widget
#

So yeah ur doing fine, if someone tells you you talk like a kid, swear at them in both English and however many other languages you know

final jewel
wind steppe
#

how do i get a random rank?

final jewel
wind steppe
#

this doesnt work with custom ranks after all

formal parrot
red flower
#

(the rank is the rank object so i think you need to do rank.key)

faint leaf
#

im trying to make a sigil-ishh kind of joker but it just does NOT want to change the cards to the suit...

wind steppe
#

should be context.after not context.end_of_round

red flower
#

also don't use math.random

faint leaf
#

pseudorandom right

red flower
#

local suit = pseudorandom_element(suits, "unique seed")

wind steppe
#

local chosen_suit = pseudorandom_element(SMODS.Suits, pseudoseed("painter_wowcoolseed")).key

faint leaf
#

gotcha 👍

#

oh awesome thanks

foggy ginkgo
#

How would you make it spawn 2 stone cards instead of 1

#

And yes this is from the marble joker

onyx sonnet
#

SMODS.add_card is simpler to use and ideally you'd just do a for loop on a var in ability.extra

foggy ginkgo
#

Right

knotty orchid
#

Why does Card.ability. show autocomplete suggestions, but card.ability. doesn't, inside functions like calculate? Is there something I'm missing?

wind steppe
#

likely from vanillaremade

wind steppe
knotty orchid
#

do you suggest other editor?

wind steppe
onyx sonnet
#

vscode is all you really need

#

you're just using an incomplete workspace

knotty orchid
#

yeah that's what I thought

onyx sonnet
#

it doesnt have access to all the code in the balatro source code so it cant really autocomplete with accuracy

foggy ginkgo
onyx sonnet
#

i think emplace gets fucky if you try to do it with the 'same' card

wind steppe
#

gets different stone cards that way

foggy ginkgo
#

Uhh

#

How would you write it TvT

chrome widget
#

a little miffed that challenges and consumables have the same c_ prefix lol

foggy ginkgo
#

I'm a silly man

onyx sonnet
#

yeah its a bit obtuse but

#

you really wont be using the key of a card and the key of a challenge in the same circumstance

wind steppe
onyx sonnet
compact valve
sturdy monolith
#

how can i get the on-screen coordinates of a Joker?

#

tryna make a Monika joker and i wanna make it pull your cursor towards the center of it

foggy ginkgo
split saddle
#

how do you add the extra text at the bottom that says a name or something similar?

clear ocean
#

finished the fortuen cookie joker 👍

sturdy monolith
#

add a hook to create_mod_badges

unborn bay
#

what is this embed image

clear ocean
#

i'm pretty sure there's some way to like have the eaten animation after the lucky or wheel card is triggered and not before

unborn bay
#

😭

clear ocean
#

the blueprint is to show it's not compatiable like oops all sixes

onyx sonnet
red flower
clear ocean
onyx sonnet
#

oh cool

#

they really are that jank

clear ocean
#

yeah sure i can try that real quick

onyx sonnet
#

it might not work since the probability is rolled before the card is done being animated

#

but who knows

red flower
#

you might need an event inside an event or something like that

clear ocean
#

only one way to find out

#

maybe if that doesn't work, maybe have a boolean that is turned on (either debuff or just not have it work after triggering) and after scoring or round it is eaten

split panther
#

question how do i make a joker use custom rarity

winter flower
#

why does alt+f5 just not work for me

clear ocean
#

yeah actually maybe it's because it's linux

split saddle
onyx sonnet
#

os shouldnt matter that much for balatro

#

ive barely encountered any issues

chrome widget
normal crest
#

for a moment I thought you made the challenge play the song its name is referring to when you clicked it

chrome widget
#

no im just listening to smth in the background

normal crest
#

my volume is super low for discord videos

modern kindle
#

max it out

red flower
#

is the text next to the badges better than the tooltip

normal crest
#

your info queue needs an info queue for xyz jokers

red flower
#

true

clear ocean
#

okay it works

normal crest
#

if it was smaller it'd look odd

clear ocean
#

one question is that is there a way to make sure it doesn't accidentally get the wheel of fortune if you have another joker

red flower
#

yeah im about to try it with a smaller one

normal crest
#

now the tooltips are scary

red flower
#

i think it looks fine, i might need to right/left align the text

normal crest
#

so if that's as narrow as it gets, you're fine

red flower
#

id rather it look odd so that people read it than nobody reading it lol

normal crest
#

also how does it look with more badges

red flower
normal crest
#

still fine

red flower
#

now time to turn this into multiboxes

split saddle
#

how do you add the extra text at the bottom of a joker?

#

another one of these

red flower
#

so something like that

tepid crow
#

what

#

can't you just modify the badges func

red flower
#

yeah thats the "or this" part of what i said

tepid crow
#

oh it's called set_badges

split saddle
#

i tried reading through it but didn't understand anything... 😭
do i just copy-paste it and see what happens?

tall wharf
#

why does this happen