#💻・modding-dev

1 messages · Page 413 of 1

sage crater
#

ah ok
thank you

rapid stag
#

okay, so you know G.hand.highlighted? is there a way to do that for jokers?

#

i can't imagine that G.jokers.highlighted is a thing

red flower
#

it is

rapid stag
digital sun
#

am i doing this right?
trying to make text update as time goes on like misprint

glass crown
#

hi! there are some things that im having some trouble finding the localization stuff for
image 1: the consumable type name in the collection screen
image 2: the part that's supposed to say "X pack" at the bottom of the pack screen

marble axle
#

anyone know how to make engulf not crash my game when entering a shop other than just disabling it?

sturdy compass
#

Bump

wild escarp
#

How could I reset all this for every new run? I'm trying to make a chellenge deck that starts with one random card each time.

local function set_start_card()
    split_suit = pseudorandom_element({"S", "H", "C", "D"}, pseudoseed(("willatro_split")))

    local _rank = math.random(2, 14)
    if _rank < 10 then
        split_rank = _rank
    elseif _rank == 10 then
        split_rank = 'T'
    elseif _rank == 11 then
        split_rank = 'J'
    elseif _rank == 12 then
        split_rank = 'Q'
    elseif _rank == 13 then
        split_rank = 'K'
    elseif _rank == 14 then
        split_rank = 'A'
    end
end
digital sun
#

honestly props to all the guys that are basically always in this channel idk how they do it

#

like without going insane

digital sun
granite nymph
#

im asorry fro asking this but can someone help me with a joker

#

i didnt want to give up and ask someone else to make ti but ve been siting here for hours

rapid stag
#

need a quick sanity check:

var = 'test'
type(var) == 'string'

this is a thing i can do, right? do i have something wrong here cirLost or would type() have a different return in this case

faint yacht
#

type(var) should return 'string' in that case, yeah.

sage crater
#

Dunno ‘bout two. Haven’t gotten that far myself. Sorry

rapid stag
#

is it possible to turn a joker into a joker that isn't present? like for example, say i had a joker cardarea that just contained the base joker and i wanted to turn it into a completely different joker.

like say i wanna do the sequence flip joker face-down, change it into... idk, half joker, flip it face-up again.

is that a thing that's doable

sturdy compass
rapid stag
sturdy compass
#

getPosition is there

rapid stag
#

yeah, seems like getPosition is what you want, no underscore, camel case

sturdy compass
#

oh my god 😭

#

stg that would've taken me like an hour to figure out myself

#

ty

rapid stag
shell kite
#

Hello, im starting with modding and I want to do a Joker with the ability to reactivate all the played cards but only when all the five cards played are diamonds, this with a chance of 1/4, I only need it to verify that all the cards played are diamonds
Any idea?

faint yacht
#

1/4 to retrigger all scoring cards if 5 Diamond cards are played?

#

Or individual 1/4 chances?

shell kite
#

All scoring cards in the played hand

faint yacht
#

...does each Diamond card have the 1/4 chance to be retriggered or is the 1/4 chance for the entire scoring hand to be retriggered?

shell kite
#

Oh

sleek cliff
#

how do I go by disabling a joker, and then re-enabling it after defeating a boss blind

rapid stag
shell kite
rapid stag
# shell kite Hello, im starting with modding and I want to do a Joker with the ability to rea...

imo the best way would be to first do a thing in context.before that starts with setting a boolean in the extra table to true, loops through the hand checking if the cards are not diamonds. if it finds a non-diamond card, it sets the boolean false and breaks the loop

then outside of the context.before you do a check on that boolean with a context.individual and context.cardarea == G.play check, in which you just return { repetitions = 1 }

#

lemme see if i can't whip something up that you could toy with

faint yacht
#

-# Was writing similiar text all this time, too slow- 😂

#

My wall of text be like:

In context.before, iterate over context.full_hand to check :is_suit('Diamonds')... if all are Diamonds, set a card variable (card.ability.extra.alldiamonds, for example) to true to reference later.

Alongside context.cardarea == G.play and context.repetition and not context.repetition_only, you also do and card.ability.extra.alldiamonds that we set earlier.

Then, after hand is played, with context.after, card.ability.extra.alldiamonds should be reset to false or nil.

rapid stag
faint yacht
#

¯_(ツ)_/¯

rapid stag
# shell kite
calculate = function(self, card, context)
  if context.before and context.main_eval then
    card.ability.extra.retrig_dia = pseudorandom('resonant') < G.GAME.probabilities.normal/4

    if card.ability.extra.retrig_dia then
      for i = 1, #context.full_hand do
        if not context.full_hand[i]:is_suit('Diamonds') then
          card.ability.extra.retrig_dia = false
          break
        end
      end
    end
  end

  if context.individual and context.main_eval and card.ability.extra.retrig_dia then
    return { repetitions = card.ability.extra.repetitions }
  end
end

...i think this is all you need?

#

oh whoops, the 1 in 4 cirDerp

#

was too focused on making the repetition work that i forgot about the condition

#

there you go

shell kite
shell kite
rapid stag
# sleek cliff is this the right string??

what you pass into the debuff arg should be the boolean state of whether you want the debuff or not, true being the card debuffed and false being undebuffed

the source arg should be a string that you make up that is associated with your joker.

you make two calls, one with debuff being true when you want to debuff your joker and one with debuff being false when you want to remove the debuff. the source should be the same string each time. what it says about reset is just a string that can be passed in to force remove all debuffs that have been applied by that function

rapid stag
#

it's THAT easy?!

manic rune
#

yes

rapid stag
#

question -

myFunnyFunction = function()
  return { myFunnyVar = 'myFunnyString' }
end

local getMyFunnyVar = myFunnyFunction().myFunnyVar

is that a thing i can do

#

or do i have to call the function and get its return table into a variable first

sturdy compass
#

Ok! So! I found out how much of an idiot I am for not knowing exactly what Moveables and Nodes are. Now my problem is that these functions are not going off for some reason and I really do not know why 😭

rapid stag
sturdy compass
unborn bay
#

tip: use debug prints

rapid stag
#

yeah, would need more information on the initialisation and structure of G.SPLASH_MAXIMUS_LOGO to understand the nature of the issue cirThink

#

it could be that when you're setting up the moveable, something isn't going as you expect

sturdy compass
#

G.SPLASH_MAXIMUS_LOGO is a Sprite object (which is an extension of Moveable, which is ALSO an extension of Node which houses these functions)

rapid stag
#

in which case yes, you need to drill deeper with debug prints and evals

#

because that doesn't make sense to me why those functions aren't firing

sturdy compass
#

No kidding lmao

#

My current theory is that for whatever reason, the Controller object (my mouse) cannot target it for some reason, but I have no clue why 😭

rapid stag
#

thunk issue

sleek cliff
rapid stag
manic rune
#

whats the thing in the G.UIT.T's config that rotates the text again

sleek cliff
#

would this be the correct code? it's doing nothing

rapid stag
sleek cliff
#

