#💻・modding-dev

1 messages · Page 677 of 1

keen blaze
#

ive been trying to figure out how to get these to stop saying "ERROR" for a bit now and im at kind of a loss at this point, ive tried putting label stuff in my localization file based off of how i see it in the vanillaremade code but that doesnt seem to be working either, im guessing im missing something here ?

red flower
#

why not context.create_shop_card?

#

also there's no Card:in_pool

#

SMODS.add_to_pool is basically that

rapid stag
#

i see girldmDizzy

slim ferry
red flower
#

ah i should add that to the docs

slim ferry
#

and edition labels should be the full edition key with the e_ prefix

#

iirc

keen blaze
#

yeah

#

and putting the 'e_' with the editions doesnt change anything

slim ferry
#

okay but what key did you put in the ConsumableType definition

keen blaze
slim ferry
#

i see

red flower
slim ferry
#

you are actually returning the localization, right?

keen blaze
#

wdym

#

localization for everything else works

slim ferry
#

oh okay

red flower
#

also make sure misc is not nested

keen blaze
#

OH

#

OH YOURE RIGHT

#

ITS NESTED

#

OOPS

keen blaze
#

i am ?

analog slate
#

so... how do i use card_eval_status_text if it exists?

red flower
red flower
rapid stag
#

so i guess it would be better do everything in context.create_shop_card and return a shop_create_flags table if the card that's going to be created was in the previous roll? but in that case... i'm not sure how to structure that. the docs say that the table that comes out will be passed into create_card, but i'm not sure how what a "make any other card that respects current conditions (voucher redeems, joker effects, etc.) that isn't this one" table would look like, given that create_card doesn't support any kind of blacklisting

so i think i would have to mess with the pools dynamically

maybe remove_from_pool on all created cards, keep track of removed items and readd them every reroll? girldmHuh

keen blaze
#

😭 sorry

red flower
#

that has the rarity/mod name/consumable type etc

rapid stag
#

wouldn't that still lead to the collection's consumable page still being called error

keen blaze
#

the thing that says challenge here ?

analog slate
#

so it adds the value before it adds the card and i can tell because the upgrade message

keen blaze
#

bc that works now that i un-nested the misc localization thing

#

(the card type is called "challenge")

rapid stag
#

does your collection page still say error

red flower
keen blaze
red flower
#

(obviously card_was_in_the_previous_roll is something you have to flag somewhere else)

rapid stag
#

this actually kinda makes me want to develop a more generic banning system that looks at a G.GAME.banned_cards table, which would work similarly to how debuff_card does with like sources and stuff to allow for people to more easily develop something like a challenge where every joker you encounter only appears once, and develop it into something that could eventually be PR'd as an smods feature

red flower
#

that would be cool

rapid stag
#

speaking of PRs, i need to test my unlock text one at some point girldmDead

vale zinc
#

One of my Boss Blinds, on Ante 1, gave me something that shouldn't be appearing before Ante 4.

set_blind = function(self, blind, context)
    if not G.GAME.blind.disabled then
        G.GAME.blind:set_blind(G.P_BLINDS[get_new_boss()])
    end
end

Here's the in_pool() function of the offending Blind:

in_pool = function(self, args)
    --[[
    self.config.extra.suits_to_seek = {'Hearts', 'Diamonds'}
    --]]
    for _, suit_to_seek in pairs(self.config.extra.suits_to_seek) do
        for __, playing_card in pairs(G.playing_cards or {}) do
            if playing_card:is_suit(suit_to_seek) then
                return true
            end
        end
    end
    return false
end

Does this override the boss.min consideration?

frosty dock
#

For implementing advanced restrictions on when a Blind may appear in a run. This puts boss.min and boss.max restrictions out of effect.

vale zinc
#

How do I keep 'em in effect?

#

Manually?

frosty dock
#

manually, by comparing G.GAME.round_resets.ante

wintry solar
#

why does in_pool override the min btw

frosty dock
#

I dunno, it probably doesn't need to

#

idr if it was a deliberate choice or just how the code ligned up

wintry solar
#

the branch I have for object weights changes that and also makes max actually work 🙃

frosty dock
#

that's good

vale zinc
frosty dock
wintry solar
# frosty dock that's good

I also settled on having it function as an optional feature so that I didn't need to spend any more time trying to get it to match vanilla spawnings, thoughts on that?

red flower
#

how long until i get into the top 3

frosty dock
#

the order is based on commits

wintry solar
#

only another 270 commits to go N!

frosty dock
#

tbf I've done a bunch of stuff early spread to more than one commit on main

red flower
#

oh speaking of commits i forgot to bump the version yesterday

frosty dock
vale zinc
#

Could you enable it per blind, like with no_collection?

frosty dock
rapid stag
#

why does context.setting_ability not have a before and after of the other card's ability table

wild escarp
#

So, I'm trying to make a blind that sets your money to $0 when the most common suit in your deck is played, but I don't know where to actually put the logic for it so that it updates the most common suit at the appropriate times.

frosty dock
scenic umbra
#

Uh I'm so lost looking at the vanilla remade for ref

#

What is this src folder for

red flower
#

that's the folder with all the code

scenic umbra
#

Wait it doesnt all sit in the main lua?

#

or is that a sort of alt way of doing that

red flower
#

no that would be a nightmare and very much not recommended

scenic umbra
#

well then

red flower
scenic umbra
#

im looking at that lol

#

so rather than cram everything inside the main

#

put them in seperate files inside another folder

red flower
#

you don't need this when you are just starting but if the mod has a couple of objects i would recommend it

scenic umbra
#

This mod will have a lot yes

red flower
#

also it doesn't need to be a src folder, thats just a naming convention i like

scenic umbra
#

what does src mean

red flower
#

source

scenic umbra
#

I prefer that over other namings then

#

cause ik my brain lol

#

but the main.lua will be for what then? setting up the mod and that's it?

#

like instructions for the game essentially

#

to tell it what to do with all the code lol

red flower
#

kinda yeah, the main.lua is treated the same as every other file so you can do stuff there too but i prefer keeping it for loading files

scenic umbra
#

yeah it's nicer

#

okay so i assume there is instructions for how to do all that then?

#

well ig i need to figure out how to make this first jokers description happen in game now lol

red flower
#

: )

scenic umbra
#

alright

#

i shall begin the digging

#

cracking open a ice cold monster while i do it lol

red flower
#

the main vanillaremade repository is also an example

scenic umbra
#

oh ya im using that to understand how everything needs to be framed

#

so for now if i plan to make a new rarity would it be best to make the rarity 4 for legendary as the joker is a variant of a legendary

#

just til i get it working

#

ugh i need to snag someone into a vc to help me break this down in a way i can understand it lmfao

#

is this a yes or no?

#

\localization\en-us is what it's listing

#

okay so the game crashes now so im obv doing something

#

this line is cited but i swear that's right

red flower
#

what does the crash say

