#💻・modding-dev

1 messages · Page 535 of 1

tropic carbon
#

okay damn, wiki formatting is wrong then. i just screenshotted the common joker blue and got 0093ff rather than 009dff

frigid birch
#

what would be 'is not'?

tropic carbon
#

oh

red flower
#

.config.extra

slim ferry
frigid birch
#

thanks

frigid cargo
red flower
modern kindle
#

do you guys personally think there is any value to decimal points in dollars or is it always best to round up/down

i have a case now where i can get decimals and i just hook ease dollars to round, but i was curious if there was any potential application to that decimal

heavy frigate
#

Oh, so what im i doing wrong to cause it not to be accessible here?

red flower
modern kindle
#

so do you think to just allow decimals?

red flower
red flower
#

or you're gonna get stuck with 0.1 dollars you can't use

modern kindle
#

its specific to my edition

you can get decimals because its increasing the value you earn

so for example you can get 3.33 bucks per discard on delayed grat

#

but there no other way outside of the edition to get those decimals

red flower
#

i think it's fine

modern kindle
#

alright sick

frigid birch
#
             context.other_card.enhancement ~= nil or 
             context.other_card.edition ~= nil then
                return {
                    repetitions = card.ability.extra.repetitions
                }
            end``` context: first scored special card gets retriggered (like hanging chad) the seal and edition work just fine, the enhancement part doesn't retrigger.
I've also tried `context.other_card.has_enhancement == true`, but it didn't retrigger either
red flower
#

next(SMODS.get_enhancements(context.other_card))

frigid birch
#

yeee i did that first but i wanted to see if there was a simpler solution

#

thanks

#

works now

heavy frigate
#

How can a table with 1 item in it have a length of 0???!!!! fox_cry2

wintry solar
#

it's not integer indexed

frigid cargo
heavy frigate
wintry solar
#

any tables that vanilla needs to know the size of use integer indexing

#

what's your table?

heavy frigate
wintry solar
#

vanilla does indeed iterate over that table, albeit in a slightly strange way

heavy frigate
#

I found another way apparently G.PROFILES[G.SETTINGS.profile].progress.challenges.tally just gives a number fox_blep

#

I had found that earlier but i was missing the progress part

#

The main logic of my card seems to fully work now fox_dance

wintry blade
#

Hey, I have a question. I created a joker that gives a negative spectral card when a blind is selected, but the card ends up loose and disconnected from the consumables slot and can’t be used or sold.

#

calculate = function (self,card,context)
if context.setting_blind then
local new_card = SMODS.create_card{
set = 'Spectral',
area = G.consumeables
}
new_card:set_edition("e_negative")
return {
message = "Spectral Created",
colour = G.C.BLUE
}
end
end

}

frigid cargo
#

Its cause ur using create card and not placing it

slim ferry
#

you know theres a message for creating spectrals in vanilla right

#

also why are you doing the edition sperately, create_card has an edition parameter

#

also use add_card instead of create_card i think

#

that makes it go into the area automatically

split saddle
#

this here deducts chips but doesn't return a message. why?

wintry blade
frigid cargo
wintry blade
#

okay, I´m going to make the changes, thanks :p

slim ferry
#

also you should always create cards in an event

#

because that looks much cleaner

frigid cargo
#

Is it possible to change a jokers rarity mid game?

wind steppe
#
[[patches]]
[patches.pattern]
target = 'functions/button_callbacks.lua'
position = 'after'
pattern = '''G.shop = nil'''
payload = '''
if G.gacha_button then
  G.gacha_button:remove()
  G.gacha_button = nil
end
if G.gacha_machine then
  G.gacha_machine:remove()
  G.gacha_machine = nil
end
'''
match_indent = true

why doesn't this remove G.gacha_button and G.gacha_machine?

heavy frigate
#

Is it possible to manipulate mult without the plus message appearing?
Because now my joker say +1 Mult followed by ^1.02 Mult and somehow messaes up the score

wintry solar
#

show your code

wind steppe
#

me or bikutoso

wintry solar
#

bikutoso

wind steppe
#

damn

heavy frigate
#

I can at least how my code just in case. Basically trying to create a non Talisman equivalent of Emult_mod.
Also checking further is says +2.03 Mult and changes mult then my ^1.02 Mult message

slim ferry
#

thats because

#

returning mult is telling the game to apply +mult equal to the returned value

#

if youre using talisman you should just return emult instead

wind steppe
#

non talisman equivalent

slim ferry
#

wdym non talisman equivalent

#

i dont think thats like

#

a thing

wind steppe
#

thats what they said

slim ferry
#

oh

heavy frigate
#

So in this case i need to both for Talisman and for non talisman

slim ferry
#

well if you want to do ^mult without talisman you would need to do that outside of the return

#

and find the value for the current mult but idk what that is

heavy frigate
wintry solar
#

just put remove_default_message = true

slim ferry
#

in the return at least

#

and the value for current mult definitely isnt going to be just mult its probably in a table somewhere

wind steppe
#

Chat how do i remove a UIBox

heavy frigate
#

Moving mult outside the return seems to have done it (seems i need to hnadle the effects myself), but it gives the right value at least now

wind steppe
slim ferry
#

probably in any joker that gives +mult

heavy frigate
wintry solar
wind steppe
#

huh

#

neat

slim ferry
red flower
#

no it's just mult

slim ferry
#

wha

red flower
#

the local is just there to explain it

wind steppe
slim ferry
#

oh

#

im

#

okay

wind steppe
#

how do i remove a UIBox G.[uibox name here]:remove() isnt working

red flower
#

that should do it afaik

zealous glen
#

also they're UIElements AFAIK

red flower
#

i literally removed a uibox that way yesterday

wind steppe
zealous glen
#

I mean, it works on different objects

#

But it doesn't work on two new objects

red flower
#

last commit at the time

wind steppe
#

can you try it on beta-0711a rq

wintry solar
#

the version shouldnt make any difference at all

wind steppe
#

i can't find any reason why this wouldnt work

zealous glen
#

I don't think this is an issue with the SMODS version

wind steppe
#

what would then

red flower
wind steppe
#

yup

zealous glen
#

It doesn't but also other objects also don't and they're removed just fine

wintry solar
#

are you sure your reference is actually the UIBox

wind steppe
#
[[patches]]
[patches.pattern]
target = 'functions/button_callbacks.lua'
position = 'after'
pattern = '''G.shop = nil'''
payload = '''
if G.hpot1 then
  G.hpot1:remove()
end
if G.hpot2 then
  G.hpot2:remove()
end
'''
match_indent = true
#

this does nothing but goes inside the if statement

red flower
#

oh this is a hotpot thing ok

wind steppe
#

(names changed not to spoil)

wintry solar
#

yeah but is G.hpot1 actually the ui element

wind steppe
#
    G.hpot1 = UIBox({
        definition = G.UIDEF.hpot1(),
        config = {type = "cm"}
    })
wintry solar
#

what happens if you do eval G.hpot1:remove()

zealous glen
#

UIElement or UIBox?

#

Shouldn't it be an UIElement

red flower
#

uibox is correct

#

uielement are the nodes iirc

wind steppe
clear ocean
zealous glen
#

and removes other objects

wintry solar
#

then G.hpot1 for sure isn't the UIBox

wind steppe
#

the definition seems to work just fine

wintry solar
#

I don't know I can't see the code

#

but if you do, for example, eval G.HUD:remove() it will remove stuff properly

clear ocean
wind steppe
#

its only ever been assigned as a uibox

zealous glen
zealous glen
wind steppe
zealous glen
#

idk

clear ocean
#

is there any way to make the two suits i made not spawn initially in the vanilla decks as i plan to have it spawn naturally and allow you start with a deck of them

wind steppe
zealous glen
zealous glen
clear ocean
#

in the shop if you have the voucher

heavy frigate
#

How do i get the UI mult to jiggle?
I thought it was G.hand_text_area.mult:juice_up() but it does not seem to do any jiggle

zealous glen
#

Juicing causes jiggling but I'm not sure how it applies to some objects

wintry solar
wind steppe
zealous glen
#

that are removed

frigid cargo
#

Is it possible to change rarity of a joker?

wintry solar
#

and see what it is

heavy frigate
wind steppe
#

anything in particular i should look for?

wintry solar
clear ocean
#

there we go 👍

wintry solar
zealous glen
#

@wind steppe what about the other objects you could remove? Are they tables too?

zealous glen
#

I'd usually do tprint

#

or a custom table printer

heavy frigate
wind steppe
#

anything i'm looking for?

wintry solar
wintry solar
wind steppe
#

wait no let me get a console screenshot

wintry solar
#

that should absolutely be able to be removed

wind steppe
heavy frigate
wintry solar
#
return {
  -- stuff you already have
  mult = (mult ^ card.ability.extra.mult) - mult,
  remove_default_message = true
}```
wind steppe
#