when a gold card is played, debuff the joker until the boss blind is beaten

rapid stag
#

the problem with that, if you got it working, is that you need to undebuff the joker externally because calculate won't be called on a debuffed joker

so the joker would debuff but never be removed

#

i recently wrote a joker that debuffs itself based on a condition

manic rune
#

isnt the third arg supposed to be a string

rapid stag
#

yes

#

what i ended up doing was just designating an "auto end of round undebuff" source and hooking SMODS.calculate_context to go through each joker at the end of round and debuff any jokers debuffed by it

#

anyway, as far as getting debuffing itself working

rapid stag
# sleek cliff

your condition isn't entering because playing_card isn't a thing.

sleek cliff
#

ohhh

rapid stag
#

then debuff the joker once that gives you the hit you're looking for.

but as i said, writing a condition to remove the debuff in the joker itself won't work

manic rune
#

i wonder why people use for i = 1, #context.full_hand do instead of for i,v in ipairs(context.full_hand) do

rapid stag
#

well, either works cirDerp the latter's probably better. i guess the more manual integer loop is habit

manic rune
#

fair

sturdy compass
rapid stag
#

no cirSlain

sleek cliff
#

I think I might have it not be rebuffed

#

oh

molten musk
#

morning

#

so this is purple seal code

SMODS.Seal {
    key = 'Purple',
    pos = { x = 4, y = 4 },
    badge_colour = G.C.PURPLE,
    calculate = function(self, card, context)
        if context.discard and context.other_card == card and #G.consumeables.cards + G.GAME.consumeable_buffer < G.consumeables.config.card_limit then
            G.GAME.consumeable_buffer = G.GAME.consumeable_buffer + 1
            G.E_MANAGER:add_event(Event({
                trigger = 'before',
                delay = 0.0,
                func = function()
                    SMODS.add_card({ set = 'Tarot' })
                    G.GAME.consumeable_buffer = 0
                    return true
                end
            }))
            return { message = localize('k_plus_tarot'), colour = G.C.PURPLE }
        end
    end
}

how do i make it when played instead of when discarded?

#

@daring fern

sage crater
#

I think it's gonna be if context.cardarea == G.play and context.main_scoring

molten musk
#

i know that, but to what?

#

oh i see

sage crater
#

if you check the wiki, there's a good chance it'll be there 👍

molten musk
#

im new to coding lua so

sage crater
#

same

molten musk
#

checking it every line

sage crater
#

solid

molten musk
#

man how i wish for a partner to work on my project 😩
gonna be so much help

molten musk
#

whats wrong with the spectral code, when i use it game crashes?

molten musk
sage crater
#

how new are you to programming in general? Genuine question

molten musk
#

so i used to code in C# and C++
also learned java for a while
forced to know paython for uni

#

so coding in general i have a good basis

#

but never learned lua

viral ember
sage crater
sage crater
viral ember
#

is there a VSC Balatro library plugin ?

molten musk
viral ember
#

set seal is breaking

unborn bay
#

add yer mod prefix

#

yall keep forgetting it

sage crater
viral ember
molten musk
#

family calling

#

be right back

#

or after 15 mins

#

im back

#

didnt take long

molten musk
#

like add a new line or modify one

sage crater
viral ember
#

you know what ignore me

#

I just started lmao

sage crater
#

what's your mod prefix

molten musk
viral ember
#

s_Seals_Blank?

sage crater
#

yeah

viral ember
#

weird prefix tho

molten musk
#

nope

viral ember
#

show?

sage crater
#

i think it'll be that, if s is the first letter

#

j is the first letter for jokers

molten musk
#

bad at naming, dont judge lol

viral ember
#

It's a consumable

#

wait

#

no

sage crater
#

no, I mean the name of the seal

viral ember
#

They're applying a seal

sage crater
#

there you go

viral ember
#

I'm being stupid lol

molten musk
#

nope

#

not working

viral ember
#

show?

unborn bay
#

theres no type prefix for seals

#

its just modprefix_sealkey

viral ember
#

oh

molten musk
#

same

viral ember
#

SHow?

#

What did you change it to?

molten musk
sage crater
#

s_Seals_Blank

molten musk
#

i can stream if u are to a VC...

sage crater
#

would be the full name

molten musk
sage crater
#

hm ok

molten musk
#

and with c_

viral ember
#

can we see the Seal registering

molten musk
#

localiztion?

viral ember
#

all of it

unborn bay
#

including the seal definition

molten musk
unborn bay
#

😭

#

no

viral ember
#

bruh

unborn bay
#

your seal definition

#

in your code

#

via SMODS.Seal

molten musk
viral ember
#

Seals_Seals_Blank

#

Try that

sage crater
molten musk
viral ember
#

You have Seals in the key lmao

sage crater
#

change key = "Seals_Blank" to key = "Blank"

viral ember
#

or that

sage crater
#

and then the s_Seals_Blank should work

viral ember
#

preferably do that

molten musk
#

yep

unborn bay
#

no s_

sage crater
#

oh, interesting

unborn bay
#

again seals dont have type prefixes

#

only mod prefixes

sage crater
unborn bay
#

j_ for jokers, c_ for consumables, b_ for decks, bl_ for blinds, v_ for vouchers........ uhh

sage crater
#

decks being called "backs" is still funny to me

viral ember
#

b_ for decks ?

#

oh

unborn bay
#

yeah because card back

viral ember
#

that's...

#

wow

glass scaffold
#

the s:2.0 isn't scaling the text properly, and I've searched through SMODS wiki trying to find out why

unborn bay
unborn bay
viral ember
#

I prefer to stay living

glass scaffold
#

Thanks

molten musk
#

still no

frigid cargo
#

when people make a type of blueprint joker, do they retrigger the card or inherit the card cause i cant really figure out how one would inherit the card

molten musk
#

inherit

#

but i also dont know how that works

sage crater
eager basin
#

Kinda niche question but would it be possible to have a gif as a custom joker asset without having to modify anything major?

daring fern
viral ember
#

How possible would it be to add a widget next to discards?

#

"widget"

viral ember
#

what?

#

oh ok

#

if you don't know, why did you respond lmao

daring fern
hybrid shadow
#

what are the three variations of the return for xchips

viral ember
#

ohh

daring fern
hybrid shadow
#

regular chips and mult only have one return variation right? or are chips_mod and mult_mod also valid returns and would need to be accounted for?

daring fern
spare wren
#

but isn't h_mult for mult held in hand?

#

or is it the same regardless

daring fern
hybrid shadow
daring fern
drowsy acorn
#

what context do i need to use to see if a joker is getting destroyed? the joker im making needs to do stuff when it gets destroyed but i cant figure out the right way to go about it

hybrid shadow
daring fern
hybrid shadow
# daring fern What are you trying to do?

hooking the effect return of jokers (which i already have the major code for, i just need to make sure all my bases are covered in terms of the ways that chips, mult, xchips, and xmult are expressed in the code. i already have xmult (and now xchips), i just need mult and chips).