scenic umbra
red flower
#

you are missing a bracket in the surrounding lines

#

or a comma

scenic umbra
#

whaaaat

#

in jokers.lua?

red flower
#

yes

scenic umbra
#

comma

#

my bad g

#

well now another crash

#

i have the sprite and for now just using the code from the vanilla remade just so i can at the very least get it into the game

#

i added the assert into the main

#

WAIT

#

I don't have a utils.lua

#

will just removing that bit from the code fix this?

#

like i said i just want to see it in game bare minimum

#

oh wait

#

there's no mention of that in the code

red flower
#

did you make an smods.atlas

scenic umbra
#

like the sprites?

dreamy lodge
red flower
scenic umbra
#

fudge

#

so that is a seperate file from the jokers lua file

red flower
#

it can be in any file as long as it loads first

#

i usually put it in the same file as the jokers

scenic umbra
#

thank you for not getting annoyed btw

#

i ask too many damn questions but it's how i learn

#

so i can put it in the main and be fine?

frosty rampart
#

as long as the atlas comes first, yea

scenic umbra
#

so put it at the top

frosty rampart
#

pretty much ye

scenic umbra
#

key is the name of the file replacing spaces with _ correct?

#

sorry i can read everything six times but until i ask questions in my own way i don't grasp stuff lol

#

ADHD am I right?

frosty rampart
#

no, key is whatever you want, but you have to use that same key whenever you're defining the atlas for a joker
path is the exact name of the file, even if it has spaces

scenic umbra
#

so if for example the key i placed in the joker lua says warpedperkeo

#

then i have to use that

frosty rampart
#

not quite
going by the crash, your joker has atlas = "Warped_Legendary_Jokers" in it. so the key when you create the atlas should be key = "Warped_Legendary_Jokers"

scenic umbra
#

oooooo

#

okay so i had it backwards lol

#

and path is the name of the file

#

actually i can change the key to whatever as long as its the same right?

frosty rampart
#

yes

#

and yea path is the name of the file

scenic umbra
#

alright we're shortening that for sure

#

like dis?

#

I did change it on the others

#

hmmm i hope that's alright cause now it's something else

#

Oh and should i nuke that config file so it doesn't display all that garbo at the bottom

#

this is my entire main, jokers and en-us lua files so far

#

im lost

#

wait

#

the key

#

the key isnt warp anymore is it

lament roost
#

how would i go about debuffing a hand (akin to the psychic) as a stake

scenic umbra
#

AAAA

tall wharf
scenic umbra
#

huh?

#

hang on

#

PrEfIx?

#

Which one lol

#

image

tall wharf
#

it still says xmpl

scenic umbra
#

main?

tall wharf
#

second image yeah

scenic umbra
#

ohhhh the one with the commented header

#

thats my joker lua lol

#

so like nuke it?

tall wharf
#

do you have any json file already

scenic umbra
#

omg im an idiot

#

nvm

#

this

tall wharf
#

yeah you should remove the header then

scenic umbra
#

i had no idea that would mess with the code

#

i though comments were harmless lol

#

I think I'm lost

#

I removed the commented header (The one in green)

#

Is that what you meant?

#

(Also thank you Aiko for helping a dum dum)

#

im kinda taking this in stages lol

#

tomorrow i learn how to do the effect so it's not just joker lol

#

but rn i just wanna see him in game 😭

inner terrace
#

Hmm
A joker with a custom calculate is causing a crash when losing a run if it's in the joker area
It's a "calculate on table extra" crash which is weird

dreamy lodge
#

How do I make custom music play during the payout screen after beating a blind? I know how to make music just don't know how to check for that

inner terrace
#

Zokers is there to be able to grab jokers to test, but I can confirm it's not causing the issue - it occurs regardless

inner terrace
frosty rampart
#

it won't help the crash but you can use debugplus to spawn jokers at will instead, zokers is pretty outdated afaik

inner terrace
#

Oh! I wasn't aware that was part of its utilities, I'll check it out, thanks! might save me some other issues down the line

red flower
#

the easiest want to fix it is to give it another name like name = "modprefix_popcorn"

inner terrace
#

This is taking ownership of the original, I thought that was supposed to overwrite it

red flower
#

it overwrites its SMODS.Joker.calculate function but vanilla jokers don't have those and are hardcoded

inner terrace
#

Oh, I see. I had a similar issue with a different joker, where I had to have extra as a value, and use a different variable to store mine - I tried to do that here by renaming it to extran for the table, but yeah that hasn't worked either

red flower
#

because there you are overwriting its config table lol

inner terrace
#

for reference, I did a similar thing with credit_card, and that one works without a crash - If I do the same here, with extra = 0 in front, and renaming extran.extra to something else, it seems to still face the same issue
(I think there's a high chance I'm just not understanding something yet)

red flower
#

like i said, the easiest way is to give them another name

frosty rampart
#

there's vanilla code that runs the vanilla behavior of jokers regardless of what the joker's calculate function is, but it checks for the joker's name (different from key). if you change the name of the joker when you take ownership, it will stop running the vanilla behavior

inner terrace
#

OH

rapid stag
red flower
#

yeah

inner terrace
#

Ohhh, I get it now, I hadn't realized that was one of the uses for the name field, thank you!

red flower
#

well, it's not an intended use

#

more like a hack

rapid stag
#

@frosty rampart?

daring fern
frosty rampart
#

as N said, it's a bit of a hack, and i prefer changing the name field because making your joker always count as triggering means it can mess with some other mods (e.g. Ready To Fly in Paperback)
so yea what Somethingcom said

rapid stag
#

oh girldmDead

red flower
#

the proper way is to return nil, true but just in the vanilla context

#

but the name is better honestly

rapid stag
#

...i should probably change that girldmHuh

so name field is...

red flower
#

i will port vanillaremade to smods

rapid stag
#

what even is the name field

red flower
#

name = "something"

rapid stag
#

it's not loc_txt.name, surely

red flower
#

no

rapid stag
#

oh literally a name property

#

i was gonna ask if that changes the discovered state if you'd already discovered it beforehand, but it has that same key, so it should be fine

frosty rampart
#

yea literally a name in the table, same as atlas or whatever

scenic umbra
#

I did it

round lion
rapid stag
#

...hm.

when hooking this, how do i get to the object's key from prototype_obj? i'm aware that this is typically self, but i'm like... is it self.key? girldmHuh

#

wait, yes it is, i'm stupid. i literally just did this with my weird create_mod_badges madness which also receives self as obj

#

...oh. that's actually much simpler than i thought.

i think i'll write the PR now, actually. as i flesh this idea out, it actually sounds kinda stupid. i'll hold onto it for now, but

scenic umbra
rapid stag
#

remind me how i do queue.stack() and queue.pop() in lua again girldmDead

scenic umbra
#

Whoops

hoary spear
#

Is there a way to hide all vanilla content without taking ownership or something like that?

