#💻・modding-dev

1 messages · Page 496 of 1

sonic cedar
#

hi dilly

#

wait i said that

#

howayu

manic rune
#

hi dilly

modern kindle
#

Im okay how are you

sonic cedar
#

hi bepis

#

im great

manic rune
#

hi toma (again)

modern kindle
sonic cedar
#

wait did i alre

manic rune
#

yeah i just do my test :3

sonic cedar
#

dementia

modern kindle
#

I had such bad sleep im finally getting up

sonic cedar
manic rune
sonic cedar
modern kindle
#

I was up every like 30-45 mins

manic rune
#

im leaving that to fate to decide

#

:3

sonic cedar
#

fate mentioned

manic rune
#

fate

modern kindle
#

I will decide bepis grade

sonic cedar
#

4

modern kindle
sonic cedar
foggy ginkgo
#

How does one make when selecting blind, it replaces itself from a pool of jokers

modern kindle
#

Im the one doing it so i told myself

sonic cedar
#

oh youre the client i see

foggy ginkgo
#

Gulp

sonic cedar
#

using the G.jokers pool and pseudorandom

#

probably

modern kindle
#

That would happen with set ability?
I thought you'd just check -

Alright you fixed it

sonic cedar
#

i thought it was a given but just in case

manic rune
#

actually, is it the center or just the key of the joker 🤔

modern kindle
#

See I do things wack I'd personally check the blind and then do the random and destroy and add card

twilit citrus
#