hybrid shadow
viral ember
#

banan

manic rune
#

Banan

#

another area for modders to fill with their ui

viral ember
#

wait I have an idea

#

what if the banan meter was underneath the blind chip? 💀

thorn furnace
#

wha

#

actually you just gave me a really dumb idea for something in my mod

viral ember
#

like you have to grab the blind chip to see how much potassium you have

thorn furnace
primal robin
#

Just another unjunkify idea: replace all custom indicators as numbers and display what there numbers means on hover, so you have much more space for displaying all of them

empty frost
#

what is this?

manic rune
#

how do i get the text inside here? (would be nice to figure out why the box isnt semi-transparent too)

primal robin
#
  1. Set id for element with text
  2. Use object
#

Also, exist function adjust_alpha(color, new_alpha)

sage crater
#

I probably set this up wrong, but how do I get a joker to basically give +^1 during the main scoring of a hand, and then at the very end the emult is applied to the mult?
(I have talisman)

daring fern
sage crater
#

oh, that's it?

#

does everything else work as intended at this point?

#

it does not

#

I need that emut reset back lol

daring fern
sage crater
#

actually I think it needs to be 1

#

since ^1 does nothing

#

fixed it on my version, but I appreciate the help 🫡

manic rune
oblique aurora
#

i want to start modding the game and i already have a few ideas in mind, but i dont know how to (i tried following a guide but i didnt understand it), can someone help me?

cinder cliff
#

How do you check if a certain joker exists in your joker area?

daring fern
cinder cliff
gaunt phoenix
#

can I use that to transform a card into a Stone Card ? if yes, what am I supposed to put as arguments ?

red flower
#

"m_stone"

cinder cliff
#

m, stone, delicous

gaunt phoenix
#

it worked thanks ✨

gaunt phoenix
#

is it possible to make some consumables spawn more than others in boosters ?

#

(custom booster)

manic rune
#

<@&1133519078540185692>

livid scroll
#

🔫

manic rune
#

epic, thank you :3

west prism
#

Is there a quick way of getting a blind's key from its name? G.GAME.last_blind only has the name, for example, but I'd prefer to handle keys

molten musk
#

my consumable is not working , keep crashing the game when used

#

actually, nevermind

#

it somehow worked on its own

modern kindle
daring fern
spring lantern
#

started a joke mod with some friends yesterday

west prism
gleaming yew
#

How do I do the (Currently +[Number] [whatever]) thing?

molten musk
#

i want this to add tarots or planets

#

for now its just tarots

#

how do i do -- or planet--

red flower
#

iirc Tarot_Planet is a set

molten musk
#

so "set = Tarot_planet"

#

like this?

placid star
#

does anyone have a website dedicated to their mod? I'd love to take a look for inspo

red flower
#

yes, but uppercase P

daring fern
molten musk
#

ok, thx

#

what about localiz message?
what does it do?

viral ember
#

How do you modify stuff like UI?

modern kindle
#

That feels pretty broad, what about ui are you trying to modify

viral ember
#

like the blind ui

#

this stuff

molten musk
#

i think its not working

viral ember
#

are there any mods that modify it? (the blind ui)

molten musk
#

umm....

#

it worked but now it does this

daring fern
red flower
molten musk
#

which line are talking about?

#

or just add new line?

daring fern
molten musk
#

ok ^^

#

what did i do wrong now TT

daring fern
molten musk
#

i should add if its above limit do nothing?

daring fern
molten musk
#

where do i add that?

daring fern
molten musk
#

oh ok

#

that worked

#

thanks

molten musk
#

message = localize .......

red flower
#

it grabs the text from the localization with the specified key

molten musk
#

i see

#

ok so i made same code for spectral seal, but i want to add 1/3 chance to trigger
and 1/6 chance for destroy

#

how do i add that?

gaunt phoenix
#

what do I need to put here to access the cards in the played hand ?

gaunt phoenix
daring fern
gaunt phoenix
#

thanks !

gaunt phoenix
daring fern
gaunt phoenix
daring fern
gaunt phoenix
#

hmmm

#

what context should I check ?

gleaming yew
#

How do I make a +hand and/or +discard be for the rest of the run?

gaunt phoenix
daring fern
gaunt phoenix
#

fixed ! thaanks !

gleaming yew
#

these should not be happening, right? it's supposed to say (Currently [symbol][number] [Chips or Mult])

daring fern
gleaming yew
#

...loc_vars?

daring fern
gleaming yew
#

this??

#

I think I see what's wrong

#

,,,nevermind i give up.

normal crest
manic rune
gleaming yew
granite nymph
#

does anyone know how you would display a random hand in the joker description (and maybe random rank if i havent figured it out yet) thanks

normal crest
gleaming yew
#

Okay

gleaming yew
#

Visual Studio, the non-comm version
I just made it blue with a theme

#

wait, that should start at one.

#

(different Joker)

#

oh it's just displaying the wrong one

#

whoopsie

granite nymph
#

im using notepad++ right now and that just ooks a lot cleaner

#

or it might just be my code lmao

gleaming yew
#

so if I want a joker to affect hands at the start of a round, rather than current hands, what do I do?

#

Also the actual scoring thing doesn't seem to do anything. The variables are working but the jokers don't score anything.

normal crest
#

what's your calculate function

gleaming yew
#

genuinely i have no clue what's going on here I just used jokerforge

normal crest
#

remove the context.cardarea == G.jokers part

#

of your if statement

buoyant crag
#

ive never personally used g.jokers in my ifs

#

also you don't need to put extra{} in your return since that should already be defined earlier in the joker code

normal crest
#

no, that's fine

#

the extra is for giving multiple effects in one return

#

so it will give chips first, then mult, then x mult

buoyant crag
#

oh then ignore me, i didn't know that lmfao

normal crest
#

same with chip_mod and chips and Xmult_mod with x_mult

granite nymph
gleaming yew
#

So one of them has this
How do I make that until you get rid of the Joker rather than current round

gleaming yew
#

The rest I'm either asking here or improvising.

normal crest
#

what is jokerforge

granite nymph
gleaming yew
#

Kristal is just a Deltarune fangame engine that also uses LOVE

#

and there's that

normal crest
gleaming yew
#

From what I've read from this server, it's a WIP

granite nymph
#

woah joker forge makes this 100% easier

gleaming yew
normal crest
normal crest
#

your entire joker if possible

gleaming yew
#

I've got

            return {
                chip_mod = card.ability.extra.chips,
                message = localize{type='variable',key='a_chips',vars={card.ability.extra.chips}},
                colour = G.C.CHIPS
            }
    end
end
}```
and
```    if context.joker_main then
            return {
                chip_mod = card.ability.extra.chips,
                message = localize{type='variable',key='a_chips',vars={card.ability.extra.chips}},
                extra = {
                    mult_mod = card.ability.extra.mult,
                        message = localize{type='variable',key='a_mult',vars={card.ability.extra.mult}},
                    colour = G.C.MULT,
                    extra = {
                        Xmult_mod = card.ability.extra.Xmult,
                        message = localize{type='variable',key='a_xmult',vars={card.ability.extra.Xmult}},
                        colour = G.C.XMULT
                    }
                    },
                colour = G.C.CHIPS
            }
    end