#

Like, jokers, consumables, boss blinds, skip tags, everything

sturdy compass
#

You can hook SMODS.add_to_pool and remove anything that isn't from a mod

hoary spear
#

Would that hide from collection?

sturdy compass
#

no

hoary spear
#

Is there a way to do that?

sturdy compass
#

not an easy way off the top of my head

hoary spear
#

Basically; im just making a vanilla rebalance mid, but take_ownership is causing bugs for stuff

#

So i was thinking i could just, remake it all, but hude the base game stuff

daring fern
hoary spear
#

Would this be in my main .lua i assume?

#

And if so, where in that?

frosty rampart
#

anywhere you want, as long as the code runs
(i.e. not inside a joker definition or anything)

hoary spear
#

So inside my main .lua file works then?

#

Just at the top should be fine right?

frosty rampart
#

yea

hoary spear
#

Okay cool

#

Then i should be able to just use something like vanilla remade as a base for ut then right?

#

Oh and apologies if these sound like dumb questions

frosty rampart
#

no worries lol, we all start somewhere
yea you should be able to use vanillaremade from there

daring fern
hoary spear
#

Its so funny to me that i can be making some weird stuff like draft deck in my mod, but cant just figure out something basic

hoary spear
#

In some cases (mostly boss blinds and a few others)

#

It ran both

daring fern
hoary spear
#

Cause that i havent tested yet

daring fern
hoary spear
#

Ahhh

#

Noted

#

Okay, i will try that as well

#

Which should i try first.

#

?

#

Probably just the adding mod name right

daring fern
hoary spear
#

Cool

#

Then ill try what you gave

#

And if neither works well or i need help ill be back

#

Sometime tomorrow though, i am done for today, it's almost 11:30

#

It becomes quite annoying being able to figure out the complicated stuff easily but not the easy stuff period lol

#

Again, thank y'all for the help :)

vocal helm
#

Real quick, how would I localize a consumable type? I.e. localize("spectral") -> "Spectral"

#

I guess this would count as a center

daring fern
vocal helm
#

thanks!

vital wren
#

is there a way for a joker calculation to return a chips or mult value without it generating the ui notification?

vital wren
#

cool, will that still update the hand score ui and just not give the lil popup?

vital wren
#

perfection. thanks <3

vital wren
#

im having an issue when setting a playing card's enhancement from m_stone to other enhancements where the card's front (rank and suit) doesn't appear. is there some kind of update front function i should run?

bold sleet
#

Hey chat, is there a simple way to just turn a card into another, rank, suit, enhancement, etc included?

vital wren
#

i have code for that. are you copying it from another card?

bold sleet
#

Yes.

vital wren
#

one moment

bold sleet
#

Just make a playing card become another playing card.

vital wren
#

fully copying all aspects or just select aspects?

bold sleet
#

Probably everything.

#

Though if you have code for either of the situations, that might come in handy later on.

vital wren
#

the full card is just what the death tarot does. but i also have the others. ill drop you a code snippet

bold sleet
#

k

bold sleet
vital wren
bold sleet
#

k ty

vital wren
#

oh, im using get_rank_suffix there which looks like this:

function get_rank_suffix(_id)
    local _rank = 'A'
    if _id < 10 then _rank = tostring(_id)
    elseif _id == 10 then _rank = 'T'
    elseif _id == 11 then _rank = 'J'
    elseif _id == 12 then _rank = 'Q'
    elseif _id == 13 then _rank = 'K'
    elseif _id == 14 then _rank = 'A'
    end
    return _rank
end```
daring fern
vital wren
#

okay

#

thanks

vital wren
daring fern
vital wren
#

understood

feral storm
#

attempt to index field 'T' (a nil value) ante

vital wren
#

where is the code that generates this entire text block? i need to make it not still show the base card's chip value

wild patrol
#

is there away to debug a custom boss blind?

#

instead of just hoping it randomly shows up

daring fern
wild patrol
#

👍

wanton jolt
vital wren
#

im changing stone with take ownership

wanton jolt
#

yeah normally it shouldn't have base chip

vital wren
#

ive managed to get it to not display the nominal. im currently trying to get it to correctly reset its front when converted from stone to another enhancement

#

for some reason, using set_ability to apply a new enhancement after my custom m_stone leaves the card without a visible front (though it functions normally). so i'm hooking set_ability to reset the front if the card goes from m_stone to anything else

wanton jolt
vital wren
#

would seem so

#

it's also not corrently resetting card.ability.bonus so im doing that in the same hook

wanton jolt
vital wren
#

okay, i believe i have it fixed now. seems to function as intended

wanton jolt
#

okay

vital wren
#

in that video being referenced, it looks like delay_sprite is set to true so the card fronts are being removed before the center is updated visually. but yeah, the stone cards have some stuff going on that i cant find the code for in the vanilla code. like i'm not sure where it's setting the card's nominal to 0 or back to normal when the vanilla The Tower is used

flint spindle
#

What is the easiest way to destroy a random card in the deck that I can put in a joker calculate function

vital wren
#

something like SMODS.destroy(pseudorandom_element(G.playing_cards)). will look for that in the wiki quick

daring fern
vital wren
#

yeah that

wanton jolt
#

How do i make a consumable open a set booster on use? even if already inside a booster

vital wren
daring fern
wanton jolt
frosty dock
wild patrol
#

I have unlock set to true

#

but the custom boss blind is still locked

vital wren
#

hover and press 2

wild patrol
#

it worked but is there anyway to have it unlocked by default

#

like jokers

vital wren
#

unsure, sorry

wanton jolt
#

have you tried discovered = true,

wild patrol
#

how to u lock the boss blind lol

#

so I can see if that works

wanton jolt
#

unlocked = true,
discovered = true,

daring fern
daring fern
# wanton jolt bump

Yes, you would have to do a lot of work to save the other booster pack's state to return to it after closing the booster pack.

wanton jolt
#

and for the other way?

vital wren
#

it's a bit odd, but i do it by just making a tag that triggers after the first booster closes

wanton jolt
#

oh true i could make a tag

daring fern
vital wren
#

that's smart

wanton jolt
#

the tag would be more versatile, as i could just use it too

timid zinc
#

is there a way to have a function run near boot but not TOO early (as in, all mod objects have loaded and G exists)

wanton jolt
#

thank you all

timid zinc
#

thank you

wild patrol
#

well it's a start

#

grammar bad just to rush it

wanton jolt
#

logo is sweet

wild patrol
#

wasn't done by me was done by a friend

#

They are pretty good at pixel art

vital wren
#

the twitch purple background is a nice touch

wild patrol
#

now that I did

#

took me forever to figure it out

#

looked at how the cardsauce mod did it

#

still don't know how exactly cardsauce did it but I got the general idea

analog geode
#

hey all, looking for a bit of help getting this joker ready. The effect of the joker is that it duplicates any tags earnt through skipping a blind. Ive tried a couple implementations and none of them have worked. My current one which has gotten me furthest is this:

        if context.skip_blind then
            G.E_MANAGER:add_event(Event({
                func = (function()
                    add_tag(Tag(G.GAME.round_resets.blind_tags["Small"]))
                    play_sound('generic1', 0.9 + math.random() * 0.1, 0.8)
                    play_sound('holo1', 1.2 + math.random() * 0.1, 0.4)
                    return true
                end)
            }))
            return nil, true -- This is for Joker retrigger purposes
        end
    end```