have i just been cursed

zealous glen
#

plague of bugs upon ye

wind steppe
#

bug spray for programmers when

zealous glen
#

they call it deodorant

heavy frigate
clear ocean
zealous glen
#

@wind steppe something else you can try

heavy frigate
#

Wait now it did but i didn't before (didn't even restart game)fox_confused

zealous glen
#

copy some code that works

#

like [REDACTED]

#

and edit it slowly into your own code

#

and see when it breaks

wind steppe
#

aight

clear ocean
#

im going to work on the deck (and sleeve) in a moment going to take a small break

heavy frigate
#

And since mult didn't change no jiggle

#

i'm okay with that issue as it's unlikely to happen frequently

wind steppe
#

that's probably how it should work

#

+0 mult or x1 mult wouldnt make it jiggle

heavy frigate
#

Yea, that is understandable.

rapid stag
#

bump

split saddle
#

try doing an unblockable event with an impossible condition

#

but i don't really know how bc i've never used the event manager

#

and it could even not be the solution

#

but i think it's maybe worth a try

rapid stag
wind steppe
#
        G.special_button:remove()
        G.special_button = G.special_button or UIBox({
            definition = G.UIDEF.special_button(),
            config = {type = "cm"}
        })

why wouldnt something like this work to update G.special_button?

wintry solar
#

just do G.special_button = UIBox blablabla

knotty orchid
#

Is there a way to change localization of a joker by code? For example if certain things happen that the text shown changes

clear ocean
rapid stag
red flower
#

i was going to type it but remembered i had a wiki now

knotty orchid
clear ocean
#

idk if its because of card sleeves, my new suits, or something else idk

#

nh singlehandling carrying the balatro modding community on his backs

mossy orbit
#

If only there was a helldivers x balatro collab mod

clear ocean
modern kindle
red flower
#

i am

rocky plaza
#

ok how would one load an object only if a certain config setting is true?
nvm figured out a solution

clear ocean
#

i did add the smods.back and sleeve just in case that's why and uh still same error. any clues or answers would be appreciated

#

okay it has to be the smods.back since even the sleeve works i don't understand why

#

is it because i added those two suits or something

wintry solar
#

remove the =

#