end
}```
#

for the two jokers' scoring

normal crest
#

for the first one can you try return { chips = card.ability.extra.chips }

gleaming yew
#

Well it's still not doing anything

normal crest
#

what steamodded version do you have

gleaming yew
normal crest
#

are you starting a new run

gleaming yew
#

,,,,I was about to ask if I should be

normal crest
#

you should if you ever change your joker's config

buoyant crag
#

yes you have to respawn the joker, in my experience

#

if you just reload the same run its the old version

glass crown
gleaming yew
#

what do i change to make this work?

if context.joker_main then
          return { Xmult = card.ability.extra.Xmult }
  end```
buoyant crag
#

pretty sure its Xmult_mod

gleaming yew
#

,,,nope, apparently not

buoyant crag
#

thats what i use for mine, did you start a new run and respawn the joker?

gleaming yew
#

Yes, I did

buoyant crag
#

oh, also make sure you add card = card, pretty sure you have to specify where the effect takes place in the return

gleaming yew
#

card = card???

#

what

faint yacht
#

card = card isn't required. xmult works unless you have something else that is not letting the variable through.

gleaming yew
#

Here's the entire scoring part

    if context.cardarea == G.jokers and context.joker_main then
        -- Check conditions for this rule
        if check_count_eq_5_played(context) then
            -- Pre-return code execution
            card.ability.extra.MultAdd = (card.ability.extra.MultAdd or 0) + 50
            
            return {
                message = "+"..tostring(50),
                colour = G.C.MULT
            }
        end
    end
    -- Main scoring time for jokers
    if context.cardarea == G.jokers and context.joker_main then
        -- Check conditions for this rule
        if check_count_eq_1_played(context) then
            -- Pre-return code execution
            card.ability.extra.MultX = (card.ability.extra.MultX or 0) * 2
            
            return {
                message = "x"..tostring(2),
                colour = G.C.MULT
            }
        end
    end
    -- Main scoring time for jokers
    if context.cardarea == G.jokers and context.joker_main then
        -- Check conditions for this rule
        if check_count_eq_3_played(context) then
            -- Pre-return code execution
            card.ability.extra.ChipsAddO = (card.ability.extra.ChipsAddO or 0) + 100
            
            return {
                message = "+"..tostring(100),
                colour = G.C.CHIPS
            }
        end
    end
    -- Main scoring time for jokers
    if context.joker_main then
            return { chips = card.ability.extra.chips }
    end

    if context.joker_main then
            return { mult = card.ability.extra.mult }
    end

    if context.joker_main then
            return { Xmult_mod = card.ability.extra.Xmult }
    end```
#

-# code partially made by jokerforge and partially put together with help from here

hallow forge
#

naily pfp

faint yacht
#

Merge the tables of joker_main if you want all 3 effects.

return { chips = card.ability.extra.chips, mult = card.ability.extra.mult, xmult = card.ability.extra.Xmult }
buoyant crag
#

yeah you can't have multiple returns under the same context, cuz once it hits a return, anything under that that could've triggered won't execute

gleaming yew
#

Okay, thank you!

gleaming yew
#

,,,so uh... it still isn't applying.

runic pecan
#

What would happen if a given Xmult is negative? Would the score get subtracted with the negative hand score?

buoyant crag
gleaming yew
#

i replaced the last 3 if context.joker_main etc with

    if context.joker_main then
            return { chips = card.ability.extra.chips, mult = card.ability.extra.mult, xmult = card.ability.extra.Xmult }
    end```
buoyant crag
#

its likely all of the returns that only return text, you can still have those function without returning by using SMODS.calculate_effect

faint yacht
#

if context.cardarea == G.jokers and context.joker_main then goes off first.