which works as you'd expect. when a tag is earnt from skipping, whatever the tag on the Small blind is duplicated. but when i try and replace "Small" with G.GAME.blind to make it sense what blind you're currently on, it doesnt work (i imagine G.GAME.blind is a numeral value or something other than the "Small/Big" that G.GAME.round_resets.blind.tags wants). Any ideas on a fix or an alternate method to get the same effect?
analog geode
#

just tested, blind_on_deck is already the one you're hovering over, so when you skip a small blind you get the big blind tag, and when you skip big blind the game crashes

daring fern
analog geode
# daring fern Do `local blind_on_deck = G.GAME.blind_on_deck` outside of the event and use tha...
        if context.skip_blind then
            local blind_on_deck = G.GAME.blind_on_deck
            G.E_MANAGER:add_event(Event({
                func = (function()
                    add_tag(Tag(G.GAME.round_resets.blind_tags[blind_on_deck]))
                    play_sound('generic1', 0.9 + math.random() * 0.1, 0.8)
                    play_sound('holo1', 1.2 + math.random() * 0.1, 0.4)
                    return true
                end)
            }))
            return nil, true -- This is for Joker retrigger purposes
        end
    end```
this? its having the same issue
daring fern
analog geode
rigid solar
#

I have 2 different music tracks that are supposed to be sync'd, but when I go from one to the other it starts from... well the start
anyone knows what could the issue be? 🤔

#

oh i needed to put my mod's key before the name in sync, duuh

daring fern
fading rivet
#

How can I change the text of a UI element?

#

im trying to change the .config.text of the element when its grabbed from get_UIE_by_ID but its not working

red flower
#

the easiest is just to patch the element to use ref_table

fading rivet
#

cuase I need some way I can differentiate between safe and unchecked cells

red flower
twilit hearth
#

critique my new legendary

wanton jolt
#

a new ouro to the pile

twilit hearth
#

new and unique concept ofc

fading rivet
#

Is there a way I could disable the movement on a button?

vale zinc
next timber
wanton jolt
#

lmaooo

next timber
#

ok i stole some code from sealsoneverything to make a joker that makes all editioned cards count as negative.. i can tell it is registering the cards as being quantum negative. but its not actually doing anything with them. the eval is spitting out an empty table

#

and i dont know why

wanton jolt
#

they just count as negative in terms of scoring

next timber
#

ugh

wanton jolt
#

thats what quantum does

#

as far as i'm aware

#

if you want to give cards the negative perk in extra you could probably just increase the joker slot by 1 or reduce its size to 0

next timber
#

what

wanton jolt
#

or something

#

idk

next timber
#

this is meant to be working on playing cards i should mention

wanton jolt
#

oh lol

next timber
#

ok im certain theres at least 1 or 2 mods with jokers that make certain playing cards act as negatives. does anyone know of any so i can go and raid their code

pastel kernel
#

it's this```lua
local function count_mod()
seen = {}
for _, c in ipairs(G.playing_cards) do
local ed = c.edition and c.edition.key
local seal = c:get_seal()
local enh = (SMODS.get_enhancements(c))
if ed then seen[ed] = true end
if seal then seen[seal] = true end
for key in pairs(enh) do seen[key] = true end
end
local mods = 0
for _, mod in pairs(seen) do
if mod then mods = mods + 1 end
end
return mods
end

#

Idk how to fix this

frosty rampart
#

ipairs(G.playing_cards or {})

#

G.playing_cards doesn't exist if you're not in a run

#

with my fix, if G.playing_cards is nil, it'll pick the empty table instead and just skip over the for loop

pastel kernel
#

Thank you

pastel kernel
#

does emult follow the convention of "just keep it there and let SMODS do the rest" or do i have to manually make it calculate

frosty rampart
#

if your mod depends on amulet or spectrallib, you can treat it just like xmult. if it's standalone, you'll have to implement it yourself

frosty rampart
#

then yes, emult should work fine without any extra work on your end

pastel kernel
#

i'm trying to make an enhancement that, when played 3 times in the same ante, it self destructs.

#

actually i think i'll change that to "destroyed when discarded"

wanton jolt
#

can i set multiple different enhancements as an enhancement_gate?

#

OR logic operator preferably

#

nvm

small walrus
#

is there a tutorial for making face card mods?

twilit hearth
#

1s

rapid stag
frosty rampart
rapid stag
#

oh, i figured they might be referring to things that do stuff with Card:is_face()

small walrus
rapid stag
#

that link on deckskins is what you're looking for, then

wanton jolt
calm marten
#

i always thought attaching conditions is gonna be way too difficult but as long as it isnt something very complex,
appearently its not that hard.

royal comet
calm marten
noble ore
#

I AM SO SO SORRY 😭

#

i didn't know i got hacked

tranquil echo
#

LOLL WHAT HAPPENED

tranquil echo
noble ore
#

actually it was two thing

#

i was making a bot and then i got hacked

#

-_-

tranquil echo
#

oopsies

noble ore
#

thank you mods for not banning me 🥺

jade snow
#

do any of you guys use BMM (mod manager)? doesnt seem to work so im assuming i just need to go back to the regular mod strat (when my account is unhacked)

red flower
#

just use imm

pastel kernel
#

how do i make it so that after it stole enhancements, it removes them during scoring and replaces them with bloodmarked after scoring```lua
--stole some stuff from ascensio
calculate = function(self, card, context)
if (context.before and not context.blueprint) or context.forcetrigger then
local scalar = 0

        for _, card in ipairs(context.scoring_hand) do
            if next(SMODS.get_enhancements(card)) and not card.debuff and not card.vampired then
                scalar = scalar + 1
                card.vampired = true
                card:set_ability("c_base", nil, true)
                G.E_MANAGER:add_event(Event({
                    func = function()
                        card:juice_up()
                        card.vampired = nil
                        return true
                    end,
                }))
            end
        end
        SMODS.scale_card(card, {
                ref_table = card.ability.extra,
                ref_value = "eemult",
                scalar_value = "gain",
                scalar_table = { gain = scalar * card.ability.extra.eemult_gain },
            })
    end
    if context.joker_main or context.forcetrigger then
        return { eemult = card.ability.extra.eemult }
    end
end,```
rapid stag
lyric wadi
#

where should i hook if i wanna mess with rarity badge

#

is there a smods function i can use or do i just have to dive into source code

red flower
lyric wadi
#