SMODS.Back = {

clear ocean
#

OH

#

WHY DO I KEEP DOING THAT

#

force of habit sorry

#

thank you fox

tropic carbon
#

has tag scoring been done before in balatro modding? if not, how difficult/easy would it be to code it in?

tropic carbon
#

what mod please tell me it's an api so i don't have to force more crossmod on myself for the sake of one function

#

i'm trying to think of how to do temporary buffs by having either a unique consumable akin to Horoscopes in Maximus or taking the stupider option and doing them through tags instead

tropic carbon
#

MORE FLUFF?? holy SHIT okay i'm saved

clear ocean
#

is there a way to grab the text colour of your suit?

tropic carbon
#

another potential issue might be making certain tags unavailable in the pool of available Skip Blind tags but seeing that Entropy does this i hope this is something built into smods rather than entropy

clear ocean
#

not sure if this could be mistaken for only having those two suits

tropic carbon
#

cause like imagine Clutch Tag but it stays for multiple blinds and basically negatively ramps until it disappears

split saddle
#

using a variable in here crashes the game, is there a way to fix it?

solved it

clear ocean
split saddle
#

can you modify the perishable timing to make it longer/shorter?

placid star
#

card.ability.perish_tally

split saddle
#

what about globally?

placid star
clear ocean
#

going to eat something and then work on some stuff like quick jokers as those would easy to knock down

bold sleet
#

Hello. does anyone know how I can target the card being sold? card is being used by well, the card that is running the calculate function.

jolly shadow
#

context.other_card ?

bold sleet
#

checking

jolly shadow
#

oh right that

#

mb

red flower
#

it's always context.whateverisontheleft

jolly shadow
#

makes sense

bold sleet
#

ah

#

Maybe I shouldn't be doing this at 3 am

lusty glade
#

heyo! I was trying to set up a seal on a card and at first I was using pseudorandom_element but then decided to try and use SMODS.poll_seal instead as it looked easier. However, it now gives me an error when booting up the game. Did I use it right? :0

(Context: The joker is supposed to put a random seal on a card if its the only card played on the first turn. it has limited useage)

red flower
lusty glade
#

oooh alr. So then I won't need the seal in the config either?

red flower
#

nope

lusty glade
#

that really shortens my code lol let me try it. Thank you!

sleek cliff
#

Was testing a run with my mod and this suddenly happened

#

It was working until it didn't

red flower
#

it's other_card

sleek cliff
#

but I'll try the same hand with other card

#

this is the error I got

red flower
#

with other_card it might crash because not all jokers have an ability.extra table

#

yeah exactly

clear ocean
#

not sure if envious should be for each suit or +3 mult for any other modded in suit

#

is there a way to get the colour for a modded suit?

sleek cliff
clear ocean
#

looked at the source at paperback as i heard that they added some of their own suits it's basically {C:key_suit}

sleek cliff
#

ok, so I played the same type of hand but with different cards and it didn't crash what in the

clear ocean
#
            j_Galore_Slothful = {
                name = {
                    "Slothful Joker"
                },
                text = {
                    "Played cards with",
                    "{C:Galore_Leaves}#2#{} suit give",
                    "{C:mult}+#1#{} Mult when scored"
                }
            },
clear ocean
#

it didn't work

clear ocean
#

how could you

#

even tried with high contrast, maybe i need to initialise the colour value first

#

maybe it's s_Galore_Leaves

sleek cliff
red flower
#

it has an extra table

clear ocean
#

here's the loc file, maybe someone could help with the colour code

red flower
#

how's the suit defined

clear ocean
#

the key? Roses and Leaves

red flower
#

try galore_leaves lowercase

#

or Galore_leaves

#

i think it sets it to lowercase

clear ocean
#

god speed

sleek cliff
#

son of a bitch it was Hack, but that also has an extra

red flower
#

but it's a number

#

not a table

sleek cliff
#

mmm, how should I fix it then

red flower
#

check if extra is a table

crystal perch
#

I have an edition which destroys the card its applied to based on chance, and I would like for it to work for jokers as well, yet it doesn't. Any way I could get this code to apply to jokers as well as playing cards

daring fern
crystal perch
#

slipped my mind

lusty glade
#

if I do SMODS.destroy_cards(card) does it refference itself?

crystal perch
#

yes unless you set card to something else prior

#

i usually just add card = card a line above to be safe

lusty glade
#

I see alr

#

ty!

crystal perch
daring fern
crystal perch
#

where would be context.after

daring fern
crystal perch
#

ah right i forgot to mention i only wanted jokers to have a chance to destroy on round end

#

my mistake

orchid nest
#

i was trying to get this working and like what

manic rune
#

what do i have to change in the cardarea for it to have cards aligning horizontally straight

orchid nest
daring fern
orchid nest
#

oh my god im stupid

#

ty

orchid nest
#

uhm

ivory citrus
#

Hello, does anyone know how to make my variable add up with any voucher?

daring fern
orchid nest
orchid nest
daring fern
orchid nest
#

latest i think..?

#

idk smods just updated one day

#

should be latest

daring fern
orchid nest
#

1.0.0~BETA-0323b

#

?

daring fern
vernal path
#

that is so old man

orchid nest
#

how am i supposed to know??? 😭

vernal path
#

looking at the github every now and again

orchid nest
#

i mean yeah but it never really mattered before 😭🙏

vernal path
#

i mean new features are being added constantly, and bugfixes are important to keep track of

orchid nest
#

¯_(ツ)_/¯

#

never really mattered for me until now ig

#

i downloaded it months ago so

#

blehg

#

yeah that makes sense it's the march build

vernal path
#

Its bad practice to be using libraries that are out of date
like, in normal computing, packages are updated consistently because there can be security issues or fatal errors

orchid nest
#

i know that

#

but like

vernal path
#

so yk, keep stuff updated

orchid nest
#

idk im just used to game development where i never need to check

#

¯_(ツ)_/¯

vernal path
#

you need to do that in gamedev too???

orchid nest
#

-# i use steam with my godot

vernal path
#

unless its specifically minecraft, where versioning is a suggestion

vernal path
orchid nest
#

im aware

orchid nest
vernal path
#

so unless you use github to pull down releases and regularly check, you gotta do that yourself

orchid nest
#

also im used to most engines just saying "hey we have a new version :)"

vernal path
orchid nest
#

so ¯_(ツ)_/¯

vernal path
#

its a library

orchid nest
#

i

#

say that????????

#

😭

#

im just saying im used to that with my workflow

#

i never called it an engine

#

i know it's a library

#

im not stupid

vernal path
#

you said you were used to game engines, and smods isnt that

#

you cant treat it like that

orchid nest
#

yeah to describe my workflow, im saying im used to working with NOT libraries

#

im not saying im trying to treat it like that. also it was one god damn update chill 😭

vernal path
#

in reality, it was a dozen updates

orchid nest
#

about 5 updates ago yes, but i never stated that it was obsolete

#

i just had assumed everyone was using that cause everything worked fine

#

if it works why does it matter?

#

sure it's bad practice, but i'm usually ensured that most of the library is going to be consistent for my needs. so i know in future versions it really doesn't matter cause it's future proof

#

anyways it works now

#

im also pretty sure steammodded one day updated when i opened up balatro but i think cause one of my runs were on an old version it just reverted back for some reason????????? im unsure. bad memory.

orchid nest
# vernal path smods isnt a game engine

one thing i want to state is that im used to my language typically telling me that my libraries need updating (like python) so that's why i'm not very good at checking :p

#

but thank you for letting me know

#

sorry for being a bitch about it. bad day =_=

wind steppe
#
[[patches]]
[patches.pattern]
target = 'functions/button_callbacks.lua'
position = 'after'
pattern = '''G.shop = nil'''
payload = '''
if G.hpot1 then
  G.hpot1:remove()
  G.hpot1 = nil
end
if G.hpot2then
  G.hpot2:remove()
  G.hpot2 = nil
end
'''
match_indent = true
#

idk why this does nothing

manic rune
#

does it not crash

#

lmao

#

it doesnt even seem like its running if it doesnt

#

if G.hpot2then

#

-# and i will pretend its not related to hotpot

modern kindle
#

ask ur freaking team smh

wind steppe
modern kindle
#

now i know everything in hot pot off of those lines

#

u told me everything

wind steppe
#

i can't believe this

manic rune
#

true.

#

you are cooked paradox, im sorry

#

but also, what i said above

#

fix the line and put a print to see if it runs

wind steppe
#

both the if statements are entered

#

it genuinely seems like remove just doesn't work for some reason

manic rune
#

hmm

#

no clue

wind steppe
#

is there any other way to remove uiboxes?

manic rune
#

i usually use :remove() and = nil and it always works, so idk

wind steppe
#

do you do this for a whole uibox with no parent

manic rune
#

mm nop

#

never used uibox before, actually :p

wind steppe
#

what are you removing then

manic rune
#

referring to the entire ui and just, :remove(), = nil idk

#

does anyone know what color cardareas use 3:

#

i tried finding it in cardarea.lua but didnt see anything

solar eagle
#

is anything off in this deck application code? it looks fine to me but crashes game with

apply = function(self, back)
    G.GAME.used_vouchers["v_crystal_ball"] = true
    G.GAME.used_vouchers["v_omen_globe"] = true
    Card.apply_to_run(G.P_CENTERS["v_crystal_ball"])
    Card.apply_to_run(G.P_CENTERS["v_omen_globe"])
        
    G.GAME.starting_voucher_count = (G.GAME.starting_voucher_count or 0) + 2
end```
#

i copied it from the vanilla back.lua which works fine for magic/nebula deck so..

daring fern
solar eagle
#

ahhhhh

#

makes sense

solar eagle
daring fern
solar eagle
#

Still didn't change anything!

#
  trigger = 'after',
  delay = 0.1,
  func = function()
    G.GAME.used_vouchers["v_crystal_ball"] = true
    G.GAME.used_vouchers["v_omen_globe"] = true
    Card.apply_to_run(G.P_CENTERS["v_crystal_ball"])
    Card.apply_to_run(G.P_CENTERS["v_omen_globe"])
                
    G.GAME.starting_voucher_count = (G.GAME.starting_voucher_count or 0) + 2
    return true
  end
}))```
#

i'm not even referencing G.vouchers

daring fern
solar eagle
#

I did

#

It's not in there, because that was old code I copied

#

It's the same error. Want me to screen record and show you?

#

ooh wait no this is the other error i was getting before, but managed to change?

#

functions/common_events.lua:2506 attempt to index field T (a nil value)

#

which is local new_card = new_card or Card(other.T.x, other.T.y, G.CARD_W*(card_scale or 1), G.CARD_H*(card_scale or 1), G.P_CARDS.empty, G.P_CENTERS.c_base, {playing_card = playing_card, bypass_back = G.GAME.selected_back.pos}) in copy_card

#

in this case it's being called from apply_to_run

daring fern
solar eagle
#

No it isn't

daring fern
solar eagle
#

tell that to my card.lua????

#

that's the god damn definition post patch

crisp coral
#

Card:function(center) is the same as Card.function(self, center) so technically yes center is the second input

solar eagle
#

weird.

manic rune
#

am i targeting it wrong........

crisp coral
#

what the fuck

#

are you sure the index is right

manic rune
#

i think??

#

its saying its nil but i think its correct

#

3: how do people even move down to like the 9th node without messing up wtf

crisp coral
#

like

#

actually

#

why is it select_nodes[2]

manic rune
#

.

#

what the fuck

#

i used the # auto filler idk...

#

thanks 😭

stiff locust
#

is there a way I can make remove_from_deck trigger only on a card being destroyed and not being sold

daring fern
stiff locust
#

oh okay

#

cool

#

#G.jokers.cards is how many jokers you have right

vernal path
#

yes

stiff locust
#

so #G.jokers.cards == 1 should only hit if you have 1 joker

#

right?

wind steppe
#

how would i get the child nodes of a parent uibox?

daring fern
stiff locust
#

i found the issue it was elsewhere

#

is there a way to filter out specific sources of destruction

#

like if i wanted a thing to only happen if a card was destroyed by ceremonial dagger specifically

#

oh i figured out a way

#

nevermind

#

it didn't work

daring fern
stiff locust
#

with ceremonial dagger specifically it is possible

#

because it sets card.getting_sliced on the target

#

but that was an example and not what i actually wanted to do

daring fern
stiff locust
#

no but you could just check if card.getting_sliced in remove_from_deck right

#

that would make it only trigger if destroyed by c.dagger

frosty rampart
#

a lot of custom content that destroys jokers sets card.getting_sliced, so regardless of if that was the intention it won't work

stiff locust
#

oh

#

right okay

#

what function to hook for starting a new run

daring fern
stiff locust
# daring fern `Game:start_run`
local start_run_ref = Game.start_run
function Game:start_run(...)
    local ret = start_run_ref(self, ...)
    ---do thing
    return ret
end

would this be the correct hook for that

stiff locust
#

left !! okay

ashen drift
#

can someone help me debug this

#

pleas

stiff locust
#

can I end an event by returning something other than true

wintry solar
median veldt
#

is it possible to create a deck that would have a whole different set of cards, possible jokers, and poker hands (disabling the vanilla stuff pretty much)

#

out of curiosity

languid canopy
stiff locust
#

the Modded Deck in SDM_0's disables all vanilla jokers that's probably a good place to start

manic rune
#

what the hell is this auto fill

stiff locust
manic rune
#

ye lmao

stiff locust
#

it should be a hd not an hd

manic rune
#

oh yeah marie have you chcked stacked :3

stiff locust
#

no why

manic rune
#

my new mod

#

it adds extra effects on jokers, i think its cool

stiff locust
#

does it have splash

#

ohh right it's that mod

manic rune
#

it can make your splash stronger

#

:3

stiff locust
#

it adds random effects to jokers

manic rune
#

mhm

stiff locust
#

does it have negative effects

manic rune
#

on higher stakes, yeah

stiff locust
#

ahhh i see

#

yeah i like that

manic rune
#

its also an api mod because yeah

stiff locust
#

can you make the splash effect one of the possible bonus effects

manic rune
#

sure lol

stiff locust
#

hell yeah

#

the exact wording is Every {C:attention}played card{} counts in scoring

#

just in case you needed it

manic rune
#

thank

#

rn im helping with better sfx's ui so later :3

stiff locust
#

all good

manic rune
#

this is probably the perfect passive name for this

stiff locust
#

this reminds me of those absolute cinema memes

#

when they find a way to say the name of something in a different context and they show up

manic rune
#

lmao

#

this mf is pissing me off...

stiff locust
#

this FORMAT is pissing me off....

manic rune
#

✋😭✋

stiff locust
rancid kindle
#

I just learned modding tonight (last 2 hours of my life for silly Jimbo game 😭) here are the fruits of my labor

frigid cargo
rancid kindle
#

He haunts your dreams.

#

He has a brother, named Kravus.

“I… am Kravus.”

pure salmon
#

why does this enhancement not give xmult when scored?

frigid cargo
#

Dont you need to return xmult?

pure salmon
#

not for card.ability.Xmult iirc

frigid cargo
#

Have you tried anyways?

#

Cause if so then idk cause im not very smart

pure salmon
#

yeah this also doesn't work

#

the reset shouldn't be able to trigger until after scoring

#

i even put in in an event to make sure

frigid cargo
#

What about using context.post_joker or (context.main_scoring and context.cardarea == G.play) instead of context.after etc etc

pure salmon
#

i’ll worry about it tomorrow

#

need sleep

frigid cargo
daring fern
pure salmon
#

oh

rancid kindle
#

Ahhh yeah something really silly I learned

#

Chips apparently need to be put in as

hand_chips

But mult is just

mult

#

;-;

ripe thicket
#

is there a way to get rid of the extra chips text on the bottom?
I never included it anywhere but it just appears on its own

wintry solar
ripe thicket
wintry solar
#

It’s because you’ve defined a value of bonus, which is used by the game internally for the chips that hiker gives to cards. You should put all of your config variables inside a table named extra generally

ripe thicket
#

ah ok

odd wraith
#

could I ask what is the tag for bonus cards in the code cuz im trying to make a joker centered around them

wintry solar
#

Use SMODS.has_enhancement(card, 'm_bonus')

#

Where card is the card you’re checking

ripe thicket
#

so since this enhancement I made scales, I want to make a joker that increases the rate of scaling (like x2)
how would I go about doing this? would the joker be modifying the card/enhancement or something else?

ripe jacinth
#

how do i implement this effect:

1 in 2 chance for played cards to return to hand after scoring

molten relic
#

is there a way to create a group of jokers so only those appear in a specific booster pack?

rotund sable
#

SMODS.ObjectType

molten relic
rotund sable
#

For example when you run out of jokers in a rarity you get Jimbo

molten relic
#

aha

faint yacht
rotund sable
#

Jimbo is the default

molten relic
#

yes okay

#

and then in default put a key?

rotund sable
#

j_modprefix_key for jokers

molten relic
#

rarities also apply in boosters right?

faint yacht
gleaming crescent
#

How do I format info queue?

#

Somehow my game crashes whenever I try to put formatable text into info queue (text with #1# things)

slim ferry
#

how does your info_queue code look?

candid elbow
#

[Cooked] ~_~

subtle merlin
#

How does the new global calculate work, exactly?

daring fern
manic rune
#

out of curiosity what set of contexts does the global calculate use, is it using jokers' contexts?

daring fern
manic rune
#

mm icic

#

thanks

daring fern
#

Which means it's like the deck.

subtle merlin
red flower
subtle merlin
#

ty!

copper thorn
#

quick question, does someone have a DebugPlus command to spawn a card in shop ?

subtle merlin
#

nvm i misread it

long sun
#

when selecting a card with my custom suit, it becomes Diamonds. i've tried several different methods of changing card suits, including SMODS.change_base and self:change_suit(), but they all do this

subtle merlin
#

eval maybe?

long sun
#

here's the code for the suit

daring fern
long sun
#

here's the code that changes it

daring fern
long sun
#

i need them to restore the suit back to what it was before it was unknown

daring fern
long sun
#

oh fair

daring fern
#

card.config isn't saved.

long sun
#

i'll give that a go

#

while that was needed, it's still doing the same thing

#

selecting an Unknown card, or viewing the full deck, changes the suit

daring fern
daring fern
long sun
#

unsure if i've done all of this correctly, with the collection_loc_vars and etc.

#

this is my first blind ^^;

daring fern
long sun
#

what is it instead?

daring fern
#

Read this.

long sun
#

okie

#

mm, slightly irritating that i now have to change all of my code for the new probability stuff

#

but okay

#

i guess it's good that my dependency will be up-to-date with the content my mod has ^^;

#

have i done this correctly?

daring fern
# long sun

No, you use SMODS.pseudorandom_probability

long sun
#

oh, new thing! that's good, the normal method is kinda annoying ^^;

daring fern
# long sun ?

Yes, but you can remove the identifier because it just uses the seed when none is provided.

long sun
#

ah, perfect :D

gilded goblet
#

how can i have a poker hand change at the end of round? im looking for a way sort of like how To Do List does it

gilded goblet
#

oh SHIT

#

tyy

subtle merlin
#

ive been wanting to find a way to make it so that jokers can never appear at all. Not in shop, not spawned by other cards, not spawned by blinds, nothing. I was wondering how that'd be possible and thought since i have nothing else to do rn, id ask how i could do that

ashen drift
#

ok can someone help me debug this

daring fern
subtle merlin
daring fern
subtle merlin
#

what of jokers that naturally have in_pool set to false?

red flower
#

you hook this and check for the key

pure verge
#

what am I missing in this code

#

SMODS.Atlas{
key = "caricature",
path = "JokerCaricature",
px = 71,
py = 95,
}
SMODS.Joker{
key = "caricature",
loc_txt = {
name = "Caricature",
text = {
"Retriggers rarest its ability will be halved",
}
},
atlas = "caricature",
pos = {x = 0, y = 0},
}

red flower
#

the path needs to be a path to an image file from assets/1x and assets/2x with the extension

#

but also whats not working

pure verge
#

no im just wondering

#

im making a retriggering joker

knotty orchid
#
 if context.other_joker and context.other_joker.config.center.rarity == 4 and card ~= context.other_joker then
      card.ability.extra.triggered = true;
      G.E_MANAGER:add_event(Event({
        func = function()
          context.other_joker:juice_up(0.5, 0.5)
          return true
        end
      }))
      return {
        message = localize({
          type = "variable",
          key = "a_powmult",
          vars = { number_format(card.ability.extra.legendary_exp) },
        }),
        Emult_mod = lenient_bignum(card.ability.extra.legendary_exp),
        colour = G.C.DARK_EDITION,
        card = card,
      }```
Any reason this only triggers for the second legendary and not the first one?
ashen drift
#

you didnt

#

add a calculate

#

so it does nothing

knotty orchid
subtle merlin
gilded goblet
#

maybe it has something to do with that?

#

i dunno

subtle merlin
gilded goblet
slim ferry
subtle merlin
#

...
oh

#

ty Eris

knotty orchid
#

Ill try anyway

slim ferry
knotty orchid
#

yea the problem is I'm using talisman

#

Emult is implemented?

slim ferry
ashen drift
slim ferry
#

i think

knotty orchid
#

Ill try that

slim ferry
#

also whats the point of returning card = card actually

knotty orchid
#

Idk wth the first joker don't actually trigegr

knotty orchid
#

Still not working

#

the first joker doesn't actually give any emult

#

the second one yep

red flower
pure verge
#

i want to make a joker that retriggers the rarest joker. how would i do that?

red flower
#

whats rarest joker

pure verge
#

depends

#

if the rarest joker is rare, it retriggers all rares

#

aka highest rarity value

#

if there is two legendarys, it retriggers both legendarys

red flower
#

does that need to account for modded rarities

pure verge
#

no

knotty orchid
#
  if context.other_joker and context.other_joker.config.center.rarity == 4 and card ~= context.other_joker then
        card.ability.extra.triggered = true;
        G.E_MANAGER:add_event(Event({
          func = function()
            context.other_joker:juice_up(0.5, 0.5)
            return true
          end
        }))
        return {
          Emult = lenient_bignum(card.ability.extra.legendary_exp),
          colour = G.C.DARK_EDITION,
        }```
With this no one even gives Emult. Just shows the message
pure verge
#

or maybe

#

idk

red flower
pure verge
#

ok

#

thx

candid elbow
#

What’s the index of first hand (leftmost) in hand

knotty orchid
#

context.scoring_hand[1]

candid elbow
#

Not in played hand

#

In hand

knotty orchid
#

or if you say in back hand G.hand.cards[1]

candid elbow
#

Oh im missing cards

#

Thanks

#

Can you run a py script with load file

long sun
#

fixed all of my probabilities ^^ i still need to fix the suit not working

#

i'll repost the code here. this is a Blind that uses my new suit, Unknown

#

it's essentially a way of hiding what suit a card is, cards with this suit act like they would if their suit was known

#

oh ya i forgot to mention what the problem is

#

setting the suit works fine, but once i select a card with the suit, it changes to saying it's a different suit

#

i.e. its base.suit changes from phanta_unknown to eg. Diamonds

#

this also happens to all the cards when viewing the full deck

#

and i have no clue why this is happening

#

halp -u-

gilded goblet
long sun
#

(it does that already)

subtle merlin
#

the default is mainly for collections i thought

long sun
#

ya

red flower
#

set_ability randomizes it

#

even in the collection

gilded goblet
red flower
#

the deafult is there so it doesnt break if something dumb happens

gilded goblet
#

i mustve done something wrong for my joker then lol mb

candid elbow
#

What does main eval do

gilded goblet
red flower
candid elbow
#

Why It doesn’t run once by default

candid elbow
#

Ahhhhhhhhhhh

#

Gracias

red flower
#

no hay de qué

clear ocean
#

Morning

#

At work atm I clock out at the afternoon

#

On break so I can chat for a moment

pure verge
red flower
pure verge
#

ok

red flower
#

1 is common 4 is legendary

gilded goblet
red flower
#

anything thats not a number is modded

clear ocean
candid elbow
#

So A string

red flower
#

yeah but its not relevant to what they want

gleaming crescent
lusty glade
#

is there an equivalent of "has_enhancement" but for seals? :0

red cradle
#

Where can i upload my mod?

red flower
red flower
lusty glade
red cradle
distant junco
#

just thought of something. i know theres a context for losing, but is there a context for winning?

red flower
#

i dont think so

distant junco
#

damn

#

i looked in the utils but i couldnt see anything so youre probably right

red flower
#

you would need to hook whatever function checks for winning

#

i think its win_game

distant junco
#

whats hooking i keep seeing that advice but ive never actually asked

red flower
#

its one of the first questions in the vremade wiki

#

cant link it rn

rocky plaza
# distant junco whats hooking i keep seeing that advice but ive never actually asked

https://github.com/nh6574/VanillaRemade/wiki#whats-a-hook
basically what you do is store the function as a local variable
then immediately after override it by redefinining it with the exact same name and parameters
then what you can do is within your new function, call the reference to the old function using the local variable
and now you can do stuff immediately before or after the original is called

GitHub

Contribute to nh6574/VanillaRemade development by creating an account on GitHub.

distant junco
#

oo okay

rocky plaza
#

a fun quirk of lua

distant junco
#

i think i get it. ill give it a shot

heavy frigate
#

Does all Legendary jokers force the find in Soul card to unlock unlock requirement?
Because i have one with a custom unlock requirement and it just says find in soul card (and it unlocks when i do find it there)

long sun
#

WHAT HAPPENED TO MY TOOLTIPS IN THE NEW SMODS

ripe jacinth
#

hey i need some help

long sun
#

WH

ripe jacinth
#

i have no fucking clue how to code shaders

#

all i want is a shader that can make it seem like a card is rotating in 3d

#

(by scaling the x axis

red flower
ripe jacinth
#

how do i do that

#

anyone here good with shader coding?

red flower
long sun
#

yes

red flower
#

and it didnt happen before?

long sun
#

this hasn't happened before, no

#

i've missed quite a few versions but it's failing in the current version

red flower
#

can i see the code for the info queue

long sun
#

oh also, tooltips don't appear in the collection

#

Exposed

#

Weathered

red flower
#

oh its weird that it didnt happen before

long sun
#

Oxidised

red flower
#

that's what should happen

long sun
#

why ;u;

red flower
#

because they all reference each other

long sun
#

okay but that doesn't explain Waxed appearing 3 times on Weathered's

red flower
#

hmm

long sun
#

nor the collection thing

red flower
#

can you try this smods version

long sun
#

okie

red flower
#

its before a recent info queue change

long sun
#

okay well the collection thing doesn't seem to be true

#

most of my Jokers work fine with them

#

okay ya the collection's fine actually

#

i mistook one joker for another that had tooltips

#

trying the version

wintry solar
#

I feel like this recursive thing will have always happened, I don't think the info_queue changes should have affected that

long sun
#

i very much remember it not happening

#

i'd've noticed that before adding them

#

the previous version is fine

red flower
#

hmm i think that's actually wrong so maybe the new version fixed it lol

long sun
#

i don't see how that's wrong

red flower
#

all the info_queues add all other info_queues it references

#

you need to check for card.fake_card to stop that usually

wintry solar
#

yeah I'm not sure why the old version would stop

long sun
#

if Oxidised references Waxed, then Weathered references Oxidised and Waxed, then Exposed references Weathered, Oxidised and Waxed, and Fresh references Exposed, Weathered, Oxidised and Waxed

#

oh wait i see

#

what's the fix, again? -3-

heavy frigate
long sun
#

wait no i don't get this anymore

red flower
long sun
#

ah kay

#

i'll add that, but like

#

what 😭

wintry solar
#

is there some sort of safeguarding that has been deleted?

red flower
rocky plaza
long sun
#

Weathered doesn't reference Waxed

red flower
#

but it references things that reference waxed

long sun
#

i don't see how that's an issue

#

ah i think i see that now

#

wait

#

hold on i'm a bit thick, gimme a mo

sturdy compass
#

Tooltips are added recursively

red flower
wintry solar
#

what does waxed reference?

long sun
#

so it's like

long sun
#

ya so

#

Weathered is like "i need you to add Oxidised to the queue"

#

wait no i don't get this again

#

because then Oxidised is like "we need Waxed too"

#

so it ends up as Oxidised and Waxed

red flower
#

yes thats what it should be with just weathered

long sun
#

and it's not ^^;

red flower
#

what is it

long sun
#

3 Waxed, 1 Oxidised

red flower
#

can you screenshot it

long sun
#

getting there, hold on

wintry solar
#

can you screenshot the waxed code too

#

because something seems mega fucked here actually

rocky plaza
#

yo is there a way to get a tooltip to show when you hover over a checkbox

long sun
#

:D

#

anyway, here's the code

wintry solar
#

yeah add detailed_tooltip = something iirc

rocky plaza
long sun
red flower
#

ok yeah thats wrong

long sun
wintry solar
#

can you put print(#info_queue) in them all and screenshot the numbers that appear when you hover?

red flower
#

oh its adding 2 more info_queues per recursive call?

long sun
#

seems like it

limber blaze
#

idk why its adding 2 each time but its definitely because of not doing first_pass related stuff

#

each of the info queues is also adding its own info queue to the total queue

long sun
limber blaze
#

huh

wintry solar
#

those are not the numbers I was expecting 🤣

#

it's just, generating a load of extra queues?

#

why

long sun
#

ya i. didn't anticipate that

lusty glade
#

is there a way I can use card.seal while referencing the entire deck?

i'm trying to use "for _, playing_card in ipairs" to check the deck then using an if statement right after but I think i'm missing something because ti never triggers lol-

long sun
#

oh well ¯_(ツ)_/¯

limber blaze
#

this is so confusing

lusty glade
red flower
#

you should probably still do the fake_card thing because you would still end up with 3 waxed anyway if the code works correctly

long sun
#

hey guys, did u know! Waxed gives X1.1 Mult :D

limber blaze
#

loc_vars should probably let you detect if its the first pass or not tbh

long sun
limber blaze
#

oh awesome

#

ive never needed that so i didnt know

red flower
#

oh wait im thinking of generate_ui

#

but it does let you detect if its a card for an info queue

red flower
long sun
#

ArtBox is having a similar issue

wintry solar
#

I'm pretty sure it should only get called once anyway

#

I don't know why it's going multiple times

limber blaze
#

i mean either way just having a fourth first_pass parameter would probably make it more intuitive idk though

#

it is technically not needed ig

wintry solar
#

not when it's supposed to only have one pass anyway

heavy frigate
#

How do i check if a joker is unlocked?

limber blaze
#

i mean for things like info queues it would make it easier to stop waxed showing up 3 times

red flower
#

a way for info_queue to not add the same info twice would be useful

limber blaze
#

from all the other referencees

wintry solar
#

the triple waxed is the same bug btw

#

the fake_card thing isn't the reason

red flower
#

oh i didnt read the code lmao

#

i was basing it off her other comment sorry

long sun
#

;u;

#

told u it worked!! >;3

wintry solar
#

I’ll try figure it out but I am mobile browsing rn

red flower
#

i was reading bepis' pr but its too long

#

good luck

long sun
#

working on the last release ^u^ lesson learned, don't pull from dev!

red flower
#

i mean its good to pull from dev because we find out :3

long sun
#

fair :3

wintry solar
#

Oh I think I see it where it is but I can’t test rn

#

Pulling from dev as a dev is also fine if you are confident in what you are doing

modern kindle
#

I do it while not being confident

wintry solar
#

@red flower can you try setting the info_queue on line 118 of center.toml to an empty table?

red flower
#

i cant sadly

modern kindle
#

Also good schmorning chat

wintry solar
#

I think that’s where it’s coming from

red flower
#

im at work

wintry solar
#

Damn

#

Can somebody else lol

red flower
#

heyo dilly

rotund sable
#

where in the smods/balatro is the call to the calculate functions of (for example) jokers?

#

i have a really dumb idea for a simple mod

errant talon
#

Hello! Does anyone can show me how "Oops! All Sixes" works in code?

#

Out of my own curiosity

rotund sable
rotund sable
limber blaze
#

does vanillaremade have remade achievements yet

errant talon
limber blaze
#

it does not

rotund sable
knotty orchid
#

recalc_debuff on blinds only apply when setting the blind?

red flower
limber blaze
#

its a lot of manually inserting check_for_unlock tbh

rocky plaza
#

ok another UI question
so i want the green background to change colors based on config values
So far it only does so when I reload the game
How would I do it dynamically so that pressing the toggle affects the color in real time?

wintry solar
#

Add a func to the node

rocky plaza
#

oh nvm just took another look at the UI docs i think i got it lmao

rotund sable
rocky plaza
#

does this by any chance work with localization files and text styling?

midnight coyote
#

how do i check consumable slots btw

#

like if its full

#

wait

#

ill just check vremade

knotty orchid
red flower
#

card.config.center.key

card.ability.name also works but it's another format so it's discouraged

ashen drift
#

did anyone ever figure this out

#

tried searching and that was the closest result i could find

red flower
#

i think using an empty set_card_type_badge should delete them

ashen drift
#

huh ok

#

thanks n

red flower
#

maybe not the mod one tho

ashen drift
#

ah damn

#

smods should add a silent paramater to regular objects as well

wintry solar
#

Can’t you turn them off in config?

ashen drift
#

yes but i want one specific card's mod badge off

#

also i kinda want everyone playing the mod to not see the badge

ocean sinew
#

then apply the love2d changes

#

GLSL LÖVE shader language
float number
sampler2D Image
uniform extern
texture2D(tex, uv) Texel(tex, uv)

lament agate
#

once again

#

how do i mess with the screenshake

wintry solar
#

Take your hands, place them on each side of your monitor, move your arms side to side (in sync with each other) at varying speed

lament agate
#

thanks

#

trying it

candid elbow
#

This worked for me

#

Thanks

ocean sinew
gaunt thistle
#

probably not sorry

ocean sinew
#

😔

candid elbow
#

Why can’t i replace the shaders ingame with custom ones

#

Like replacing the negative shader

candid elbow
#

I tried overlays and drawing on top but nothing worked for me

#

I’m cooked

#

Sob

#

😭

wind steppe
#
G.UIDEF.special_button = function()
    local t = UIBox{definition = {n = G.UIT.ROOT, config = { align = 'cm', colour = G.C.CLEAR, minw = G.deck.T.w, minh = 1.2 }, nodes = {{n=G.UIT.O, config={object = G.UIDEF.special_button_inside()}}}},
    config = {major = G.deck, align = 'tm', offset = { x = 0.15, y = -0.35 }, bond = 'Weak', colour = G.C.CLEAR}}
    return t
end

G.UIDEF.special_button_inside = function()
    return UIBox{definition = {n = G.UIT.ROOT, config = { align = 'cm', colour = G.C.CLEAR, minw = G.deck.T.w, minh = 1.2 }, nodes = {
        { n = G.UIT.R, nodes = {{n = G.UIT.C, config = {align = "tm", minw = 2, minh = 1.2, padding = 0.1, r = 0.1, hover = true, colour = G.C.UI.BACKGROUND_DARK, shadow = true, button = "hpot_special_button", func = "hpot_can_special"}, nodes = {
            {n = G.UIT.R, config = { align = "bm", padding = 0, colour = G.C.CLEAR}, nodes = {
                {n = G.UIT.T, config = { text = "Line 1\nLine 2", scale = 0.5, colour = G.C.UI.TEXT_LIGHT}
                }
            }},
        }}}}}}, config = {major = G.deck, align = 'tm', offset = { x = 0, y = 0 }, bond = 'Weak', colour = G.C.CLEAR}}
end

How would I access G.UIDEF.special_button_inside's UIBox from G.UIDEF.special_button?

split saddle
#

how do you set a card's rank? i found SMODS.modify_rank, is there SMODS.set_rank?

red flower
#

SMODS.change_base

split saddle
#

args?

red flower
#

it's in the docs

split saddle
#

ok

#

couldn't find this function in the docs, what are the other two parameters? if i had to guess: edition and juice animation

wintry solar
#

Silent and delay sprites iirc

midnight coyote
#

hey @red flower why is this not rendering?

jd_def['j_charcuterie_blue_java'] = {
    text = {
        border_nodes = {
            {text = "X", colour = G.C.WHITE},
            {ref_table = 'card.ability.extra', ref_value = 'xmult',retrigger_type = 'exp'}
        }
    },
    extra = {
        {text = '('},
        {ref_table = 'card.joker_display_values',ref_value = "odds"},
        {text = ')'},
    },
    extra_config = {
        colour = G.C.GREEN
    },
    calc_function = function(card)
        local num,denom = SMODS.get_probability_vars(card, 1, card.ability.extra.odds,'blue_javajd')
        card.joker_display_values.odds = localize { type = 'variable', key = 'jdis_odds', vars = {num,denom}}
    end
}

ive ensured that the name is right and everything

#

figured it would be worth pinging you seeing as you made the mod

red flower
#

is nothing rendering?

midnight coyote
red flower
#

i mean nothing from that?

#

i think extra needs to be wrapped in another table

midnight coyote
midnight coyote
red flower
#

maybe i made it work both ways but it should be like this

midnight coyote
#

something like this?

red flower
#

yeah

#

if that doesnt work i will test that when i get home

midnight coyote
#

it did work

#

thanks

solar eagle
#

well this is strange, brainstorm doesn't work