buoyant crag
#
                card = card,
                message = "SAFE!",
                colour = G.C.MULT
            })
            return {
                card = card,
                message = "X".. card.ability.extra.Xmult .. " Mult",
                Xmult_mod = card.ability.extra.Xmult,
                colour = G.C.MULT
            }```
gleaming yew
buoyant crag
#

heres an example from a working joker of mine

#

i use SMODS.calculate_effect to display text i want, then i just do a single return for the values i need

#

cuz again, once a joker returns, it won't execute any code after that point

gleaming yew
# buoyant crag ``` SMODS.calculate_effect({ card = card, messag...

So uh

        -- Check conditions for this rule
        if check_count_eq_5_played(context) then
            -- Pre-return code execution
            card.ability.extra.MultAdd = (card.ability.extra.MultAdd or 0) + 50
            SMODS.calculate_effect({
                card = card,
                message = "+"..tostring(50),
                colour = G.C.MULT
            })
        end
    end
    -- Main scoring time for jokers
    if context.cardarea == G.jokers and context.joker_main then
        -- Check conditions for this rule
        if check_count_eq_1_played(context) then
            -- Pre-return code execution
            card.ability.extra.MultX = (card.ability.extra.MultX or 0) * 2
            SMODS.calculate_effect({
                card = card,
                message = "x"..tostring(2),
                colour = G.C.MULT
            })
        end
    end
    -- Main scoring time for jokers
    if context.cardarea == G.jokers and context.joker_main then
        -- Check conditions for this rule
        if check_count_eq_3_played(context) then
            -- Pre-return code execution
            card.ability.extra.ChipsAddO = (card.ability.extra.ChipsAddO or 0) + 100
            
            SMODS.calculate_effect({
                card = card,
                message = "+"..tostring(50),
                colour = G.C.CHIPS
            })
        end
    end
    -- Main scoring time for jokers
    if context.joker_main then
            return { chips = card.ability.extra.chips, mult = card.ability.extra.mult, xmult = card.ability.extra.Xmult }
    end```
Would this work? Or do the other ones NEED returns?
buoyant crag
#

well you could reduce redundancy by having all of those conditionals under a single if, but as long as your if statements work i think it would yeah

gleaming yew
#

Also do I need to reopen the game every time or can I just like. start a new run

buoyant crag
#

reopen

#

it gets tedious, i know

#

i appear offline on steam so i don't constantly pop up for friends lmao

obtuse silo
#

i'm trying to make a consumable but idk what the context would be for using it
the idea is that the consumable will transform a selected joker (this doesn't work with all jokers unfortunately) into a quote-unquote "parallel counterpart"

obtuse silo
#

ohh
so you use "use" instead of "calculate"

gleaming yew
#

okay so it still doesn't apply

        -- Check conditions for this rule
        if check_count_eq_5_played(context) then
            -- Pre-return code execution
            card.ability.extra.MultAdd = (card.ability.extra.MultAdd or 0) + 50
            SMODS.calculate_effect({
                card = card,
                message = "+"..tostring(50),
                colour = G.C.MULT
            })
        end
        if check_count_eq_1_played(context) then
            -- Pre-return code execution
            card.ability.extra.MultX = (card.ability.extra.MultX or 0) * 2
            SMODS.calculate_effect({
                card = card,
                message = "x"..tostring(2),
                colour = G.C.MULT
            })
        end
        if check_count_eq_3_played(context) then
            -- Pre-return code execution
            card.ability.extra.ChipsAddO = (card.ability.extra.ChipsAddO or 0) + 100
            
            SMODS.calculate_effect({
                card = card,
                message = "+"..tostring(50),
                colour = G.C.CHIPS
            })
        end
            return { chips = card.ability.extra.chips, mult = card.ability.extra.mult, Xmult_mod = card.ability.extra.Xmult }
    end
end
}```
#

It adds the things, but doesn't apply

buoyant crag
#

so by adds the things, like its hitting the card.ability.extra modifications under each check_count?

gleaming yew
#

Yeah.

buoyant crag
#

are the calculate_effects working too? it should be popping messages under the joker itself if it is

gleaming yew
#

Yes it is

#

And it's updating the card description (checking by repeatedly doing high cards)

buoyant crag
#

i've never wrote a return without specifying a card variable personally, i would try that too even though someone else had said it wasn't necessary

#

cuz the calculate_effects are working with it

snow vale
#

what do i change here to make it say whatever i want it to say?

gleaming yew
#

Trying specifying card = card.

buoyant crag
#

yes, that should tell the game to trigger the calculation messages under the joker itself, as the calculate_effect's do

gleaming yew
#

...card = card didn't make it work. should it be outside the return??

buoyant crag
#

no should be inside, might be something wrong with your chips mult and Xmult variables then

gleaming yew
#

("to card" referring to itself in the description, by the way)

buoyant crag
#

when are you updating chips, mult, and Xmult in the calculate function? looks to me like they're always 0, 1 and 0 from the original declaration in extra

gleaming yew
#

the actual addition/multiplication to the variables work

buoyant crag
#

yes, but in the calculate function you're updating MultAdd, MultX, and ChipsAddO, which are never returned

gleaming yew
#

,,,oh.

buoyant crag
#

switch the updates to the variables you return and it should work

gleaming yew
#

Okay, let's try that

wintry solar
#

card = card doesn’t do anything

gleaming yew
#

i was told to try that just to be sure

normal crest
wintry solar
#

What’s the problem?

normal crest
#

You can't refer to other values in the config like that

wintry solar
#

I don’t have time to read back 😂

buoyant crag
gleaming yew
#

It's not applying the effects to the mult or chip count. The variable changes work, but not the application.

obtuse silo
#

is there any way to identify a specific joker that is currently selected?

gleaming yew
#

This should fix that, right? I'm updating the right ones now... I think.

normal crest
#

Because those are not the ones updated

gleaming yew
#

OHHH okay

wintry solar
#

Also don’t use xmult_mod

normal crest
#

That's the downside of using that jokerforge tool I guess

#

You don't learn lua

gleaming yew
#

It's still not applying the stuff in the return.

buoyant crag
#
        -- Check conditions for this rule
        if check_count_eq_5_played(context) then
            -- Pre-return code execution
            card.ability.extra.mult = (card.ability.extra.mult or 0) + 50
            SMODS.calculate_effect({
                card = card,
                message = "+"..tostring(50),
                colour = G.C.MULT
            })
        end
        if check_count_eq_1_played(context) then
            -- Pre-return code execution
            card.ability.extra.Xmult = (card.ability.extra.Xmult or 0) * 2
            SMODS.calculate_effect({
                card = card,
                message = "x"..tostring(2),
                colour = G.C.MULT
            })
        end
        if check_count_eq_3_played(context) then
            -- Pre-return code execution
            card.ability.extra.chips = (card.ability.extra.chips or 0) + 100
            
            SMODS.calculate_effect({
                card = card,
                message = "+"..tostring(50),
                colour = G.C.CHIPS
            })
        end
            return { chips = card.ability.extra.chips, mult = card.ability.extra.mult, Xmult_mod = card.ability.extra.Xmult }
    end
end
}```
#

main issue i saw was that the variables in each conditional didn't match the variable in the return, so you're updating MultAdd in a condition and then returning a separate mult variable, which means the update doesn't carry over

#

so essentially card.ability.extra.chips, mult, and Xmult just stay 0, 1, and 0 from your initial declaration

#

this might not be the exact effect you had in mind, but i at least wanna get it scoring so that the logic kinda works

obtuse silo
normal crest
#

G.jokers.highlighted is a list of all highlighted jokers in the order they were selected

#

You can only highlight one tho, so it's always the first one

obtuse silo
#

so that's a yes?

normal crest
#

That's a no

#

G.jokers.highlighted[1] is the selected joker

#

Make sure to check if there even is a highlighted one to begin with

obtuse silo
#

so if G.jokers.highlighted == 1 then works?

#

alright
now to make sure it only works with specific jokers

daring fern
modern kindle
obtuse silo
daring fern
obtuse silo
#

i see

granite nymph
#

does anyone know how to check for a random card? Like random (rank) of (suit)

normal crest
obtuse silo
#

ok now to check specific jokers
because some jokers do not work with this consumeable

pure salmon
normal crest
# pure salmon wait why not

you can use it if you wanna specify a custom message, but if you're just gonna replicate the xmult message just use xmult

#

tho I believe you can also override xmult message with xmult_message

granite nymph
#

im trying to make "if hand contains a (RANDOM HAND) and (RANK) of (SUIT), earn 30 dollars and ive been trying to do this for like an hour

#

wait i could borrow some code from idol and maybe put a hand onto it??

granite nymph
#

i know i have vanila remade

pure salmon
#

yeah you can

granite nymph
#

the onyl thing that i dont like about vanilla remade is that they dont have the descriptions for the jokers so i have no idea how to format those

pure salmon
#

those are in the localisation file

#

if there's a vanilla joker with a behaviour you're looking for 100% just rip it from vremade

granite nymph
#

yo thank you so much that helps a lot

pure salmon
#

np

granite nymph
#

im still gonna have to find out about the random hand mechanic but that should be pretty easy (I hope)

pure salmon
#

that behaviour is in to-do list

obtuse silo
#

would G.jokers.highlighted[1].name get the name of the highlighted joker?

granite nymph
hollow turtle
#

Does anyone know if there is a context for choosing the boss blind?

obtuse silo
#

should be context.settingblind and context.blind.boss

#

one checks for when a blind is chosen
the other checks if it is the boss blind
put em' together and it selects the boss blind

hollow turtle
#

Thanks a lot

daring fern
buoyant crag
#

how would you go about zeroing out the round score? i have gotten a joker to zero out a scoring hand, but i was thinking the best way would be to somehow get the current round score and set the scoring hand to subtract that much, if thats possible

obtuse silo
# daring fern No.

i'm looking at VanillaRemade and that appears to be the case
sorry for spreading misinfo

obtuse silo
# daring fern No.

okay
so how would i identify a selected joker
by name or id or whatever

gleaming yew
gilded blaze
#

how do I fix midground layer DEAD

buoyant crag
devout badger
#

what's the context you use for when a joker is activated

#

added_to_deck?

daring fern
normal crest
#

what do you mean by activated

devout badger
#

like when its added to the joker slots

normal crest
#

that's not a context but that ^

gleaming yew
normal crest
#

A different function in your joker def

devout badger
#

I want a joker that does the same thing as the negative edition basically

normal crest
#

you'd have to modify G.jokers.config.card_limit iirc

devout badger
#

yeah I see that from looking at card.lua I just don't know where to put it

obtuse silo
# normal crest .config.center.key

lemme just say this is gonna take a while to write considering the number of Jokers i want to make this apply to
is there any way to run through a list or two to check?
probably is tbh

daring fern
#

You would do for example jokerconversions = {j_jolly = "j_sly"}

devout badger
#

+2 joker slots is what I want

daring fern
#

Then you would do jokerconversions[key] to get it.

spring lantern
#

how could this happen to me...

normal crest
#

and make sure to undo the effect in remove_from_deck

obtuse silo
devout badger
#

in card.lua its on self.added_to_deck

daring fern
devout badger
#

line 412 of card.lua

daring fern
obtuse silo
spring lantern
normal crest
normal crest
spring lantern
#

yeah

#

calling it here

#

ignore the stupid effect it's a meme mod

obtuse silo
spring lantern
#

sound definition

#

the mod prefix is tabs

normal crest
spring lantern
#

like j_sly = "j_jolly"

#

and so on

spring lantern
normal crest
#

Also your file is in assets right

spring lantern
#

yea

#

assets/sounds

#

i have another sound there that works fine

#

removing the volume param didn't do anything

normal crest
#

I guess there is smt wrong with your file then

#

But idk what

spring lantern
#

no idea

#

tried to import it into audacity and it doesnt recognize the filetype so maybe the file is just borked

obtuse silo
spring lantern
#

yea

#

and the reverse if you want it to be 2 way

obtuse silo
#

i see
i was thinking about this a different way where we have two tables each containing one half of the conversion

normal crest
#

you can always add the reverse ones programatically after

obtuse silo
#

e.g. one with jolly, zany, etc.
and the other with sly, wily, etc.

spring lantern
#

true...

normal crest
#

Either way works fine

obtuse silo
#

might be more concise to work inversely too

#

and about that
since it contains some of my mod's jokers
would i reference them with the mod's prefix or with just j_jokernamehere

normal crest
#

j_prefix_key

dapper peak
#

hello guys, ive been trying to figure this out for like 4 hours can someone jusst give me some sample code to add a simple joker becuase when i do it it doesn't appear in the collection, thanks

obtuse silo
normal crest
#

if that's your prefix yeah, tho maybe they get lowercased

devout badger
#
    calculate = function(self, card, context)
        if context.card_added and not context.blueprint then
            if self then
                G.jokers.config.card_limit = G.jokers.config.card_limit + card.ability.extra.slots
            end
        end```
#

this isn't working

normal crest
rugged pier
#

is there a function that calculates enhancements triggering?

normal crest
#

The add_to_deck is a separate function

daring fern
daring fern
rugged pier
#

hmm okay ty

obtuse silo
obtuse silo
#

thank you

hollow turtle
#

I put {C:green}#1# in #3#{} chance this", in my joker's description, but instead of 1 it displays "table: " followed by some numbers, any idea why that is?

daring fern
hollow turtle
daring fern
#

And you're also asking for G.GAME

buoyant crag
#

just crashes when i call it

sturdy compass
#

Just came in to say I figured out how to do the thing I was asking about yesterday and I never want to touch Moveable/Node code ever again DedToo

red flower
#

amazing

modern kindle
#

It do look sick

#

Now do it again

normal crest
#

The clickable part

sturdy compass
#

The biggest problem I came across is that since I was drawing it with shaders, the actual sprite was never getting drawn and therefore not calling Controller functions, so I had to forgo a :draw() function and directly add the sprite to the draw hash so it would work without another sprite getting overlayed on top of the animated stuff 😭

lone hedge
#

how would one go about using other joker's triggers
like a joker that gets +1 mult each time bloodstone is triggered for example

red flower
devout badger
#
    add_to_deck = function(self, card, from_debuff)
        if from_debuff == false then
            G.jokers.config.card_limit = G.jokers.config.card_limit + card.ability.extra.slots
        end
    end,

    remove_from_deck = function(self, card, from_debuff)
        if from_debuff == false then
            G.jokers.config.card_limit = G.jokers.config.card_limit - card.ability.extra.slots
        end
    end``` am I in the wrong scope or something here
normal crest
#

use not from_debuff instead of == false

#

I doubt it's ever false

devout badger
normal crest
#

awesome

devout badger
modern kindle
#

What if I ate it then what would you do

gilded blaze
#

nice
it was just me not using SMODS.DrawStep lmao

sturdy compass
lone hedge
red flower
digital sun
#

im trying to make the description of this joker update over time like misprint does
right now it shows the correct numbers but doesnt update them

red flower
primal robin
#

Uh, working with sprites so annoying, especially on cards

red flower
#

uhhhh try string = {{ref_table = card.ability.extra, ref_value="mult"}}

digital sun
#

yup it works

#

thanbk yo

normal crest
#

yw

hybrid shadow
#

are there any other variations of chip return and mult return i should take into account in these

undone slate
#

Not sure if this works at all because I can't find any info on how to do it properly so I'm just using imagination
trying to do reverse stone card, getting an "unexpected symbol near 'for' "
Using VanillaRemade as ref

hybrid shadow
red flower
normal crest
#

Print it with debugplus or in the source code

undone slate
#

the opposite of a stone card.
I imagine it's very wrong I've got no idea, tried to check in the smods. docs but couldn't find something that would work similarly

undone slate
#

opposite of a stone card means it's valid as all ranks, all suits and as a face card

#

but it has low value

normal crest
#

we don't have multi rank in smods unfortunately

red flower
keen totem
#

one of my mods somehow has the same modicon as another despite the former not having the asset OR code for the modicon of the latter mod

undone slate
#

oh wel

#

I give up on it then

#

sad

red flower
normal crest
#

o7

undone slate
red flower
#

for that there's the any_suit parameter

normal crest
#

Suits are fine yeah, wild cards are all suits after all

keen totem
undone slate
#

the idea was making a joker playable card that looks like the Spanish playing cards' joker

#

that counts as a wildcard for everything

red flower
#

my optimistic guess is that multi rank will be possible within 6 months

daring fern
primal robin
keen totem
#

perchance not

hybrid shadow
red flower
#

we hate straights

primal robin
#

More like straights hates all of us

#

Should I work towards animation skip, or just play some gold stake?

daring fern
stiff quiver
#

if i make a joker's rarity legendary does it automatically get added to the soul (the spectral card) pool?

west prism
#

I want to display a joker's values which depend on its position, is there like a context for moving a joker's position to update the variables there or smth else better than repeating the same function as when scoring in loc_vars ?

stiff quiver
#

ok thanks

red flower
viral ember
#

How would I hide a suit until the player uses a joker

west prism
rapid stag
#

is there a way to decrease the resolution of a background colour in localisation text so that the corners of the background are more rounded like in blueprint's/brainstorm's compatibility thingy

red flower
#

not without patching localize
but I would recommend just recreating the UI yourself

#

with main_end

tall jewel
#

oh thats new

modern kindle
lone hedge
red flower
daring fern
#

It would be context.other_card.config.center.key == 'j_bloodstone'

#

Also bloodstone doesn't return mult

granite nymph
#

can someone helop me?

normal crest
#

you have a syntax error in jokers.lua file

granite nymph
#

i know that

#

im nto srue what thoguh

normal crest
#

do you use vscode

granite nymph
normal crest
#

makes sense

#

send a ss of your file near line 194

pure salmon
#

also consider using vscode

lone hedge
granite nymph
granite nymph
pure salmon
#

a LOT better yeah

daring fern
lone hedge
granite nymph
#

should i use the blue visual studio or the purple one

normal crest
# granite nymph

beyond any syntax errors you might have, you're mixing stuff up

pure salmon
rapid stag
#

-# me just out here using notepad++

devout badger
#

how do I make next(context.poker_hands['High Card']) strict (ie returns false when you play anything that isn't just a high card)

normal crest
#

there's nothing wrong with using notepad++

#

as long as you know the syntax of the language

granite nymph
daring fern
granite nymph
#

and notepad++ is a nomral bikle

devout badger
normal crest
#

ehh, i'd say it's more than that, I mean I am still using it while knowing

daring fern
lone hedge
normal crest
granite nymph
#

IT WORKS!!\

devout badger
granite nymph
#

thank you visual studio

north swallow
#

how would i check if an user is hovering over a certain object? not a card or joker, like, an object generated with love.draw with a bounding box i made.

timid parrot
# granite nymph so visual studio is basically training wheels

Visual studio (purple) is a bloated IDE for programming C#, C++, and some other languages. Last I checked, it’s missing basic features that every modern text editor for programming has. Vscode (blue) is a far lighter text editor that can be made to have most of the IDE features you need to program using plugins. Vscode is preferable for Balatro programming and most uses in general

faint yacht
#

VS is "standardized" programming with the languages, VSCode is more flexible with plugins and what not.

granite nymph
#

edit: it did not work

#

the title and stuff works but the rank suit and hand soes not cahnmge

urban wasp
red flower
#

\"

urban wasp
#

gotcha

primal robin
#

Or just use singlequore for string

scarlet thorn
#

Failing at patching DebugPlus. Anyone able to see my problem with this target?
No not found errors in console, so my pattern isnt the problem. Supposedly.

[[patches]]
[patches.pattern]
target = '=[SMODS DebugPlus "core.lua"]'
pattern = '''_card:remove()'''
position = "after"
payload = '''if _card.config and _card.config.tag then
    _card:remove_from_game()
end'''
match_indent = false```
red flower
#

i think it's because debugplus doesn't load through smods

#

it's a lovely mod

scarlet thorn
#

mmm maybe, but it has the metadata for a smods mod

red flower
#

yeah but it loads the modules through a lovely file

scarlet thorn
#

Ill try targetting main then

red flower
#

i think there's a setting for lovely to tell you all the targets it finds

#

but i dont remember how

scarlet thorn
#

¯_(ツ)_/¯

scarlet thorn
pliant raft
#

How do I change seals texture?

glad osprey
#

why this not patch

scarlet thorn
glad osprey
#

... its a regex patch

primal robin
glad osprey
#

not a module

scarlet thorn
#

you arent using a lick or regex there

glad osprey
scarlet thorn
#

nvm im reading the wrong patches on my end

#

im fucking dumb

#

lmao

glad osprey
#

lmao

scarlet thorn
#

[patches.pattern]

glad osprey
#

already tried a pattern patch

#

doesnt work for what i want

red flower
scarlet thorn
gaunt thistle
red flower
gaunt thistle
#

n!p

scarlet thorn
#

n not p

pliant raft
#

Uhhhh for some reason this one doesn't work idk what should I do... (I'm not a coder)