just specific one

red flower
#

there's also badge_colour, badge_text_colour if you just want to change the colors

lyric wadi
red flower
#

idk if theres anything closer

rapid stag
#

oh, table.remove returns the value removed?

red flower
#

yes iirc

lyric wadi
#
set_card_type_badge = function(self, card, badges)
        G.E_MANAGER:add_event(Event({
            blockable = false,
            func = function()
                if not card.ability then       
                elseif card.ability and card.ability.extra.disguisingAs then 
                    badges[#badges+1] = create_badge(({localize('k_common'), localize('k_uncommon'), localize('k_rare'), localize('k_legendary')})[G.P_CENTERS[card.ability.extra.disguisingAs].rarity], G.C.RARITY[card.ability.extra.disguisingAs].rarity)
                elseif card.ability and card.ability.extra.failure then
                    badges[#badges+1] = create_badge('IMPOSTEROUS', HEX('FF00FF'))
                end 
                return true
            end
        }))
    end
``` does this look somewhat correct
red flower
#

you shouldnt use an event, the card will have an ability table when this function runs

lyric wadi
#

ok sorgy

#

i've been burth too many times by this

#

wait so does this not run in collection

red flower
#

they have an ability table in the collection

lyric wadi
#

:0

red flower
#

an event will just make it not show up

analog slate
#

how do i make code that adds a RANDOM joker to your deck>

sturdy compass
#

SMODS.add_card({set = 'Joker'})

#

Easy as that

analog slate
#

ohh ok

#

does it make a random one?

red flower
sturdy compass
#

yes it is random

analog slate
#

alr thx

#

one question

#

HOW THE HELL DOES ANY ONE OF YOU UNDERSTAND THIS WITHOUT GOOGLE
I CANT FIND ANYTHING THAT FALLS UNDER THIS AND RELY ON SMARTER PEOPLE THAN ME ON A DISCORD SERVER

sturdy compass
#

That's exactly why I'm making a video guide right now lmao

red flower
#

have you checked the link i sent

sturdy compass
#

Also VanillaRemade is a fantastic resource

lyric wadi
#

heck

#
set_card_type_badge = function(self, card, badges)
        G.E_MANAGER:add_event(Event({
            blockable = false,
            func = function()
                if not card.ability then
                elseif card.ability and card.ability.extra.failure then
                    badges[#badges+1] = create_badge('IMPOSTEROUS', HEX('FF00FF'))       
                elseif card.ability and card.ability.extra.disguisingAs then 
                    badges[#badges+1] = create_badge(({localize('k_common'), localize('k_uncommon'), localize('k_rare'), localize('k_legendary')})[G.P_CENTERS[card.ability.extra.disguisingAs].rarity], G.C.RARITY[card.ability.extra.disguisingAs].rarity)
                end 
                return true
            end
        }))
    end

677 is the one that does the rarity badge, i cant tell which one is returning nil

frosty dock
#

you shouldn't use an event

lyric wadi
#

nvm i think i see it now

#

there's a lot of indexing going on it's tripping me up

frosty dock
#

as for the actual crash, the line where the rarity badges are created is messed up in terms of brackets

analog slate
red flower
#

you are missing a comma after they key

analog slate
#

oh damn

#

wow im so fucking stupid lols

red flower
#

also you should have a context check in that calculate function

#

or it will add a million jokers

sturdy compass
#

smods 1502e is crazy work lol

red flower
frosty dock
analog slate
#

also whats the thing so that only one of said card can be in your deck

red flower
#

SMODS.add_card does that by default, it only spawns multiple if showman is present

analog slate
#

no its more like uhhh lemme give you an example
if i have one "Kindness luigi" card, the shop shouldnt be able to sell me another

red flower
#

yes, the game does that by default too

#

unless you have showman

analog slate
#

whats that

sturdy compass
analog slate
#

cuz like i saw a copy of my card show up in shop even after i bought it

tidal hemlock
red flower
#
Balatro Wiki

Showman is an Uncommon Effect Joker that removes the restriction on Jokers, Planet Cards, Tarot Cards and Spectral Cards from appearing when already in the player's possession. This can lead to multiple copies of the same card appearing in Booster Packs or the Shop, or allow card generators such as Riff-Raff (When [[Blind|{{hl|orange|Blind}}]] ...

red flower
analog slate
#

granted i did hack it in but still

analog slate
tidal hemlock
#

oh yeah if you hack in it, the clone clause breaks

analog slate
#

OH

#

mb

sturdy compass
#

Nah that's a fair worry lol

tidal hemlock
#

i've seen this convo so many times, there should just be a billboard of faqs with this being one of them

sturdy compass
#

fr

frosty rampart
#

really what should happen is debugplus should fix it

sturdy compass
#

that or wilson should fix it miyalolto

#

brainwave

analog slate
#

does this theoretically work?

red flower
#

i think it might be a base debig bug that debugplus didn't touch

red flower
frosty rampart
#

^

sturdy compass
#

Was just about to say that

red flower
#

ah wait

analog slate
#

just makes it easier

sturdy compass
#

nope

red flower
#

rarity = 3 will work but it's not the way to use rarities there because it doesn't follow the standard 1,2,3,4

#

use rarity = "Rare"

analog slate
#

alright

sturdy compass
red flower
#

also returns makes it so other cards can detect if it triggers

sturdy compass
#

I had a feeling that was the case I just wasn't 100% sure on it

analog slate
#

random question: whats the code for the credit card

sturdy compass
sturdy compass
#

please use VanillaRemade as a reference it is fantastic

#

as if the three links we've posted to it already weren't enough of an indicator

red flower
#

i am only posting links to it because it fills my ego

analog slate
#

but like what if i want my card to have a 40 percent chance of giving a common joker (cuz some common jokers like raised fist are really good) and a 60 percent chance of gettin a rare

sturdy compass
#

I believe rarity is observed when making a random joker

analog slate
#

i know how math.random works i played roblox

analog slate
sturdy compass
#

I mean if you remove the rarity flag

analog slate
#

true..

red flower
#

don't use math.random for gameplay because it doesn't take the seed into account, but pseudorandom works similarly

wanton jolt
#

i have a weighted pool function i love weighted pools

#

i love weighted pools

sturdy compass
#

weighted pools are about to be a smods thing sooo

red flower
analog slate
wanton jolt
#

its fine i already have my function

red flower
analog slate
#

FALSE

wanton jolt
red flower
#

no I didnt mean what boolean means lmao

#

i meant to ask what you thought was a boolean there

analog slate
#

ohhhh

wanton jolt
#

akso yeah it outputs a number not a bool

analog slate
#

like adding 3 = 3 is a boolean so adding extra things like > 0.4 and rare or common fits the boolean

wanton jolt
#

no

analog slate
#

looks so goofy in the code i love it

wanton jolt
#

3 = 3 is a condition

red flower
#

number > number is a boolean but then that expression it gets evaluated into a string

wanton jolt
#

not a variable

red flower
#

a and b or c gives b when a is true or c if it's false

idle plaza
analog slate
wanton jolt
#

i put my weights in the same pools i use to build my cards

#

and then i call the pool to do weighted pick

#

soemwhere else

#

yay

rough furnace
#

I actually don't know why it even happens (I never looked into it)

analog slate
#

CAN THIS WORK or do i need to write tarot a different way

rough furnace
#

try it and see

analog slate
#

oh ok :D

#

does vanillaremade have a thing on colored text

rough furnace
#

Is this still happening for you? If so, dos it happen if DebugPlus is the only mod (it doesn't need steamodded)? What is your lovely and DebugPlus version?

sturdy compass
sturdy compass
#

👌

flint spindle
#

I'm modifying superposition to give a planet card as well, but creating the different messages in sync with the consumeables being made is annoying. Putting them in the return of the calculate function makes the messages appear at the same time, and when I try to do them separately like this, they don't even play. what do I do

wanton jolt
#

it has my blood in there

analog slate
wanton jolt
#

c:purple works

#

c:tarot too

#

you can make ur own color too

analog slate
#

ohhh like color codes like c:#00ff00

wanton jolt
#

u have to define it solewhere

wanton jolt
#

it has to be either passed as a loc variable or defined globally

analog slate
#

ohhhh

rapid stag
idle plaza
wanton jolt
#

for example you could in your joker loc vars

return
 {
 vars= { colours = {HEX('222222')}}
}

*code might not ne exact im on phone

and in your loc description you would use B or V for background or text color respect.
like {B:1,C:white}Hello{}

frosty dock
wanton jolt
#

or define it globally as told in the vanillaremade wiki

flint spindle
#

I see

#

tytyty

wanton jolt
#

aure cat smod cat

median veldt
rough furnace
#

oh

#

that makes sense

frosty dock
wanton jolt
#

cool

frosty dock
#

very yes. much cool

wanton jolt
#

yes

flint spindle
#

ok I did this and it didn't work so I'm assuming I did something wrong

frosty rampart
#

it should be SMODS.calculate_effect, not SMODS.calculate_context

flint spindle
#

whoopsie

hoary spear
daring fern
hoary spear
#

well

#

okay yea

hoary spear
daring fern
hoary spear
#

oki, i shall uh

#

go add that to everything

#

then test

hoary spear
long sun
#

how do i add an edition to the playing card pool? is it "Default", "Enhanced" or "Playing Card"?

red flower
#

like a random edition when you create the card?

long sun
#

i'm editing Waxed, and i'd like it to only appear on playing cards

red flower
#

ah, i dont even know if editions have an option for that

frosty rampart
#

paperback does some kinda weird stuff to lock dichrome to jokers only, it piggybacks off the argument in poll_edition that removes negative from the pool and assumes that only jokers would ever want natural negatives

#

to make it playing cards only you can probably do the inverse of that, hook poll_edition and just remove waxed from the pool for the duration of the function call if the edition pool allows for negatives (since only jokers want that, and consumables don't poll for edition at all)
but that might have some weird edge cases with crossmod of course

long sun
#

hmm i see

#

i'll give that a go, thanks!

frosty rampart
#

here's how dichrome does it, you'd just check if not _no_neg instead

ripe charm
#

How good is Joker Forge? I'm building a mod, and although I do know a good amount of Lua code I am trying to do the bulk of the mode in Joker Forge then edit or add stuff afterwards that I can't do there.

frosty rampart
#

jokerforge is fine for simpler projects, but you are going to be much better off coding from scratch than editing jokerforge output

analog slate
#

i know im missing a comma but i dont know where

ripe charm
#

I have always (strangely) felt like a better coder when editing preexisting files or projects, sometimes that empty code area makes me not know where to start

frosty rampart
ripe charm
analog slate
frosty rampart
analog slate
#

how do i set up the sound tho im trying to set up glenn quagmire sound but it doesnt exist or i dont know how to make it exist

ripe charm
frosty rampart
ripe charm
#

I didn't know code worked without it, and I have known the language for half a decade ;-;

frosty rampart
#

ok well the key is glennn with 3 Ns, so that's part of the issue, but also what's your mod's prefix? it needs to be play_sound("modprefix_soundkey") because it's just a function call, so it doesn't know what mod the sound is from automatically

analog slate
#

oh like EpicerMod_glennn

ripe charm
frosty rampart
#

ye

frosty rampart
ripe charm
#

advanced tech, that's insane

#

I may have to do that

analog slate
#

but how do i install cryptid

ripe charm
frosty rampart
# analog slate

ok so it would be play_sound("epicerMod_glennn") then
(capitalization matters, and your prefix has a lowercase e at the start)

analog slate
#

ohhhh ok

#

it still doesnt work as i think it needs an atlas

frosty rampart
#

ok that one's strange, because from the screenshot you should have the atlas already

analog slate
#

definitely

frosty rampart
#

oh do you actually have glenquagmire.png in both the 1x and 2x folders in your assets folder?

#

with specifically that filename

analog slate
#

no its in a seperate folder titled sounds i think that could be a problem but yahimod does the same thing and doesnt specify where the file is and it works

ripe charm
#

is there a recommended development studio for this? I could get away with Notepad++ but if there's something better I'd like to hear it, all of my Lua experience is in Roblox from when I used to mass produce low quality slop games with my friends a few years back during covid (literally had nothing else to do) so if I seem like a noob I kinda am to this side of Lua

frosty rampart
frosty rampart
analog slate
frosty rampart
#

ok yea make it match in the atlas

analog slate
#

mb

#

i thought i wrote it as glenquagmire and not glennquagmire

#

cant use ogg lols

#

do i have to use wavs?

frosty rampart
#

ogg should be fine

analog slate
#

it crashed

frosty rampart
#

post the crash then

analog slate
frosty rampart
#

ok this is just an issue with the audio file, not with it being an ogg in general
run it through some converter to convert it to wav and then back to ogg and it should be fine lol

#

(or you can just leave it as .wav, that should be supported too)

ripe charm
#

So I think I might code from scratch, I want my mod to be massive and unbalanced which I can't really do with Joker Forge easily, I made a tetration joker with it which just did XMult equal to current mult twice successively but I think it could be easier coding from scratch

ripe charm
analog slate
ripe charm
#

(website)

frosty rampart
hoary spear
primal robin
#

I added fucking CSS to Balatro

analog slate
#

ok so just grab it, convert it to wav and then ogg

frosty rampart
#

ye

hoary spear
hoary spear
analog slate
#

it plays once but i want it everytime a card is played

#

and it lagged the game

daring fern
ripe charm
#

Where is the best place to figure out where to start my mod? I don't need Lua tutorials (good amount of experience) but I have so far only edited Joker Forge projects

sturdy compass
ripe charm
#

I have a name for my mod already, "Eris" and the description will be "An out-of-this-world, horrifically imbalanced Balatro mod"

ripe charm
red flower
rapid stag
#

fine, i will switch from notepad++

frosty dock
#

notepad++ != notepad

#

it's workable if that's what you're into, whereas notepad... isn't

frosty dock
primal robin
#

What exactly? Performance? Maybe

hoary spear
primal robin
#

I optimized it as I can, shouldnt be that bad

analog slate
#

it doesnt play

frosty dock
primal robin
#

I was implementing different format for balala UI first, which is looks like this

daring fern
primal robin
#

As a part of it, I implemented classes, and during discussion was some mentions that classes may be part of smods

analog slate
frosty dock
#

if performance winds up being an issue, I could see this being an optional feature

#

well, a soft-optional feature would do as it's tied to a class

primal robin
#

shouldnt be a big deal, I implemented various things to minimize performance issues

#

Specifically, caching

daring fern
primal robin
#

But again, is niche thing worth performance? Not sure tbf

frosty dock
analog slate
daring fern
frosty dock
analog slate
#

if i put it in return the message goes on the card played and not the joker

analog slate
#

i dont want that

frosty dock
daring fern
analog slate
primal robin
red flower
# analog slate but why

the reason is because the sound in a return only replaces the sound a message makes so you need a message as well

analog slate
#

putting all the code made quagmire useless

frosty dock
analog slate
#

is this like right?

frosty dock
#

you still need the message

analog slate
#

its message_card tho right?

frosty dock
#

Also what's that message_card

analog slate
#

this

frosty dock
#

card, not some string

#

and there needs to be a message, for the reasons N' explained

primal robin
red flower
#

i think if it adds some more predefined classes it would be very neat, and other devs could contribute more templates to it

primal robin
#

Especially when it's optional thing, you can do UI as usual too, just like everyone else

frosty dock
#

especially if it has a lot of templates, I can see this being liked by at least some modders

primal robin
#

I see some places for elements which applying localized text for sure

analog slate
#

whats the code for context if blinds selected?

red flower
#

context.setting_blind

analog slate
#

oh ok

#

so hands is the thing of how many cards you hold, and hand is how many cards/ rounds you play

#

so how do i write them

versed swan
red flower
versed swan
analog slate
frosty dock
analog slate
#

as like how do change hand size and how many hands

red flower
analog slate
red flower
#

if the size of G.hand is 1 then yes

analog slate
#

so how much to only have like 4 cards

red flower
#

G.hand:change_size(-G.hand.config.card_limit+4)

analog slate
#

also on the topic of context.setting_blind can this be used as a boolean of sorts

red flower
#

it is a boolean im pretty sure

#

well true or nil

frosty dock
#

that's basically a boolean

analog slate
#

ohhh ok thx

frosty dock
#

I prefer ternary logic though: true, false or nil

red flower
#

the blind is being set
the blind is not being set
the blind is maybe being set

analog slate
#

ohhhhhhh, also can i theoretically change joker slots to just 2

red flower
#

yes, it's the same code but G.jokers instead of G.hand

analog slate
#

ohhh okie

random basin
#

how do I pull the rarity of a joker card object?
for context G.E_MANAGER:add_event(Event({ func = function() G.GAME.joker_buffer = 0 card:juice_up(0.8, 0.8) sliced_card:start_dissolve({ HEX("57ecab") }, nil, 1.6) play_sound('slice1', 0.96 + math.random() * 0.08) SMODS.add_card { set = 'Joker', rarity = --sliced_card's rarity goes here } return true end }))

analog slate
#

but is it g.jokerslots? i thought i saw that exist

red flower
analog slate
#

G.jokers:change_size(2)?

red flower
#

or do you mean something else

random basin
#

I mean taking the value of the rarity from the removed joker

red flower
#

ah
sliced_card.config.center.rarity

random basin
#

I think it's sliced_card.config.center.rarity

#

oh lmao

primal robin
daring fern
# random basin oh lmao

Yes, but you would have to do ({'Common', 'Uncommon', 'Rare', 'Legendary'})[sliced_card.config.center.rarity] or sliced_card.config.center.rarity

random basin
#

cool that works

analog slate
#

even though ive been pretty much going to see how long i could go without help, it seems that every new atlas isnt working now

versed swan
# primal robin I see the vision but a bit too far from initial balala system, also requiring n ...

Yeah I'm aware it's very distant from UIBoxDef, I'd say that design choice is intentional because I don't really like how UIBoxDef lumps behavioral attributes with visual attributes

As for the second point, mainly did that so I don't have to use keys which I find to be noisy in code - but I could always revise the module to include keys for those two (though it's not within my interests atm)

analog slate
#

OH NVM

#

know i need to know the color for yellow

#

oh w8 its gol

#

uhh since context.setting_blind can be a nil it crashed the game

rapid stag
ripe charm
#

Before I code too much towards my mod just for it to have conflicts with another, would prefix "eris" be taken already? (If so I can just think of another)

sturdy compass
red flower
#

probably something else is crashing

red flower
rapid stag
#

how would i implement a joker effect that increases the rates of hidden legendary consumables (i.e. the soul and anything else with soul_rate) while you have it?

sturdy compass
# analog slate yea

You can def get away with doing this but you’ll end up with a ton of tech debt

ripe charm
red flower
analog slate
red flower
red flower
red flower
# analog slate

ah i see
you forgot to put a number on G.jokers:change_size

analog slate
#

oh i did lol

wild patrol
#

wip but the template is there

vale zinc
#

Can anyone say why these hover-tooltips don't show? Here's the localization data:

ch_c_LAPSEMS_den_of_shadows = {"All Boss Blinds are {C:attention,T:bl_lapsems_mask}The Mask{} or {C:attention,T:bl_lapsems_final_cloak}Chromatic Cloak{}"},
analog slate
#

so how do i get the discards and change it

vale zinc
analog slate
vale zinc
#

Sets 'em to 1. Now, anyone got any pointers for what I messaged a minute ago?

analog slate
#

ohhh

analog slate
#

ok so know i need it so the player can only play one hand..

vale zinc
#

So, is this just a souped-up version of The Needle?

analog slate
vale zinc
analog slate
#

i just wanted to make a goofy challenge card

sturdy compass
#

I don't believe Blinds have hover tooltips

analog slate
analog slate
vale zinc
#

Yes, that's what I was going off of!

analog slate
#

is it like this

sturdy compass
#

So no blinds

vale zinc
#

There's no way to include G.P_BLINDS in that selection?

analog slate
#

is it possible to restart balatro? i keep adding things to my mod and i wanna test it out but i have to restart it every time

sturdy compass
analog slate
wooden nexus
#

Okay so I'm trying to write a Joker where one rank is considered the other rank (it's random per ante) and i can't figure out how to even start the code (I'm HELLA rusty)

sturdy compass
#

probably hook Card:get_id

frosty rampart
#

note that hooking card:get_id means the card's rank is effectively replaced (so e.g. "aces count as 2s" means that aces won't trigger scholar anymore)
if you want a card to simultaneously count as multiple ranks, like smeared joker or wild cards behave with suits, you'll have to wait for the infamous quantum ranks PR in smods to get merged (it will probably not get merged any time soon)

wild patrol
#

is it possible to make a boss blind always appear as the final ante 8 boss for a certain deck?

vale zinc
#

How do I create a Config tab of settings for a mod?

#

Might you know, @red flower?

rapid stag
#

put UI code into SMODS.current_mod.config_tab

vale zinc
#

How?

red flower
rapid stag
#

well the way i did it was i had a separate lua file where i defined my config tab UI code and then assert(SMODS.load_file())'d that into that var

frosty rampart
rapid stag
red flower
#

well it depends why and how its used

frosty rampart
rapid stag
#

-# who has docs on Card:get_id()

red flower
#

it returns the id of the card : )

#

2-10 for 2-10, 11 for jack, 12 for queen, 13 for king, 14 for ace, a random negative value for stone

#

i think modded ranks get assigned an id

frosty rampart
#

you can get modded rank IDs by checking SMODS.Ranks.modprefix_rankkey.id, and all rankless cards get a random negative value

rapid stag
#

i think for some reason i had it in my head that :get_id() was bad practice and you were supposed to use .base.value girldmDead

#

i don't know how this happened

#

there are a couple non-mechanic-related circumstances where i need .base.value though, so

vale zinc
rapid stag
#

SMODS.current_mod.config.myValue

#

although it's generally safer to have a global mod table you can access that is populated by SMODS.find_mod([your mod id])[1]

vale zinc
rapid stag
#

yeah, that value in runtime is volatile because it iterates through all mods

#

to find it via debugplus, you could try
SMODS.find_mod([your mod id]).config.myValue

vale zinc
frosty rampart
#

SMODS.find_mod returns a table of all the mods that have or provide the ID
next(SMODS.find_mod("...")) is the first mod in that table, which is what you're looking for

rapid stag
#

girldmDizzy right, forgot about that part

frosty rampart
#

although actually you shouldn't need find_mod at all
just SMODS.Mods.Lapsems should get you the same table lol

vale zinc
#

Same with next(SMODS.find_mod('Lapsems')).config.

#

SMODS.Mods.Lapsems.config.disable_vanilla_boss_blinds worked, though.

wild patrol
#

how do you change the background color of a boss blind?

#

I can change the ui and title color

#

but not the background

vale zinc
#

Of a Boss Blind, it's boss_colour = HEX("FF5555"), say, if you want a light red!

wild patrol
#

or is that a lovely patch thing

#

tried that the color stays the same

#

talking about the swirl in the background

vale zinc
#

That should be the same as boss_colour. I'm as stumped as you are.

wild patrol
#

maybe i'm just not doing something right

#

yeah it only affects the ui

daring fern
wild patrol
#

I change itt o the ox but only the ui changed not the swirl

vale zinc
#

Ohhhh, it's negated for Showdown Blinds. I tried the same.

wild patrol
#

so just not possible through smod?

vale zinc
#

I'm sure it's possible somehow, but that solution is not known to you or me.

wild patrol
#

probably needs to be done through lovely patch then

rapid stag
#

i'm pretty sure there's stuff on changing vortex colour code girldmDizzy is that only for the main menu

wild patrol
#

unless it was recently added

#

smod wiki says it's supposed to affect the background colour

#

but only affects the ui

#

yeah it's disabled if it's a showdown boss

#

is that intentional?

rapid stag
#

does this work to do what i want, or am i stupid? in testing, it's never done the xmult more than once, even with a bunch of oops all 6s

frosty rampart
wild patrol
#

huh never noticed until now

#

I wonder if I could do a dumb work around

#

I was gonna make it the final boss of the twitch deck anyways

#

is there away to set a boss to be the ante 8 boss of a deck?

twilit hearth
#

thoughts on the artwork?? (dont mind the elephant in the room)

wild patrol
#

It looks good to me

#

Art is subjective anyways lol

#

As long as it fits your theme should be good

twilit hearth
#

nice way of saying its ass

wild patrol
#

It's better than anything I could make

gentle rain
twilit hearth
#

how would that work?

#

@gentle rain

gentle rain
#

something like this

#

i meant artwise

#

the effect is rly funny i like that a lot

twilit hearth
#

oh LMAO i was so confused. I know what a library card is i just didnt understand what you meant 😭

#

thank you for the reference image

sturdy compass
sturdy compass
#

That is a scary amount of extras

daring fern
rapid stag
#

the idea was to, instead of combining the xmult, have it do the xmult juice each time.

it's 1 in 3 chance for x1.5 mult, then 1 in 4, 1 in 5 and 1 in 6. so the intent is if they all procced, it goes x1.5, x1.5, x1.5, x1.5.

...would merge_effects do that, or would it just do 1 lot of x5 mult?

daring fern
rapid stag
#

merge_effects creates a return table, right?

daring fern
rapid stag
vale zinc
rapid stag
red flower
versed swan
#

hell yeah n you the goat

wild escarp
#

How would I check if the blind is beaten in one hand?

daring fern
vital wren
#

is there a hand scoring context that a joker can access that would occur just before an individual card is calculated? i would want each individual card to score until the last, then have this joker affect that last scoring card, and then that affected card gets scored

#

i guess i could use context.individual of the card right before it as a really hacky way to accomplish this

daring fern
red flower
#

i dont think there is

daring fern
vital wren
#

where do i put it though, sorry. do you have an example of that being used for something?

vital wren
#

oh, are you saying like, just don't put it in an event so it bypasses the event manager?

#

i feel so dense right now, im really sorry im not understanding

daring fern
pastel kernel
#

does SMODS.scale_card accept operation = "/"?

daring fern
vital wren
# daring fern No, things in `return`s happen when they should, but if you use `SMODS.calculate...

is this what you mean?

-- TODO: new joker that makes rocks count as wild, playing a flush causes the last scored card to become a rock
SMODS.Joker { key = "painted", -- object key (mod prefix will be added automatically)
    atlas = 'balatro-revalanced-jokers',
    pos = { x = 0, y = 0 },
    rarity = 2,
    blueprint_compat = false,
    cost = 5,
    calculate = function(self, card, context)
        -- m_stone are also m_wild, can quantum enhancements do this part?
        if context.individual and context.cardarea == G.play and next(context.poker_hands['Flush']) and 
        context.other_card == context.scoring_hand[#context.scoring_hand] and not context.blueprint then
            SMODS.calculate_effect({
                context.other_card:set_ability(G.P_CENTERS['m_stone'])
            }, card)
        end
    end,
}
daring fern
vital wren
#

oh, i just put the code directly into the calculate and it will work?

vital wren
#

lawl, that's easier