hello!!! how does the in_pool(self, args) -> bool, { allow_duplicates = bool } work? i've been trying to make a deck where everything just appears many times but i can't figure it out :(( thanks for any help

short girder
#

how would i generate a planet card of a certain hand type?

manic rune
#

you can check blue seal code for reference

#

lemme find that in vanillaremade rq

modern kindle
#

Bepis so helpful

simple helm
#

it shows this in my booster, how do i change it?

modern kindle
#

Well bepis, thats no dinner for you

#

Made a mistake

manic rune
#

how do people send a github link that points to a line 🤔

manic rune
modern kindle
#

Idk but it makes me mad when I cant figure it out and I haven't asked either

#

Cause I see n and smt doing it i think

sonic cedar
simple helm
modern kindle
#

But idk how to point to a line

manic rune
manic rune
manic rune
simple helm
#

srry, im spanish lol

manic rune
# simple helm

do you by any chance have group_key in the booster's code

simple helm
#

yes

manic rune
#

remove it

simple helm
#

ok

#

solved :D

glass crown
#

playtesting my mod, and i sorted by suit, and i got? this? this is not sorted by suit??

manic rune
#

is that a custom rank

modern kindle
#

Well it sure ain't a vanilla one silly

manic rune
#

true

#

just wanted to ask in case its a deck skin though

modern kindle
#

Ah tru

royal ridge
#

ig the rank nominal is incredibly high

manic rune
#

i havent messed around with custom ranks before, so no clue on that one

#

probably what senfin said :3

fallen tendon
#

ok, im trying to get any joker to calculate normally, and then calculate with a blueprint effect as part of a deck effect

#

i think i have to hook something, but I don't know where to look

#

smods.calculate_context or smods.calculate_joker?

glass crown
#

the rank nominal is 15, i might lower it down to 12 so it behaves properly now ig

foggy ginkgo
#

Is this not right

calculate = function(self, card, context)
    if context.setting_blind then
        local card = create_card("Food", G.jokers, nil, nil, nil, nil, nil, "dalgona")
        card:add_to_deck()
        G.jokers:emplace(card)
    end
end
wintry solar
#

Use SMODS.add_card

foggy ginkgo
#

Replace it where

modern kindle
#

Instead of using create card and emplace I believe add card does that itself

manic rune
subtle merlin
#

(the progress was Ctrl c + Ctrl v)

foggy ginkgo
#

Still had it

sonic cedar
#

can you not use custom colors in X: ?

manic rune
#

pretty sure you can

sonic cedar
#

cause mine isnt

manic rune
#

🤔

sonic cedar
#

or do i have to lik

#

G.C

#

i didnt have to before when it was C:

manic rune
#

did you try using C: with that color first

#

god

#

my pc is so laggy rn

#

ITS JUST DISCORD 😭

foggy ginkgo
manic rune
foggy ginkgo
#

So just this?

sonic cedar
foggy ginkgo
#

I got a crash

wintry solar
#

That’s not a key

manic rune
foggy ginkgo
#

Oh :(

#

I'm silly

wintry solar
#

I think set = "Food" would work

#

It might be type not set I don’t remember

red flower
foggy ginkgo
#

How would one make a key

sonic cedar
wintry solar
#

The second bit overwrites the first

red flower
gaunt thistle
#

ah you can always tell when the americans are out of work

sonic cedar
#

man

manic rune
#

...hm, kinda hoped this would work

sonic cedar
sonic cedar
gaunt thistle
#

I stand for the flag 🇺🇸 and kneel for the cross 🇫🇮

manic rune
#

using a deck from tmd to see if i can easily make a deck work like a blueprint

wintry solar
manic rune
#

oh wait crap i didnt realize

wintry solar
#

Oh hang on

manic rune
#

😭

wintry solar
#

It’s a deck?

#

That loop will never find a match

manic rune
#

yeah 😭

#

i copied blueprint's code from vanillaremade and just pasted it in there without thinking

#

sob

modern kindle
sonic cedar
#

there has to be a way to merge those backgrounds right

#

or even just only have the 1 be attention'd

red flower
#

I dont think you can in the text formatting but i might be wrong

manic rune
#

...hm, this still didnt work

red flower
#

you would need to use main_end or something

manic rune
#

im guessing its because card is a deck so it doesnt work?

sonic cedar
sonic cedar
#

*easi-er

twilit citrus
red flower
#

no

modern kindle
#

Is there a harder way to understand main end

sonic cedar
#

misprint deck

manic rune
sonic cedar
#

don't they go by deck names instead of keys

red flower
#

the keys are in the localization files

#

it's like b_red and stuff

manic rune
#

. oh, i just realized

#

decks dont use the same contexts as jokers do they

red flower
#

b_modprefix_key

manic rune
#

OF COURSE IT WOULDNT WORK, I

red flower
#

they do

manic rune
#

yeah im dumb, i just realized that

sonic cedar
#

nvm i found them

manic rune
twilit citrus
#

weird erotic deck

red flower
manic rune
#

this is how a deck adds xmult in "joker main style", so i assumed the contexts are different

#

-# dont mind the key, this is from too many decks mod

red flower
#

final scoring step is definitely a thing for decks because i use it for plasma

fallen tendon
#

oh god this is painful

#

how do i like stack returns?

manic rune
#

SMODS.merge_effects

fallen tendon
manic rune
#

;3

red flower
#

i think that's a fine solution

fallen tendon
#

does it work with retriggers?

manic rune
#

how are you using it

fallen tendon
#

cryptid deck

#

it gives every rare joker the effect of blueprint

sonic cedar
#

why doesnt this function trigger? i gave myself 4 jimbo and then debugged pomni in, no transformation

fallen tendon
#

(btw this is hooked into SMODS.calculate_joker)

manic rune
#

if its hooked to SMODS.calculate_joker then self here is pointing to SMODS i think

fallen tendon
#

wait no its Card:calculate joker its hooked into i think

red flower
sonic cedar
manic rune
#

or what N' said, yeah

fallen tendon
#

something weird with this

red flower
#

merge

fallen tendon
#

sorry

wintry solar
manic rune
#

mhm, probably why SMODS.blueprint_effect doesnt work then since im passing decks' context to it

#

actually, wait, whats the difference betwen context.other_main and context.final_scoring_step

fallen tendon
#

ok that didnt work

wintry solar
#

timings

manic rune
#

ic

#

thaks

#

thanks*

wintry solar
#

wait no other_main is different

#

sorry

#

that replaces context.other_joker

manic rune
#

o

#

icic

manic rune
fallen tendon
manic rune
#

mmm one sec

wintry solar
#

use SMODS.blueprint_effect for cleaner code 👍

fallen tendon
#

what exactly is that function?

wintry solar
#

you'd just change the if bit to use SMODS.merge_effects({ret, other_joker_ret}) for example

manic rune
#

this worked for me
-# i should probably switch it to using SMODS.blueprint_effect first before sending to u, i copied blueprint's code lol

#

i also just found out context.no_blueprint existed, so thats something

wintry solar
#

it's only used for quantum enhancements and the eternal check

manic rune
#

...hm, did i fuck up somewhere

fallen tendon
# wintry solar

its nicer looking, but for some reason it still refuses to work

#

should i not be hooking to card:calculate_joker?

manic rune
#

mine doesnt work too, yeah

onyx sonnet
#

is there a way to make it so sold cards dont trigger the message containing the sell price under it?

manic rune
#

so thats weird

sonic cedar
red flower
fallen tendon
manic rune
red flower
#

yes

#

you can do merge_effects({ret or {}, other_ret})

#

if ret is nil then it considers the array to be empty basically

manic rune
#

mmmmmmmm

#

lemme try again

wintry solar
#

did we not add a nil check?

fallen tendon
manic rune
#

oh yeah it works

fallen tendon
#

its not throwing up an error at all for me

#

its just not funcitoning

manic rune
# fallen tendon could you give me the code for this in the chat? i wanna test if it works on my ...
local hookTo = Card.calculate_joker
function Card:calculate_joker(context)
   local ret, trig = hookTo(self, context)
   if self.ability and self.ability.set == "Joker" and self.config.center.rarity == 3 then
      local other_joker = nil
      for i = 1, #G.jokers.cards do
         if G.jokers.cards[i] == self then other_joker = G.jokers.cards[i+1] end
      end
      local other_joker_ret = SMODS.blueprint_effect(self, other_joker, context)
      return SMODS.merge_effects({ret or {}, other_joker_ret or {}}), trig
   end
   return ret, trig
end
#

here

red flower
manic rune
red flower
#

srockw had a good suggestion of using pairs and saving the indexes but it was kinda complicated and i didnt want to do it :3

wintry solar
#

ah fair enough

modern kindle
manic rune
#

so true

fallen tendon
#

GGGGGGGGGG

manic rune
#

nice :3

fallen tendon
#

CYAN DECK GONNA GO HARD

wintry solar
#

cyan deck is pretty boring though /s

foggy ginkgo
#

Is there a way to prevent jokers from spawning in shop

foggy ginkgo
manic rune
#

in_pool

#

oh yeah rq, what is this for

#

i just found it while searching for SMODS.showman earlier

maiden phoenix
wintry solar
#

to let straights wrap

#

when it returns true

manic rune
#

ohhhh i see i see

foggy ginkgo
# manic rune in_pool

in_pool = function(self, args)
return G.GAME.pool_flags.nic_dalgona
end,

Like this (or somewhat like this)

sonic cedar
#

this should still work in this instance right
i mean ijiraq itself does it but the conditions arent # based

manic rune
#

-# i have no clue what G.GAME.pool_flags is :3

foggy ginkgo
#

-# shit

sonic cedar
foggy ginkgo
#

I saw it from Cavendish

manic rune
#

as long as its a bool value, it should work

manic rune
sonic cedar
foggy ginkgo
sonic cedar
manic rune
#

:3

maiden phoenix
manic rune
#

test it and see if it crashes lmfao

sonic cedar
#

true

foggy ginkgo
#

Though I want it to not appear in shop but be able to spawn from a certain joker

#

Is that possible or nah

maiden phoenix
#

Oh then just put return false in the in_pool func

modern kindle
#

i have something like that, but i just return false and make the joker add the card

#

sdm was faster

#

sadge

sonic cedar
maiden phoenix
#

😛

foggy ginkgo
modern kindle
#

return false means it wont appear in shop, booster, etc

foggy ginkgo
#

Ah

#

Will it spawn from judgment or riff raff

modern kindle
#

it will not appear in any way

foggy ginkgo
#

Aight

modern kindle
#

hence it being out of the pool

foggy ginkgo
#

Thank you my goat

short girder
#

how does weight work? does it support decimals? do smaller values = less or more density in shops?

modern kindle
#

1200 usd immediately

sonic cedar
#

im gonna have to edit all these fake jokers at some point to not be able to appear if their real counterparts in the ijiraq effect table

modern kindle
#

i disagree

sonic cedar
#

ok dilly

#

do you wanna help with my new issue

modern kindle
#

idk if im the right person but i could peruse

sonic cedar
#

ok so dusk? isnt supposed to do this

modern kindle
#

thats alot of aces

sonic cedar
#

it's supposed to do the retrigger, then also copy your scored hand

manic rune
#

is that the entire fucking deck

short girder
#

thanks!

manic rune
#

sonic cedar
#

per ace

manic rune
#

i see

modern kindle
#

i actually do something saimilar for a duplicator joker minus the retrigger

#

one sec

short girder
#

whats the default value for like. idk tarot packs. like whats their normal weight so i can change the weight based off of them

sonic cedar
#

wait youre doing booster weight stuff i wrote a function for this

modern kindle
#

alright bestie i dmed u

sonic cedar
#

thank you bestie

sonic cedar
# sonic cedar

usage example in which the rate of all boosters is set to 0, then the Standard pack one is reset to normal

foggy ginkgo
#

Actually it's probably cause the joker is trying to summon the pool of jokers, but when I make it return false it kinda negates itself

sonic cedar
maiden phoenix
#

It's a joker that only spawn unavailable jokers?

foggy ginkgo
#

Yes

#

:D

red flower
#

it's your own pool of jokers?

near heart
#

friend got this error earlier and im not able to recreate it. any ideas?

maiden phoenix
#

Talisman moment

modern kindle
#

we love talisman

modern kindle
#

N

#

how do you link to specific lines

red flower
maiden phoenix
#

Hover onto the number, smt..

#

Arg

foggy ginkgo
modern kindle
maiden phoenix
#

And whats in it?

near heart
#

oh ok

#

weird

#

thanks

red flower
foggy ginkgo
#

Thing is I want it so where when selecting blind with the first joker (base dalgona) turns into either of there 4 other dalgona, but I don't want the other 4 to appear anywhere

#

Kinda weird ik lmao

wintry solar
#

are they fundamentally different jokers or just different art?

foggy ginkgo
#

Different jokers

#

I don't know how to do different art

#

I assume it's possible to have them have different art with different functionality

#

I'm okay when it comes to modding lmao

wintry solar
#

what code do you currently have?

short girder
#

hey folks, so my funny little booster packs aren't actually showing up in the game. so whats wrong with my code?

wintry solar
#

SMODS.Booster{

#

remove the =

foggy ginkgo
#

Well since I wanted to act like a "riff-raff" I only got this

SMODS.Joker{ -- Dalgona Base
key = "dalgonabase",
blueprint_compat = false,
eternal_compat = true,
unlocked = true,
discovered = true,
atlas = 'nicjokers',
rarity = 1,
cost = 4,
pos = {x = 2, y = 2},
config = { extra = {} },
pools = { Food = true },
loc_vars = function(self, info_queue, center)
return { vars = {} }
end,

calculate = function(self, card, context)
    if context.setting_blind then
        card:start_dissolve()
        local card = create_card("Dalgona", G.Jokers, nil, nil, nil, nil, nil, 'dalgona')
        card:add_to_deck()
        G.jokers:emplace(card)
    end
end

}

SMODS.ObjectType{ -- Pool Dalgona
key = "Dalgona",
cards = {
['j_nic_dalgonacircle'] = true,
['j_nic_dalgonatriangle'] = true,
['j_nic_dalgonastar'] = true,
['j_nic_dalgonaumbrella'] = true,
}
}

SMODS.Joker{ -- Dalgona Circle
key = "dalgonacircle",
blueprint_compat = false,
eternal_compat = true,
unlocked = true,
discovered = true,
atlas = 'nicjokers',
rarity = 1,
cost = 0,
pos = {x = 3, y = 2},
config = { extra = {} },
pools = { Food = true },
}

SMODS.Joker{ -- Dalgona Triangle
key = "dalgonatriangle",
blueprint_compat = false,
eternal_compat = true,
unlocked = true,
discovered = true,
atlas = 'nicjokers',
rarity = 1,
cost = 0,
pos = {x = 4, y = 2},
config = { extra = {} },
pools = { Food = true },
}

SMODS.Joker{ -- Dalgona Star
key = "dalgonastar",
blueprint_compat = false,
eternal_compat = true,
unlocked = true,
discovered = true,
atlas = 'nicjokers',
rarity = 1,
cost = 0,
pos = {x = 5, y = 2},
config = { extra = {} },
pools = { Food = true },
}

#

Didn't have enough space for umbrella but it's the same thing

wintry solar
#

so just spawn one of your custom jokers?

short girder
foggy ginkgo
wintry solar
#
calculate = function(self, card, context)
  if context.setting_blind then
    card:set_ability(pseudorandom_element(G.P_CENTER_POOLS.Dalgona, 'dalgona').key)
  end
end```
#

this should do the trick

#

it might be G.P_CENTER_POOLS.modprefix_Dalgona

#

that'll just change the closed one to one of the open ones

red flower
#

objecttype doesnt add the prefix im pretty sure

wintry solar
#

but I'm not 100% on how object types work

glass crown
#

how would i go about adding a card to the deck after beating a blind? (specifically a non boss blind)

chrome widget
#

Someone should give me $250,000 USD rn

red flower
#

ok

chrome widget
#

Personally I deserve it for being smart and sexy all the time

red flower
#

true!

chrome widget
#

Anyway good morning everyone

modern kindle
#

take it all

chrome widget
#

Uhhh

#

No wait that's called findom don't do that

modern kindle
#

thats a shame i meant it in the bestie friend awesomeness way where you take all of my money

wintry solar
#

I'll take your money dilly

sonic cedar
#

good morning winter

#

i will also take dilly's money

modern kindle
red flower
modern kindle
# sonic cedar i will also take dilly's money

i give you all my money, you write me a check for 3x that, i cash that, i give you the difference
you then give me back half, and ill give you 3/4 of mine which we then invest in stocks under my accounts, wait 5 years, i give you 4/8ths of that
and then we go to walgreens

chrome widget
#

Also @tall wharf also I'm under the impression that you made the new mod menu UI which looks really cool so you did an amazing job!!! I really like it ❤️

modern kindle
chrome widget
#

We got chicken sandwich tho

modern kindle
#

oh winter snookums bestie i have a query for you since you have shadered before

wintry solar
modern kindle
sonic cedar
chrome widget
#

👏 !!!!

modern kindle
# chrome widget Yes snookums?

so i have a shader which works beautifully on jokers, but massively fucks up playing cards visually
is there a way with an edition i can choose the set to display differently?

ie if its set joker then it shows the normal, but if set default or enhanced it shows another one?

red flower
#

aiko is amazing

neon mist
#

guys, how do you use the is_suit function. im new to this

formal parrot
#

Aiko is sexy

red flower
chrome widget
neon mist
#

wat if I want to subtract money

modern kindle
short girder
red flower
neon mist
#

ty so much!!!!

glass crown
# red flower do it in `context.end_of_round and context.game_over == false and context.main_e...

like this below? it doesnt appear to be working (although i am semi proud that this is what i initially tried, minus the context.beat_boss part)
its worth noting that this is being added to a deck and not like a joker

        if context.end_of_round and context.game_over == false and context.main_eval and not context.beat_boss then
            local card = SMODS.create_card { set = "Base", rank = "votd_Extraterrestrial" }
            G.deck:emplace(card)
            table.insert(G.playing_cards, card)
        end
    end```
red flower
#

oh i forgot context.main_eval is not a thing yet for decks, remove that and add not context.individual and not context.repetition

wintry solar
#

-# it is on dev branch

chrome widget
#

It is in latest dev yeah

red flower
#

i know its cool

chrome widget
#

Thank you Eremel

wintry solar
#

🫡

modern kindle
#

eremel youre so cool can i have your autograph

red flower
#

speaking about that, is there an easy way to know when the ante changed with contexts? ive been doing beat_boss but that might not be good with mods that change blinds

wintry solar
#

I don't think so right now

chrome widget
#

You're awesome and you put in so much good work, esp since you're mostly working on your own recently. I don't think people appreciate it enough and I want you to know that I'm noticing all the progress you're making and every improvement to SMODS is a genuine treat ❤️

limber blaze
#

some ante change context would definitely be nice

modern kindle
#

winter didnt you have an ante context or am i insane

limber blaze
#

with some return value to change how much the ante will change by

chrome widget
#

I did yeah

limber blaze
#

probably

chrome widget
#

I hooked ante, money, hands, and discards to all send contexts whenever the values change

red flower
#

i have a lot of once per ante effects because yugioh haha

chrome widget
#

It's inherently pretty basic, like it doesn't differentiate why the ante change occurred, so I mostly just assume based on the sign of the mod

#

I'm sure if I was to look for greater mid compatibility I'd need to make it more full features

glass crown
red flower
glass crown
#

ah okay im silly lemme do that

glass crown
wintry solar
wintry solar
modern kindle
#

yea you do fantastic work and i hope you dont feel it is unappreciated
youre a smart fella and im glad to use what youve done

chrome widget
#

Ur either a smart fella or.......

#

Hm

modern kindle
#

or what huh

#

go on

#

finish ur freakin thought

brittle yacht
#

recently one of my jokers broke somehow? anyone see anything wrong with this code? the joker is supposed to apply Polychrome to a random joker when any booster pack is skipped.

    key = 'rainbow',
    loc_txt = {
        name = '{C:silly_rainbowgradient}Rainbow Card{}',
        text = {
            'Applies {C:edition}Polychrome{} to a random Joker when any',
            '{C:attention}Booster Pack{} is skipped',
        },
    },
    atlas = 'rainbow',
    pos = { x = 0, y = 0 },
    rarity = 3,
    cost = 7,
    unlocked = true,
    discovered = true,
    pools = { ['SillyPool'] = true },

    loc_vars = function(self, info_queue, card)
        info_queue[#info_queue + 1] = G.P_CENTERS.e_polychrome
        return { vars = { G.GAME.ecto_minus or 1 } }
    end,

    calculate = function(self, card, context)
        if context.skipping_booster and not context.blueprint and not eligible_card == nil then
            local editionless_jokers = SMODS.Edition:get_edition_cards(G.jokers, true)
            if editionless_jokers[1] then
                local eligible_card = pseudorandom_element(editionless_jokers, 'hex')
                eligible_card:set_edition({ polychrome = true })
            else
                return {
                    message = 'No Eligible Jokers!'
                }
            end
        end
    end
}```
brittle yacht
red flower
#

not eligible_card == nil is always false

brittle yacht
#

so set it to ~= instead?

red flower
#

i would remove it, i dont know what youre checking there

chrome widget
#

But yeah it's sometimes easy to miss esp when you're not actively following SMODS that it's both crowdsourced but also not maintained by a huge team of people, so it's a very impressive project keeping it up and trying to suit the needs of its various users

foggy ginkgo
#

How would one card:set_ability a pool of jokers

sonic cedar
short girder
chrome widget
foggy ginkgo
#

It's the dalgona thing again, being indecisive so

#

Well I know it's currently changing to dalgonacircle

brittle yacht
foggy ginkgo
#

But what do I change to do the group

red flower
foggy ginkgo
#

Right

sonic cedar
foggy ginkgo
#

My bad

short girder
red flower
#

and the fixed code

short girder
brittle yacht
#

how do i make a joker that does kinda what the abstract joker does, but it's X2 mult for each specific joker you have but from a POOL of cards.

wintry solar
#

iterate over G.jokers.cards and count how many are in your pool

red flower
short girder
#

ohhh i pulled the extra out of nowhere

#

many thanks

short girder
red flower
#

did you restart the run

short girder
#

i was going to ask if that interfered

#

yeah i didnt

chrome widget
#

Ough good lord I am thinking of the stupid weird bull that I pulled with one of my Stands where it underlying pretends to be a joker the whole time

#

It's probably SO fragile

#

It creates a hidden joker that's always in the last joker slot, and then masks the true numbers of jokers in the slot with a visible card count on the card area, so any check to #G.jokers.cards inherently shows "more" cards than you have

final jewel
#

Why my info_queue make me crash ?

red flower
#

whats the crash

proven adder
final jewel
short girder
red flower
red flower
short girder
final jewel
#

but how do I show what is the effect of the voucher ?

red flower
red flower
# proven adder

can i see the full crash
also have you checked vanillaremade?

proven adder
red flower
#

yes

proven adder
#

ok 1 second

final jewel
red flower
brittle yacht
#
    key = 'mastersprinkler',
    loc_txt = {
        name = 'Master Sprinkler',
        text = {
            '{X:mult,C:white}X2{} Mult for each {C:gold}Grow A Garden{} Joker'
        }
    },
    atlas = 'mastersprinkler',
    pos = { x = 0, y = 0 },
    rarity = 3,
    cost = 6,
    unlocked = true,
    discovered = true,
    pools = { ['SillyPool'] = true },
    config = { extra = { Xmult = 15 } },

    loc_vars = function(self, info_queue, center)
        info_queue[#info_queue + 1] = { key = 'silly_growagarden', set = 'Other', vars = { "Master Sprinkler" } }
        return { vars = { center.ability.extra.Xmult } }
    end,
    calculate = function(self, card, context)
        if context.joker_main then
            if G.jokers.cards[i].config.center.pools and G.jokers.cards[i].config.center.pools.GAGPool then
                return {
                card = card,
                Xmult_mod = card.ability.extra.Xmult,
                message = '+Wet!',
                colour = G.C.MULT
                }
            end
        end
    end
}```
proven adder
red flower
#

and the mod's prefix is seel?

proven adder
#

ah

#

no

#

lemme chnage it and test one sec

#

Thanks so much lmao, work great

brittle yacht
#

is there something wrong with this code, i broke it again

#
    key = 'mastersprinkler',
    loc_txt = {
        name = 'Master Sprinkler',
        text = {
            '{C:mult}+5{} Mult for each {C:gold}Grow A Garden{} Joker'
        }
    },
    atlas = 'mastersprinkler',
    pos = { x = 0, y = 0 },
    rarity = 3,
    cost = 6,
    unlocked = true,
    discovered = true,
    pools = { ['SillyPool'] = true },
    config = { extra = { mult = 5 } },

    loc_vars = function(self, info_queue, center)
        info_queue[#info_queue + 1] = { key = 'silly_growagarden', set = 'Other', vars = { "Master Sprinkler" } }
        return { vars = { center.ability.extra.mult } }
    end,

    calculate = function(self, card, context)
        if context.joker_main then
            return {
            card = card,
            mult = card.ability.extra.mult * G.jokers.cards[i].config.center.pools.GAGPool,
            message = '+Wet Mutation',
            colour = G.C.MULT
            }
        end
    end
}```
red flower
#

does it crash

brittle yacht
#

you want the crash?

red flower
#

G.jokers.cards[i].config.center.pools.GAGPool is not a number

#

i doesnt exist

brittle yacht
#

so what should i do instead

red flower
#

and card.config.center.pools doesnt always exist

brittle yacht
#

im trying to make it give you +5 mult for every joker you have that's in a specific pool

#

like abstract joker but cooler

molten relic
#

why

red flower
red flower
brittle yacht
#

you get 2 sinkhole token of appreciation now

molten relic
red flower
#

yeah

molten relic
#

it works now

brittle yacht
#

how do i set that up

red flower
#

huh?

#

oh it was a typo

brittle yacht
#

oh

red flower
#

G.jokers.cards

brittle yacht
#

ok thanks

brittle yacht
#

and it says the problem is "Malformed number."

red flower
#

check the code i sent

#

i fixed it

brittle yacht
#

oh thanks

long sun
#

this context for my Partner isn't correct:
if context.other_main and context.other_card and context.other_card.ability.set == "Tarot" then
what should it be? it should trigger similarly to Observatory, but for all Tarots

#

i've checked Obvservatory's code, but it doesn't seem relevant

short girder
#

how do i fetch the most played hand?

red flower
#

do what obelisk does

short girder
#

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

red flower
#

that gets how many times the current hand has been played

#

you loop through G.GAME.hands and get the most played

floral narwhal
short girder
#

ah so the for k,v in pairs(G.GAME.hands)

red flower
brittle yacht
# red flower i fixed it
    key = 'mastersprinkler',
    loc_txt = {
        name = 'Master Sprinkler',
        text = {
            '{C:mult}+5{} Mult for each {C:gold}Grow A Garden{} Joker'
        }
    },
    atlas = 'mastersprinkler',
    pos = { x = 0, y = 0 },
    rarity = 3,
    cost = 6,
    unlocked = true,
    discovered = true,
    pools = { ['SillyPool'] = true },
    config = { extra = { mult = 5 } },

    loc_vars = function(self, info_queue, center)
        info_queue[#info_queue + 1] = { key = 'silly_growagarden', set = 'Other', vars = { "Master Sprinkler" } }
        return { vars = { center.ability.extra.mult } }
    end,

    calculate = function(self, card, context)
        if context.joker_main then 
              local count = 0
              for _, joker in ipairs(G.jokers.cards) do
                if (joker.config.center.pools or {}).GAGPool then
                          count = count + 1
                end
            end
            return {
                mult = card.ability.extra.mult * count,
                message = '+Wet Mutation!',
                colour = G.C.MULT
            }
        end
    end
}```
floral narwhal
red flower
#

context.using_consumeable

short girder
#

is there no other way to fetch it? or would the loop work inside a SMODS.add_card()? (in a way to fetch the most played hand and give the player the respective planet card)

red flower
#

no, you would need to loop before

#

you also need another loop to get the planet

brittle yacht
short girder
#

so i make a local variable that stores the respective key for the most played hand and then, after the loop has stored the key, give the player the respective planet card?

red flower
#

yes

short girder
#

gotcha

floral narwhal
red flower
#

i think its not context.card

#

check the docs

brittle yacht
# red flower i fixed it

bro it's still broken 😦

    key = 'mastersprinkler',
    loc_txt = {
        name = 'Master Sprinkler',
        text = {
            '{C:mult}+5{} Mult for each {C:gold}Grow A Garden{} Joker'
        }
    },
    atlas = 'mastersprinkler',
    pos = { x = 0, y = 0 },
    rarity = 3,
    cost = 6,
    unlocked = true,
    discovered = true,
    pools = { ['SillyPool'] = true },
    config = { extra = { mult = 5 }, },

    loc_vars = function(self, info_queue, card)
        info_queue[#info_queue + 1] = { key = 'silly_growagarden', set = 'Other', vars = { "Master Sprinkler" } }
        return { vars = { card.ability.extra.mult } }
    end,

    calculate = function(self, card, context)
        if context.joker_main then 
              local count = 0
              for _, joker in ipairs(G.jokers.cards) do
                if (joker.config.center.pools or {}).GAGPool then
                          count = count + 1
                end
            end
            return {
                mult = card.ability.extra.mult * count,
                message = '+Wet Mutation!',
                colour = G.C.MULT
            }
        end
    end
}```
red flower
#

what's line 892

brittle yacht
#

mult = card.ability.extra.mult * count,

red flower
#

did you restart the run before testing

brittle yacht
#

i can

floral narwhal
short girder
#

n would this work

red flower
#

no

#

_planet would be the key of a poker hand

short girder
#

oh so thats what you meant by two loops

brittle yacht
short girder
#

i need to check the corresponding planet card to a poker hand

red flower
#

also youre never updating playmorethan so you wont get the most played

brittle yacht
short girder
red flower
red flower
short girder
#

so for every poker hand played after the start of the run i update it or

red flower
#

no, in the loop

#

obelisk only checks if a hand was played more than the current one

#

you dont want exactly that

#

you want to loop and get the most played

#

so you need a variable to keep track of the highest value

long sun
#

i rescind! i fixed it ^u^

#

god bless vanilla remade o7

red flower
#

is making a partner easy

proven adder
#

ok so I'm trying to make a seal which stops a card from being debuffed but it doesn't prevent a debuff at all, I've tried triggering it if the game is into a boss blind, or when it's drawn to hand, but nothing wants to work, here's my code

short girder
red flower
#

yes

#

thats what the loop checks

short girder
#

i have a general idea of what i need to do

red flower
#

in that loop it's v.played

short girder
red flower
#

yes

short girder
#

no shot

red flower
#

you might not need the k != scoring_name part

#

unless you specifically dont want it to give the scoring hand

short girder
#

ill remove it

red flower
#

also playmorethan should start at -1

gaunt thistle
#

ethan?

short girder
#

thank you

hidden sable
#

chat who else hates the nonsensical names for certain functions

#

like we have press_play instead of play_hand

red flower
#

i think both make sense

hidden sable
#

press play seems very out of the blue for something that's always referred to as play_hand

red flower
#

i think the only time it is referred to as play hand is in-game and who knows when that was the phrase decided for the button

#

press_play is when you press play

chrome widget
#

I'd say press_play is pretty sensical tbh. It's when you press the play button, immediately before any other calculation occurs

real night
#

how would you go by doing X2 hands

#

or X2 discards

subtle merlin
#

G.GAME.current_round.discards_left = G.GAME.current_round.discards_left * 2?

chrome widget
#

I am once again
aboard an aircraft

real night
#

okay now what could hands possibly be

subtle merlin
real night
#

wait

#

😭

#

okay nvm im fucking stupid fun fact of the day

short girder
#

can you give consumables individual weight? like, make some consumables rarer than others in booster packs

hidden sable
#

i hit cash out and it starts sluggin

#

weird thing actually

hidden sable
#

if i have at least 1 dollar of interest

#

it doesnt crash

thick drift
hidden sable
#

but if i dont it crashes

hidden sable
#

did you forget a return true

thick drift
#

yeah, I forgot that was the issue

hidden sable
#

lol

thick drift
#

just thought it was a funny bug

hidden sable
#

happens to the worst of us (im the worst of us)

real night
#

oh yeah what would happen if you have a card thats X2 discards and get drunkard, would drunkard give +2 discards or uh

hidden sable
#

this is the code btw

short girder
#

damn

hidden sable
#

and my hooks

wintry solar
#

or you can do some jank pool manipulation

hidden sable
#

he means just not individual weights, souls have their own weight

chrome widget
#

Do soul and black hole have the same weight?

wintry solar
#

I think they're both set to 0.003

molten relic
#

is there a context for when a discard is done/cards are getting drawn to hand after a discard?

slim ferry
#

there is context.pre_discard

chrome widget
#

it's context.drawing_cards, but it occurs any time you draw a card (after hand played, card limit change, etc)

molten relic
#

does that count every hand drawn or only after a discard?

lucid owl
#

how could i make a card's description appear differently in the collection again?

chrome widget
molten relic
#

sounds too complicated

daring fern
molten relic
#

ill do it the old annoying way

wintry solar
#
if context.pre_discard then card.ability.active = true end
if context.hand_drawn and card.ability.active then
  card.ability.active = nil
  -- do stuff here
end```
short girder
#

how do i give the player a random tag?

brittle yacht
#

how do i use
set_badges = function(self, card, badges)

lucid owl
molten relic
red flower
#

like 20 seconds

#

why

lucid owl
#

it was only sent like 15 hours ago

molten relic
#

still

short girder
#

does #G.tags exist

red flower
molten relic
red flower
#

im on this channel a lot

molten relic
#

i know that yeah

#

how can i reference a variable in message =

#

just using #1# doesnt seem to work

daring fern
harsh bobcat
#

This loads the jokers fine. But the enhancers aint there. Whass wrog?

plucky zenith
#

If I have a Roulette joker that I'm trying to see if I can get working. Essentially it:

  • Bets (costs) $1 per card played [todo, but should work like "The Tooth"]
  • Each hand it spins the wheel and selects a rank
  • If that rank is in your hand it pays out 5x what you "bet".

I have it randomly choosing a rank, limited to cards in your deck. And I have it animating for 5 seconds to show the "spin", but I when the spin finishes how can I force it to show the card that was selected - Ideally right under the joker, kind of like what card_eval_status_text(card, 'extra', nil, nil, nil, {message = localize('something')}) would do, but when Ic all that from inside the event that stops the animation, it doesn't seem to display right then. It just updates the message and it shows after scoring

red flower
molten relic
#

i used localize and then thought i could maybe do it directly

daring fern
molten relic
#

(localize('k_upgrade_ex') that is)

red flower
#

for localize you need to have a localization key in v_dictionary

molten relic
#

what should be in place of the ". . mult. ."

brittle yacht
#
         badges[#badges+1] = create_badge(localize('Item'), G.C.UI.TEXT_INACTIVE, G.C.BLACK, 1 )
     end,``` why this no work
#

it shows "ERROR"

red flower
molten relic
#

oh okay

red flower
molten relic
#

message = "X" ..xmult,

#

am i dumb?

#

did i not understand you correctly

red flower
#

no that's it

#

but xmult has to be a variable that exists

molten relic
#

it aint work

molten relic
red flower
#

why do you need a message for xmult anyway

molten relic
#

+X0.1 per card discarded this blind

#

when a discard is done it shows like how much xmult it has

red flower
#

message = localize { type = 'variable', key = 'a_xmult', vars = { xmult } }

#

from throwback

molten relic
#

owh

rotund sable
#

is there a way i can wrap them so instead of one line they split into multiple lines?

red flower
#

wdym? having all three lines in a column? or splitting each line into multiple lines?

normal crest
#

for some reason SMODS.add_card { set = 'Enhanced', enhancement = 'm_steel', area = G.hand } sometimes creates a card with no front (you can see how of those many I created, only 2 ended up like this)

red flower
#

funny

#

probably trying to stone card first

brisk atlas
#

How the skibidi do I make config with checkboxes I don't understand the docsegg

rotund sable
#

i mean like instead of making the letters smaller it wraps them around

very long string made for demonstration

->

very long string made
for demonstration
normal crest
ivory citrus
#

Hello

normal crest
#

Didn't get that

red flower
brisk atlas
#

THANK YOU

red flower
normal crest
#

well, at least it's an easy solution

red flower
normal crest
rotund sable
#

damn

red flower
#

dont you love UI

rotund sable
red flower
#

<@&1133519078540185692>

slim ferry
#

kill kill kill

normal crest
proven adder
#

can someone please help? I'm trying to make a seal which stops a card from being debuffed but it doesn't prevent a debuff at all, I've tried triggering it if the game is into a boss blind, or when it's drawn to hand, but nothing works, here's my code

modern kindle
#

hi srock

jolly shadow
near heart
#

how do i get the chip value while scoring (not the total chips gotten during the blind)

red flower
jolly shadow
near heart
#

thanks goat

modern kindle
#

N you upset me

wintry solar
#

also we don't generally use update for anything

red flower
#

i dont know how seals work
why dont they have apply and remove functions

modern kindle
# red flower why!

cause i was typing this whole thing saying for the total score you can do hand_chips * mult and then just for the chips you could do hand_chips and then i was gonna say the mult too but i type too much instead of just giving the answer
ur too fast

red flower
#

i think if you're replying with the same thing but more clearly you should still do it

jolly shadow
#

is this better N'

red flower
#

that makes more sense, but idk if it works with seals

jolly shadow
#

i presume calculate would work here cuz its mentioned on the docs

red flower
#

i know calculate works

proven adder
modern kindle
#

yea no harm in testin, if it works then we have a baller solution

jolly shadow
#

if it works then of course it worked, im edward robinson

modern kindle
#

what if it doesnt

red flower
#

why does it appear as if i blocked myself

jolly shadow
modern kindle
#

you hate yourself

red flower
#

i do

modern kindle
#

but i like u which means it cancels out

red flower
#

my entire range of emotions can only be conveyed through anime gifs and they've taken that from me

proven adder
modern kindle
#

could probably do recalc_debuff on it no?

#

or am i a fool

jolly shadow
harsh bobcat
#

The thing activates when other card get sold. How do I specify it is only this card?
The thing doesn't even work. Says _poi_card is nil (or sometging else i don't remember) so someting is wrong there. (Did N' make the wiki page?)
Is this correct for making it not be in the shop?:

    in_pool = function (self, args) 
        return { false }
    end
proven adder
proven adder
red flower
#

oh for only this card it's context.selling_self

harsh bobcat
#

Ok.
But I'm pretty sure something is wrong with the thing that randomizes and sets an enhancement.

red flower
#

is your prefix p?

#

it shouldn't be

wintry solar
#

I thought prefixes had to be 3 chars

jolly shadow
#

taking a guess after looking at source stuff

hidden sable
#

pls help

#

idk what causes this

harsh bobcat
wintry solar
#

no it's in your set ability

hidden sable
#

i click cash out on my custom blind

#

and it crashes

jolly shadow
#

send the code for the blind

hidden sable
proven adder
#

under the if statement

jolly shadow
daring fern
jolly shadow
#

could u not question mark my attempts to help w/ something k thx

harsh bobcat
#

When pulling out the collection/enhancements for my mod I get a stack overflow. Something is wrong with em but what?
vvv Logs

maiden phoenix
hidden sable
maiden phoenix
#

(sorry N lol)

proven adder
jolly shadow
#

sorry for ping riftbreaker

hidden sable
#

i agree

#

mr poly react with this message ❓ if you like men

proven adder
hidden sable
#

noted

normal crest
hidden sable
#

mr poly bridge react with this message white_stake if you the uh

maiden phoenix
red flower
jolly shadow
hidden sable
#

mr poly bridge cancelled

#

wrap it up

wicked crow
#

how can i use the mult base value for a condition?

proven adder
maiden phoenix
rotund sable
rotund sable
#

Shit wrong response

jolly shadow
#

so yes very much more efficient

maiden phoenix
#

It's always better to avoid using update

jolly shadow
#

100% calculate coulda worked as well

#

🤷‍♂️

near heart
#

how can i create a joker starting with an edition and a sticker

hidden sable
#

can someone lock in and tell me whats wrong here

maiden phoenix
normal crest
maiden phoenix
daring fern
near heart
hidden sable
normal crest
#

did you start a new run

maiden phoenix
hidden sable
maiden phoenix
#

oh lol

hidden sable
#

wht even cuases that in the first place

#

like what is it not seeing

#

curious

normal crest
#

when you start a new run, your boss gets added to G.GAME.bosses_used

#

and if it's not there, death

hidden sable
#

ah

lament agate
#
    calculate = function(self, card, context)
        if context.individual and context.cardarea == G.play and
            G.GAME.current_round.card_picker_selection then
            if context.other_card:get_id() == G.GAME.current_round.card_picker_selection.id and
                context.other_card:is_suit(G.GAME.current_round.card_picker_selection.suit) then
                return {
                    x_mult = card.ability.extra.x_mult,
                    x_chips = card.ability.extra.x_chips
                }
            end
        end
    end
#

how do i make it so that it counts for the unscored cards

#

instead of the played one

daring fern
placid star
#

@sonic cedar do you have any issues with floating sprites dissapearing when you have mutliple and a card has an edition?

chrome widget
placid star
#

ive looked through the draw_shader function and all floating_sprite mentions and i cant find the fix

chrome widget
#

What are the additional sprites you're making, and where are you drawing them?

placid star
chrome widget
#

Mhm

#

Centers are drawn before editions (including their custom draw functions) in the draw step order, whereas the floating_sprite DrawStep is after it

#

Every vanilla edition except foil draws its shader as completely opaque

#

So your additional sprites are getting drawn, then the edition gets drawn on top of it as an opaque layer, then the floating sprite is drawn

#

If you test the card with Foil, you're likely to actually see all the sprites you want, because it doesn't use the base pixels of the center child

ivory coral
#

how exactly does weight work for enhancements? i find it so weird because apparently the default is 5, but when its set to 1 i dont notice them being that much rarer and they still appear even if its set to -1 or something

placid star
chrome widget
#

Easiest way to do it is to just make your own DrawStep for it and put it in the order later than the edition shader step

lament agate
#

if i define the suit in the description, say #3#, would it show the color of the suit?

chrome widget
#

Additionally, soul layers support their own custom draw functions

#

You could likely implement that and draw the other sprites there instead in addition to the single one supported in vanilla

#

Since those will also get called later than the editions in the draw order

near heart
placid star
#

ahh right, ill try a draw step ty!

maiden phoenix
#

Something like

set_ability = function(self, card, initial, delay_sprites)
    card:set_edition...

onto your SMODS Joker object

chrome widget
misty radish
#

How do you add a mod icon?

maiden phoenix
#

key has to be modicon

misty radish
#

Nice
Thanks

rotund sable
#

we love ui

red flower
#

Lose

maiden phoenix
#

Lose

jolly shadow
#

who's "we"

maiden phoenix
#

They're writing in french don't mind it

solemn shuttle
#

is there a way to customize jimbo's lil quip after getting a game over at all
-# like say if i made an instaloss mechanic the lil guy says "lol you died" instead of one of the default ones

solemn shuttle
# daring fern Yes.

how so if i may ask
-# [i do NOT know how to mess with jimbo talking at all actually, i didn't see anything about it on the smods wiki but i may be blind]

solemn shuttle
#

ohh,

#

hm

compact valve
chrome widget
# solemn shuttle is there a way to customize jimbo's lil quip after getting a game over at all -...

Because I hope this will pass review and because a friend of mine made it, I'd recommend stealing code from this PR: https://github.com/Steamodded/smods/pull/745

GitHub

Added a new GameObject, SMODS.JimboQuip which serves to allow mods to easily add new quips for Jimbo to say on run wins/losses. All you need is a key and a type set to &#39;win&#39; or &amp...

wintry solar
#

love a good session of refactoring

tiny hemlock
#

does anyone know why this keeps crashing?

    key = "onsightkanye",
    path = "onsightkanye.ogg"
})

SMODS.Joker{
    key = 'onsight',
    loc_txt = {
        name = 'ON SIGHT',
        text = {
            "{C:dark_edition}test{}",
        }
    },
    atlas = 'Jokers',
    rarity = 3,
    cost = 3,
    unlocked = true,
    discovered = true,
    blueprint_compat = true,
    eternal_compat = false,
    perishable_compat = false,
    pos = {x = 0, y = 0},
    config = { 
        extra = {
            Xmult = 4
        }
    },

    calculate = function(self, card, context)
        if context.joker_main then
            return {
                Xmult_mod = card.ability.extra.Xmult,
                sound = "onsightkanye",
                message = "ON SIGHT!"
            }
        end
    end,

    check_for_unlock = function(self, args)
        unlock_card(self)
    end,
}```

```Oops! The game crashed:
Thread error (Thread: 0x02453b0028a0)

Could not open file resources/sounds/onsightkanye.ogg. Does not exist. ```
daring fern
novel yarrow
#

Hey there! I'm new to modding Balatro and I wanted to make a test mod just to try the waters, and I wanted to ask something, is there a way to check the value of a discarded card?

chrome widget
novel yarrow
#

Yep!

tiny hemlock
# daring fern Yes, you need your mod prefix.
--- MOD_NAME: BoMod
--- MOD_ID: BoMod
--- MOD_AUTHOR: [BoNoise]
--- MOD_DESCRIPTION: A mod that adds some jokers to the game (my friends profile picture joker, and more)
--- PREFIX: xmpl```
xmpl right? 
>sorry im new to this
daring fern
novel yarrow
chrome widget
tiny hemlock
chrome widget
#

Yeah. There's a page for the formatting on SMODS, Mod Metadata

#

It's very similar, just formatted slightly different

tiny hemlock
#

oh thanks i will do that

wintry solar
chrome widget
#

Ooooooh neat

harsh bobcat
#

How do I i detect if I am in the shop at this current moment?

normal crest
#

if G.STATE == G.STATES.SHOP

harsh bobcat
#

Also if I want to send a message above a card shosen by a pseudorandom elemtemt with the arary G.hand.cards

near heart
#

how can i get a joker to spawn a specific negative & eternal joker

harsh bobcat
#

and is G.deck.cards valid?

normal crest
near heart
#

thank you

normal crest
#

G.deck.cards are the remaining cards in deck tho

#

If you want the full deck use G.playing_cards

harsh bobcat
#

ok

#

I also want to send a message above that card if it is in the hand

#

in return

normal crest
#

you'd do return { message = "hi", message_card = some_card }

#

where some_card is the card you want the message to appear on

harsh bobcat
#

yes

#

thanks :)

lament agate
#

how do you add a seal to a playing card

daring fern
lament agate
daring fern
lament agate
daring fern
lament agate
#

well thanks

harsh bobcat
harsh bobcat
#

I'll have to restart

#

and/or where is the logs

near heart
#

how can i make a multiplicative chips joker? the way i have it set up now is making it not use the current value of chips to multiply by, but instead what it was when it first reached the scoring card, so any chips added between getting to the scoring card and calling 'hand_chips' is unnaccounted for

red flower
near heart
#

oh so it does just exist

#

it didnt show up in the autocomplete so i assumed it wasnt a thing

normal crest
red flower
#

no?

#

first is value second is index

harsh bobcat
#

well that s the crash report

normal crest
harsh bobcat
daring fern
#

That's only for its initial creation.

daring fern
normal crest
#

did you forget to save your code

twilit citrus
#

wait how do I get the deck name? can i just do SMODS.back.key == "keykey"?

harsh bobcat
#

pretty sure i did

#

save it that is

daring fern
normal crest
twilit citrus
harsh bobcat
normal crest
#

can you send the entire calculate function

harsh bobcat
#

yes

normal crest
#

it's G.playing_cards with an s at the end

harsh bobcat
#

aaa

#

its all a blur for me at this point

#

And now only the backfround is rendering until I play the card

normal crest
#

in set_ability pass :set_ability(what you have, nil, true)

daring fern
daring fern
harsh bobcat
#

why did i get instructed to remove ti

normal crest
#

notice the nil

daring fern
harsh bobcat
#

yes yes

#

but when is initial creation

#

wdym

daring fern
normal crest
harsh bobcat
harsh bobcat
#

Also pretty sure the "true" wasn't the problem

normal crest
#

Just try it :set_ability('m_pot_poisonous', nil, true)

harsh bobcat
#

ocay

jolly shadow
#

i conquered ui enough for me

primal robin
#

Thats looks kinda bad

jolly shadow
modern kindle
#

I think you did fine

normal crest
#

it's definitely not something i'd use over the vanilla way

jolly shadow
#

i like it this way because my brain is odd and thats ok

primal robin
#

It's be better to use approach more like React, smth like:

local text = BUI.T({ ... })
local row = BUI.R({ ... attributes }, text)
#

Make types for them

#

etc

jolly shadow
#

not really, this has a lot of the things i dislike abt balatro ui still

#

i like my approach because it makes it readable for me

primal robin
#

It's too bloated

#

It looks like from other engine or smth

#

Not web one (imo best implementation possible)

jolly shadow
primal robin
#

Maybe I'll make own framework at some point, to make balatro UI easier

wooden nexus
#

Anyone have any ideas in how i can do this? (I have to do it for both here and hovering over the deck)

primal robin
#

Check aiko shenanigans

#

It has some implementation

wooden nexus
primal robin
#

for you

wooden nexus
#

oh ok cool

#

Once i get this done, I can do some CRAZY mods

#

btw, i can use photos in UI right?

primal robin
#

Sprite