willow plinth
#

anyone know why i get this stack overflow?

modlist: 3x Credits, Balatest, Banner, Better Vouchers This Run UI, Blueprint, DebugPlus, Galdur, Handy, Hold For Final Hand Score, JokerDisplay, JokerSellValue, Malverk, sortatro, SoulEverything, Talisman, Too Many Jokers, Unjankify

#

happens when i select any playing card

#

and now i remember why i didn't use talisman :(

#

i just wanna quit it all and go outside or something idk

proud depot
#

The text in loc_txt is appearing black when I made it white, the text is: {X:mult,C:white}X#2# {} mult how do I fix this

pale holly
#

do you have the full loc_txt just to see how it's coded ?

obtuse silo
#

for some reason the image is loading in just fine
but the name and description won't appear

granite nymph
#

someone needs to make a tutorial for this stuff. im trying to make a deck spawn jokers but it isnt working

obtuse silo
#

ahhh thanks

daring fern
stiff turret
#

my joker is not giving me the mult, can someone tell me whats going on?

    rarity = 2,
    atlas = 'Jokers', --atlas' key
    cost = 6,
    unlocked = true, --whether it is unlocked or not
    discovered = true, --whether or not it starts discovered
    blueprint_compat = true, --can it be blueprinted/brainstormed/other
    eternal_compat = false, --can it be eternal
    perishable_compat = false,
     calculate = function(self,card,context)
        if context.before and context.cardarea == G.jokers and not context.blueprint then
            if G.play.cards then
                local hasTen, hasNine = false, false
            
                for _, played_card in ipairs(G.play.cards) do
                    if played_card:get_id() == 10 then
                        hasTen = true
                    elseif played_card:get_id() == 9 then
                        hasNine = true
                    end
                end
    
                if hasTen and hasNine then
                    mult = card.ability.extra.mult
                    return {
                        message = "You Stupid",
                        play_sound("twentyjuan_youstupid"),
                        }    
                end
            end
        end
    end
}```
daring fern
stiff turret
mighty trench
#

like the line goes below

daring fern
#

Also you need your mod prefix.

mighty trench
granite nymph
mighty trench
#

mod prefixes would be good Somethingcom515 is wayyy more experienced

granite nymph
daring fern
granite nymph
#

sorry i wish there was a tutorial on this stuff

daring fern
digital sun
#

im trying to get these updating text to be put onto a localised variable
i dont really know what im doing tbh so im just trying random stuff and hoping it works

granite nymph
red flower
#

you need to build the UI for the text yourself

digital sun
#

ah

#

i tried to do that before but idk how to add lines and also the inactive color just set the color to white instead

#

so you couldnt see it

red flower
#

well it is kinda hard

#

the inactive color thing might be because the wiki is wrong

granite nymph
# mighty trench i dont know how to help this one but i think cryptid has that one deck with lege...
                (Cryptid.safe_get(G.PROFILES, G.SETTINGS.profile, "deck_usage", "b_cry_spooky", "wins", 8) or 0)
                    ~= 0
                or skip
            then
                G.GAME.modifiers.cry_spooky = true
                G.GAME.modifiers.cry_curse_rate = 0
                if Cryptid.enabled("j_cry_chocolate_dice") == true then
                    G.E_MANAGER:add_event(Event({
                        func = function()
                            if G.jokers then
                                local card = create_card("Joker", G.jokers, nil, nil, nil, nil, "j_cry_chocolate_dice")
                                card:add_to_deck()
                                card:start_materialize()
                                G.jokers:emplace(card)
                                return true
                            end
                        end,
                    }))
                end
            end```
#

entirely different code

willow plinth
#

"```lua" adds syntax highlighting

granite nymph
red flower
granite nymph
#

i was tryuing to make a joker and i decided to make a deck to make debugging the joker easier and as it turns out the deck is harder to make than the joker

digital sun
granite nymph
# red flower what's the code
    name = "Debug Deck",
     key = "debug",
     atlas = 'decks',
    pos = { x = 8, y = 6 },
    config = { jokers = 'j_yip_guess_who','j_yip_jester','j_yip_blue_card'},
    loc_txt = {
        name = "Debug Deck",
        text ={
            "Start with the last five",
            "jokers in the yippee's stuff catalouge"
        },
    },
   loc_vars = function(self, info_queue, back)
        return {
            vars = { localize { type = 'name_text', key = self.config.jokers, set = 'Jokers' },
            }
            
        }
    end
  }
mighty trench
orchid nest
#

when should you ever use self vs card?

daring fern
granite nymph
mighty trench
#

over the joker

#

in the collection

red flower
digital sun
mighty trench
stiff turret
red flower
mighty trench
stiff turret
red flower
#

lmao

scarlet thorn
digital sun
#

how do i add lines with this?

granite nymph
#

i was planning to makea deck whihc just gave you when yoyu loaded in

red flower
scarlet thorn
scarlet thorn
#

still needs rows tho

granite nymph
#

i already had debug plus i just didnt know it could od that

red flower
#

isn't B for spacing

digital sun
red flower
digital sun
#

ok thank,.

sage crater
daring fern
sage crater
#

upper didn't work for me when I was first making jokers

daring fern
granite nymph
#

how do you all know all this stuff theres no way to learn baaltro coding

keen totem
#

how do i get the card texture in a shader?

granite nymph
#

how do youi know about all the variables and stuff

red flower
#

i learned how to program way before i started modding balatro

#

and i read the docs

mighty trench
#

theres smods documentation

#

steamodded*

red flower
#

yes

rapid stag
red flower
#

well thats how thunk designed the localization system

sage crater
granite nymph
#

WG)WA sc

gaunt thistle
granite nymph
#

IVE BEEN SITTING HERE LITERALLY ALL DAY

#

AND WHAT DO I GHAVE\

#

NO NEW JOKERS

daring fern
gaunt thistle
#

I've been doing Balatro modding for over a year

gaunt thistle
#

it takes time

#

just be persistent

red flower
digital sun
#

why isnt this centered and how do i center it

red flower
digital sun
hybrid shadow
#

this doesnt seem to work (intended effect, add chips to joker when jokers that give chips are triggered)

hybrid shadow
granite nymph
#

i was actually planning on making zodiac legendaries

#

and the colors would be the hemosprecturn

hybrid shadow
#

i went in a far diff direction (making the actual characters into jokers)

scenic loom
#

Is there a context for jokers getting deleted from ankh or hex?

proud depot
#

What do i add to the end of create card?

#

I know its some sort of key

keen totem
#

what are all of the calculate function keys that can be +chips?

#

and same for +mult as well

keen totem
#

is that just for jokers or is that ANY chips or mult

daring fern
#

So yes, most likely.

keen totem
#

isnt there cases where chips is bonus or something

daring fern
keen totem
#

so should i include that too?

daring fern
#

I meant like card.ability.bonus is where chips go sometimes.

keen totem
#

would enhancements trigger this or not?

daring fern
red flower
scenic loom
red flower
#

nope

scenic loom
#

fuuuuuck

red flower
#

there's no context for joker destruction, you need to make it yourself

obtuse silo
#

relevant code:

red flower
#

update smods

hybrid shadow
#

still doesnt work

#

this is a completely different hook than what i was originally told would work

#

what does SMODS.find_card even do here

#

why is that a requirement

#

why would it not do anything otherwise

#

youre not telling me why the code works or helping me understand you're just pointing to the code and going "well thats just how that works"

hybrid shadow
obtuse silo
#

yey!! it works
but i wanna make the card flip before it swaps

hybrid shadow
#

hooking is already quite confusing to me and you giving me something completely different and not explaining why it's different isn't helping anything

daring fern
#

I'm not very good at explaining things.

normal crest
wintry solar
#

you shouldnt hook calc effect to do this

red flower
#

uhhh not to be that guy but isnt post_trigger the context you need

hybrid shadow
#

should i re-explain what im trying to do here

red flower
#

please

hybrid shadow
#

im trying to make a joker that gains (effect, since i have four joker variants of it) whenever a joker of (same effect) triggers

red flower
#

so like it does something with chips if a joker gives chips?

hybrid shadow
red flower
#

context.other_ret contains the effect the other joker returned

hybrid shadow
#

how would i write that out

tall wharf
#

what exactly is G.ROOM

red flower
# hybrid shadow how would i write that out

never used it before so i might be wrong but

if context.post_trigger and (context.other_ret.chips or context.other_ret.h_chips or context.other_ret.chip_mod) then

keep in mind this is an optional feature you have to enable (i dont remember the syntax for that rn)

rugged pier
#

is the id of stone cards 1?

red flower
#

i think it's randomized?

#

that's what i remember anyway

rugged pier
#

hmm so to check for if a card is stone i should just look at its center thingy right

modern kindle
#

You can just pull if its m_stone I think yea

red flower
#

SMODS.has_enhancement(card, "m_stone")

modern kindle
#

Doesn't has enhancement

#

Yea

rugged pier
#

awesome

#

ty

modern kindle
#

Youre so much faster than me on my phone n

#

Smarty pants

red flower
#

:3

rugged pier
#

i can do something like this "and SMODS.has_enhancement(context.other_card, "m_stone")" yeah?

red flower
#

yes

rugged pier
#

perfect

#

youre awesome

vital seal
#

How would i make it so a sound play's every time a joker is activated/scores something?

faint yacht
#

In return { }, add a sound = prefix_key.

vital seal
#

Thanks

hybrid shadow
obtuse silo
#

How would I make cards flip over
like they're getting enhanced
cuz that's the effect i want to use for Parallel

hybrid shadow
#

then it still isnt working

daring fern
hybrid shadow