#💻・modding-dev

1 messages · Page 476 of 1

red flower
#

yes, you need to change two things:

  1. make sure the previous_jokers table is not empty
  2. change set = "Joker" for a key = pseudorandom_element(G.GAME.modprefix_previous_jokers, "seed")
primal terrace
long sun
#

mm, so it seems that the game still wants the card i'm returning to my hand to be discarded

#

the face-down card is not interactable, and doesn't move with the card area

thorn furnace
#

How would I go about changing the width of a UI node
I tried doing something like this but it didn't do anything

local healthbar_UI = G.HUD:get_UIE_by_ID('healthbar_UI')
healthbar_UI.config.w = healthbar_UI.config.maxw * ALLOY.health / 100
healthbar_UI:recalculate()
G.HUD:recalculate()
long sun
thorn basin
latent river
#

i have made a monster

pastel kernel
latent river
#

i want him to also give 420 chips and add a gold sticker on each card played

#

i think i know how to add the chips function but no idea if it's possible to give stickers

tepid coral
latent river
#

lmao

pastel kernel
#

Or gold modifier like Midas mask?

latent river
#

although gold modifier could be cool if it wasn't in the game already

pastel kernel
#

Search up Midas mask

fading cedar
#

There’s nothing wrong with making something that exists somewhere else though

latent river
#

i mean i theoretically can do both but i think it's too much

#

it would be too op

long sun
#

okay i can't get this to work. i'm assuming i need to remove the card from play as well?

manic rune
latent river
#

for now atleast

#

my idea was funny 69420 number + reddit gold = stonks

#

funnily enough, is it possible to make a joker that debuffs your played cards?

long sun
red flower
#

no idea, sorry

hybrid shadow
long sun
#

draw the first played card back to hand

hybrid shadow
#

have you tried flipping the card at any point in this

long sun
#

i'll give it a go

#

wait didn't Gold Seal do this before!

#

there's a remnant of its code in state_events

red flower
#

I don't think only flipping the card is a good idea because I suspect it would have a phantom copy in G.discard that might cause problems

long sun
#

it has true instead of nil

#

okay progress! the true seems good, but the card is still flipped and cannot be selected

hybrid shadow
#

isnt the emplace here forcing the card to that location regardless of whether it was actually drawn or not

long sun
#

i've removed that, nothing changed

vast bough
#

return {vars = {localize((G.GAME.current_round.rankvar_card or {}).id or 14, 'ranks')}} why is this showing up as ERROR, does it expect a string instead

hybrid shadow
#

i think cryptid has a code card that returns the last played hand to your hand iirc

red flower
vast bough
hybrid shadow
#

unless G.GAME.last_hand_played_cards is vanilla

long sun
#

this isn't working, what should the references for the key and affected sprite be?

serene granite
#

My mod is almost complete !

#

I am missing one more big step then just some polishing and play testing for balance

long sun
#

nvm! found it ^u^

serene granite
#

My last big step is making my custom deck, need to work on it tonight. Thanks to everyone who has helped me so far

#

I am trying to make a deck where only my modded jokers show up in the shop but the problem is that i don't want my custom jokers to appear in the shops at all in the other decks

#

I am using a different rarity to make that happen but its still hard because I cant make them spawn naturally, I have an idea but I'll see what I can do when I get home

hybrid shadow
serene granite
#

Like directly in the jokers and not the rarity? Because I have the rarity have a weight of 0 so they don't appear in the shops

serene granite
hybrid shadow
#

but if you set your jokers in_pool manually then they can have vanilla rarities

midnight coyote
#

how do i check if a loc value currently exists

serene granite
serene granite
#

Also is there a way I can put my mod on the mod manager? Or do I need someone to put it for me? How does that work

lofty sand
#

is there a context for when a joker is destroyed? not sold, specifically destroyed?

wintry solar
#

On the dev branch, yes. It’ll be release ready in a few days

lofty sand
#

cool

limber marlin
#

I am once again asking for how to save cards in a variable in the run save file

midnight coyote
#

eh

#

ill just figure it out i guess

red flower
midnight coyote
red flower
#

G.localization.descriptions.Other but yes

midnight coyote
#

okay

teal ferry
#

any of you guys know how can i get blinds requried score and current hands score ? i am trying to create a joker that will be activated when i pass the round with only one hand.

red flower
#

G.GAME.blind.chips for the first hand_chips * mult for the second

teal ferry
red flower
#

yeah

teal ferry
#

okay thank you.

sour garden
#

when i try using this joker, i get the error "main.lua:6289: card.lua:347: attempt to index field 'config' (a nil value)"
anyone have an idea what's causing it?

frozen smelt
#

does context.purchase exist or something

sour garden
#

does it???
genuinely no idea what could be causing that

#

it only crashes upon playing a card, so it shouldn't be trying to call a purchase

lucid owl
#

it can't find the config variable in the joker that was created before the config variable existed, if that's possible

sour garden
#

this was on a fresh run spawning it in with DB+

lucid owl
sour garden
#

ah okie

red flower
frozen smelt
manic rune
#

how do you check if a joker no longer exists 🤔

teal ferry
#
calculate = function (self,card,context)
        if context.final_scoring_step and G.GAME.current_round.hands_played == 1  then --
            local required = G.GAME.blind.chips
            local current = hand_chips * mult
            if current >= required then
                G.hand:change_size(1)
                card:start_dissolve();
                return{
                    message = "Caught"
                }
            end
        end
    end
``` i have a problem with when i add current round hands played == 1 part card doesnt dissolve. but when i dont add that to condition. joker gets destroyet before skoring animation ends
lucid owl
stark viper
teal ferry
manic rune
lucid owl
manic rune
#

fair

sour garden
stark viper
# lucid owl lol

yeah that worked LMFAO, thx a bunch
(my ADHD achilles heel is often forgetting the most basic shit KEKW )

red flower
lucid owl
#

oh yeah, that too

sour garden
red flower
#

also dont use math.random, use pseudorandom or pseudorandom_element

red flower
#

nvm just read it

placid star
#

this has the params func = 'can_use_consumeable' which is held in G.FUNCS, but that isnt stated anywhere in the node so how does it know thats what function its supposed to call

red flower
#

or scoring_hand intead of full_hand if you want 1 scoring card instead

red flower
#

like the screenshot is not even complete?

sour garden
placid star
# red flower can you elaborate
    {n=G.UIT.C, config={align = "cr"}, nodes={
      
      {n=G.UIT.C, config={ref_table = card, align = "cr",maxw = 1.25, padding = 0.1, r=0.08, minw = 1.25, minh = (card.area and card.area.config.type == 'joker') and 0 or 1, hover = true, shadow = true, colour = G.C.UI.BACKGROUND_INACTIVE, one_press = true, button = 'use_card', func = 'can_use_consumeable'}, nodes={
        {n=G.UIT.B, config = {w=0.1,h=0.6}},
        {n=G.UIT.T, config={text = localize('b_use'),colour = G.C.UI.TEXT_LIGHT, scale = 0.55, shadow = true}}
      }}
    }}```
is the use button for consumeables and the func it uses is `can_use_consumeable` which is held in G.FUNCS, but G.FUNCS isnt stated anywhere in the node so how does it know that the function its using is the correct one the coder wanted in G.FUNCS
red flower
#

oh wow both at the same time

sour garden
#

double feature

#

combo attack

red flower
red flower
frozen smelt
#

does anyone know why shaders on my cards are weaker than normal cards

placid star
red flower
placid star
vast bough
#

can someone tell me why this line is showing 'ERROR' in the description,

return {vars = {localize((G.GAME.current_round.rankvar_card or {}).rank or 'A', 'ranks')}}

but this line is not and works as intended

return {vars = {localize((G.GAME.current_round.suitvar_card or {}).suit or 'Spades', 'suits_singular')}, colours = {G.C.SUITS[(G.GAME.current_round.suitvar_card or {}).suit or 'Spades']}}

am i being silly

red flower
#

what's G.GAME.current_round.rankvar_card.rank ?

vast bough
red flower
#

it has to be the rank key, not the card_key
so 'Ace' not 'A'

vast bough
#

but...

#

BRUH

#

i swear that was how i did it initially and it didnt work

#

im too tired

#

thank u <3

placid star
#

does anyone know of any mods that have jokers with use buttons? i need some inspiration since im struggling a tiny biy

near bay
#

how do i make a joker give 2 dollars every time an ace is scored?

placid star
placid star
red flower
placid star
placid star
#

when do you call your create_use... function?

red flower
flat mist
#

I have some cool combo and we'll balanced ideas for jokers and spectral cards. If some Wana add them to there mod then I can share my ideas (don't need any credits or something). Just let me play these ideas once they finished.

near bay
neon mist
#

and also how do you make the joker wiggle when it uses its ability? Thank you

near bay
#

its still not working how do i do it now

red flower
near bay
red flower
near bay
red flower
#

main_scoring doesnt exist for jokers and also it doesnt happen at the same time as individual

#
if context.individual and context.cardarea == G.play and context.other_card:get_id() == 14 then
  return { dollars = 2 }
end
#

thats how i would do it

hidden sable
#

because multiplayer mod is too cool to do that ig idk

vague crest
#

is it possible to change a joker's rarity?

#

and also store all jokers in the collection in an array

stiff quiver
red flower
vague crest
#

ohhh thats BEAUTIFUL

#

this is gonna be the hardest thing ive coded so far but itll be sooo funny if it works

hidden sable
wild escarp
#

How can I set the score after scoring?

vague crest
#

i did something similar a while ago

quick scarab
vague crest
#

this just sets the mult to one specific thing which i feel like could do what youre looking for

#

in my case it sets it to 0 at the final scoring step so your hand doesnt score under a condition

quick scarab
#

like

vague crest
#

try removing some mods from your folders its straight up just a scary unexplainable computer thing in my experience

#

itll fix itself if you approach your computer like youd approach a scared horse

neat leaf
#

Is it at all possible to determine where a function object came from? I'm trying to figure out what event is piling up in G.E_MANAGER.queues.base and, other than adding a bunch of diagnostics to Cryptid, can't think of a way to do that.

#

...I guess I could wrap G.E_MANAGER:add_event and use the debug module to determine stack traces.

vague crest
#

how would i remove a value from an array?

red flower
vague crest
#

sick

neat leaf
#

How would I determine the actual source listing of a file, eg game.lua, after mods have modified it? Is there a Lovely function that'll do it?

vague crest
idle plaza
vague crest
#

awesomeee

#

wait ena dream bbq mod,,,,

#

thats crazy one of my jokers is inspired by ena too

idle plaza
#

Neat

vague crest
idle plaza
vague crest
#

ohhh shit so weird erratic scaling xmult

#

i fw that heavy

idle plaza
vague crest
#

RIGHT

#

🙏 will do

idle plaza
vague crest
#

oooh sick ok

#

ok now im really confused, it's still crashing?

idle plaza
vague crest
#

oh gotcha

#

still nothing 💔

#

i wonder if it's even this thats crashing i was pretty sure it was

idle plaza
#

Is it the same error?

red flower
#

pseudoshuffle sorts tables

vague crest
#

ohhh is this not what im looking for then?

red flower
#

also you do need pseudoseed

broken tulip
#

is it possible to retexture suits and ranks added by other mods other than just straight up editing the files of it?

red flower
vague crest
#

I'm trying to shuffle the order of values in an array

red flower
#

what's the ultimate objective

vague crest
#

grab all the rarities of jokers, and then distribute them randomly across them so all the jokers have randomized rarities but there's still a proportionate amount of commons uncommons rares etc

red flower
#

instead of the rarity number you could make them into tables like { rarity = 1 } so you can use pseudoshuffle

vague crest
#

yeah a table sounds right here

#

ive never used one in lua before, whats the process for that?

#

is it possible to just convert an array into a table and then go about my day fro mthere

red flower
#

you did

#

an array is a table

neat leaf
#

tables are what the { stuff-goes-here } syntax is called

#

rather, { stuff-goes-here } is how you create a table inline

#

local t = {rarity = 1} is a table with one key: rarity, where t.rarity gives you 1

#

if you see a . anywhere between two identifiers (names/variables) in Lua, 99.9% of the time the left side is just a table

vague crest
#

alright i see

neat leaf
#

an array is a special kind of table where the keys are numbers from 1 to however many items you want in your table

#

(note that the term "array" does not mean anything to underlying Lua; it's all just tables)

vague crest
#

so whats stopping me from shuffling it exactly if it's technically a table?

red flower
#

the rarity number 1 is not a table

#

that's the problem

idle plaza
#

The issue (only just learned this now) is pseudoshuffle requires, essentially, an array of tables.

red flower
#

(you could also just copy what pseudoshuffle does and remove the part that crashes by checking for sort_id)

neat leaf
#

You can just write a version of pseudoshuffle -- ^

#
function my_pseudoshuffle(list, seed)
  if seed then math.randomseed(seed) end

  for i = #list, 2, -1 do
    local j = math.random(i)
    list[i], list[j] = list[j], list[i]
  end
end

and then just use my_pseudoshuffle(arr)

vague crest
#

gotcha ok

#

oh wow tysm

neat leaf
#

Place that function somewhere in your code

#

Note that this version does require you to specify a seed.

#

Otherwise you could get the same results every time

vague crest
#

yep for sure for sure

#

ohhh this would proabbly help with the other deck issue i was having too

#

now that i understand this stuff better

#

ok wait its still crashing 💔

neat leaf
#

Code?

#

Specifically code around 177

vague crest
#

waittt nope this isnt your issue im doing something silly

#

i didnt realize the errors actually giving the line to me now teehee

neat leaf
#

That's usually the cause 🙂

vague crest
#

this is whats going on over there

neat leaf
#

Yeah znm_bologna_jokers[i] is likely nil

idle plaza
neat leaf
#

^^ the reason for this is that (1 or 2 or 3 or 4) will always be 1, due to how the or statement works in Lua

vague crest
#

ohhh thats interesting

#

actually it might be this

#

this might be not properly adding it as a joker

neat leaf
#

(a_true_value or something) will give you a_true_value. (false_or_nil or something) will give you something.

hasty mist
#

i had to edit this hook to fix some issues relating to cryptid but now it doesn't work anymore, how do i fix this

neat leaf
hasty mist
#

it just does not function, previously it functioned but crashes on occasion, but i havent run into a crash yet

neat leaf
#

...also does array[#array+1] = value work in luajit? I always used table.insert

hasty mist
#

the intent is to remove modded jokers from the pool

neat leaf
hasty mist
#

im not sure, i had a lot of help with this code

neat leaf
#

Depends what G.P_CENTERS is

red flower
#

yeah it should be i

#

or wait no sorry

#

v is correct

neat leaf
#

Nope, v is correct

red flower
#

return pool, pool_key at the end instead

neat leaf
#

^ oh duh that's the thing

#

You're doing all this work and then just calling and returning the original function, which doesn't know about all the work you did

hasty mist
#

this is what the function looked like originally

#

but i had to edit it because it was crashing cryptid's new equilib deck on the rebalance branch

#

this function worked before but it did crash ingame at random times

idle plaza
#

What's the exact crash message?

hasty mist
red flower
#

this doesnt look too intrusive to me, I would guess the problem is on cryptid's side imo

neat leaf
#

Line 145 in the original version is correct. Line 145 in the version you posted is incorrect. You want return pool, pool_key

hasty mist
#

this is what was wrong with the original code apparently

red flower
urban wasp
#

what is the correct color for this? this just shows as G.C.FILTER

colour = G.C.PLANET
red flower
#

let me check what cryptid does

urban wasp
#

ah

hasty mist
vague crest
#

it worked lfg

red flower
hasty mist
#

also this seems to work fine but i need to test more

red flower
#

also this means that cryptid would also crash with my mod lol

hasty mist
#

i dont know how to recreate the ingame crash

#

it just happens sometimes

#

so

#

ill test it out

hidden sable
#

how do i get an smods reference from an atlas

#

is there like a

#

SMODS.query("lat_hacknet")

red flower
#

can you elaborate?

hidden sable
#

like

#

instead of supplying the keyname as a string in a joker

#

i wish to get its actual reference to supply into a separate game object

red flower
#

G.ASSET_ATLAS["modprefix_key"]

hidden sable
#

and if i were to do the same with shaders? would it still be atlas

#

or would it be asset_shader

red flower
#

no idea, let me look it up rq

#

G.SHADERS i think

hidden sable
#

tried that

#

unless my shader code is wrong

#

i think its correct

#
extern number speed = 0.0059;
extern number freq = 50.0;
extern number borderPx = 0.5;

vec4 effect(vec4 vcolor, Image tex, vec2 tc, vec2 sc)
{
    vec2 uv = tc;
    vec3 bg = Texel(tex, uv).rgb;

    float t = clamp(time * speed, 0.0, 1.0);
    float thickness = borderPx / sc.y;

    float flash = sin(time * freq) * 0.025 + 0.5;

    vec3 col = bg;
    float borderPos = 1.0 - t;

    if (uv.y > borderPos)
    {
        float darkR = 1.0;
        float brightR = 0.9;
        col.r = mix(darkR, brightR, flash);
        col.g = bg.g * (1.0 - flash * 0.8);
        col.b = bg.b * (1.0 - flash * 0.8);
    };

    if (uv.y < borderPos + thickness && uv.y > borderPos - thickness)
    {
        col = vec3(1.0);
    };

    return vec4(col, 1.0);
}
red flower
#

mine is in there

hidden sable
#

weird

#

so it must be how my shader is defined?

red flower
#

maybe

#

but the SMODS.Shader probably

hidden sable
#

also anyone know why my balatro keeps going black

#

balatro jsiut froze my discord

#

they tryna stop me

scarlet imp
red flower
#

also <@&1133519078540185692>

hidden sable
#

chat i GOTTA join that server

scarlet imp
#

smh bro fell for the trap

idle plaza
#

Banning him auto-deletes all his messages IIRC

red flower
#

unless it takes a bit

hidden sable
exotic hedge
red flower
scarlet imp
#

yeah its gone for me

exotic hedge
#

Alr I was a little late lol mb

hidden sable
#

my shader is being loaded

#

is there a command to try running a shader as an overlay

#

this is a test function i set up for it

scarlet imp
#

is there a way I can detect what hand a round was ended with? I tried
if context.scoring_name == card.ability.extra.poker_hand and context.end_of_round and not context.game_over and context.cardarea == G.jokers
but it no work

urban wasp
#

eh?

SMODS.Joker{
    key = "topiary_tree",
    name = "Topiary Tree",
    config = { extra = { odds = 6 } },
    pos = { x = 3, y = 0 },
    cost = 7,
    rarity = 2,
    blueprint_compat = true,
    atlas = "duo_joker",
    loc_vars = function(self, info_queue, card)
        return { vars = { G.GAME and (G.GAME.probabilities.normal * 1) or 1, card.ability.extra.odds } }
    end,
    calculate = function(self, card, context)
        if context.individual and context.cardarea == G.hand and not context.end_of_round and not context.blueprint then
            if context.other_card:is_suit("Clubs") then
                if pseudorandom("theduo_topiary_tree") < G.GAME.probabilities.normal / card.ability.extra.odds then
                    SMODS.calculate_effect({func = function()
                        G.E_MANAGER:add_event(Event({
                            func = function()
                                local random_tags = {"tag_uncommon", "tag_rare", "tag_negative", "tag_foil", "tag_holo", "tag_polychrome", "tag_investment", "tag_voucher", "tag_boss", "tag_standard", "tag_charm", "tag_meteor", "tag_buffoon", "tag_handy", "tag_garbage", "tag_ethereal", "tag_coupon", "tag_double", "tag_juggle", "tag_d_six", "tag_top_up", "tag_speed", "tag_orbital", "tag_economy"}
                                local selected_tag = pseudorandom_element(random_tags, pseudoseed("create_tag"))
                                add_tag(Tag(selected_tag))
                                play_sound('holo1', 1.2 + math.random() * 0.1, 0.4)
                                return true
                            end
                        }))
                        return true
                    end}, card)
                    card_eval_status_text(context.blueprint_card or card, 'extra', nil, nil, nil, { message = "+1 Tag", colour = G.C.FILTER })
                end
            end
        end
    end
}
#

this joker basically has a 1 in 6 chance for club cards held in hand to create a tag, but it crashed upon trying to make one

daring fern
urban wasp
#

though, oddly enough, it can make a lot of tags, it just dies on some random unknown tag

urban wasp
# daring fern ```lua local tag = Tag(selected_tag) tag:set_ability() add_tag(tag) ```?

alright then, just replace the

local random_tags = {"tag_uncommon", "tag_rare", "tag_negative", "tag_foil", "tag_holo", "tag_polychrome", "tag_investment", "tag_voucher", "tag_boss", "tag_standard", "tag_charm", "tag_meteor", "tag_buffoon", "tag_handy", "tag_garbage", "tag_ethereal", "tag_coupon", "tag_double", "tag_juggle", "tag_d_six", "tag_top_up", "tag_speed", "tag_orbital", "tag_economy"}
local selected_tag = pseudorandom_element(random_tags, pseudoseed("create_tag"))
add_tag(Tag(selected_tag))
play_sound('holo1', 1.2 + math.random() * 0.1, 0.4)
return true

with this?

daring fern
urban wasp
#

ah

daring fern
#

Also why not get a random tag from G.P_TAGS?

urban wasp
#

most of the code above is copied from jokerforge

#

i'm unsure on how to actually get a random tag, but that would be a lot more convenient

daring fern
daring fern
hidden sable
#

getting an error when i tried to launch spore

#

im kidding but

#

my ui code is messin

#

wait i think i see the fix

scarlet imp
daring fern
scarlet imp
#

thank you

hidden sable
#

ok yeah fixed it

scarlet imp
#

is there a way to manually reroll individual items in the shop? the cards I create aren't actually shop itmes by the look of things

lucid owl
vast bough
lucid owl
#

if it works, it works... even if slightly less efficient

vast bough
#

hopefully in a month or two when it can create consumables and editions and whatnot i will be better at smods and this kinda thing will happen less

urban wasp
#

what even is the purpose of putting

if context.cardarea == G.jokers ... then

in joker conditions

red flower
#

none

red flower
scarlet imp
#

they aren't purchasable, even though I call create_shop_card_ui on the card after creating it

hidden sable
scarlet imp
hidden sable
#

damn

hidden sable
scarlet imp
#

I'll be pushing the code to git once I get this Joker working if you want to copy it, but I would look at N's mod since he did it way better

hidden sable
# scarlet imp

use the dice like 100 times and youll cause a memory leak

scarlet imp
# scarlet imp

but yeah the cards just stick around forever and aren't purchasable in the shop

hidden sable
#

cars

#

look at how vremade does it

#

(im fucking with you)

daring fern
hidden sable
scarlet imp
#
_card = create_card("Joker", G.shop_jokers, nil, nil, nil, nil, nil, "reroll_shop")
create_shop_card_ui(_card, "Joker", G.shop_jokers)
#

that's the code I use, something is wrong with it probabaly since the create_shop_card_ui doesn't seem to work

daring fern
hidden sable
scarlet imp
daring fern
#
local _card = SMODS.create_card({set = "Joker", area = G.shop_jokers, key_append = "reroll_shop"})
G.shop_jokers:emplace(_card)
create_shop_card_ui(_card)
hidden sable
#

any ui wizards know how i can make the text be on the left side, and the checkbox on the right

thorn furnace
#

Is the text not already on the left side

scarlet imp
#

I think those text boxes are just long enough that they look left-justified

#
print("rerolling: ".._card.config.center.key)
local _card = SMODS.add_card({set = "Joker", area = G.shop_jokers, key_append = "reroll_shop"})
create_shop_card_ui(_card)
hidden sable
#

like all the way on the left

#

touching the left wall

scarlet imp
#

the print statement only runs when the reroll function gets triggered, and obviously the card isn't actually being changed

red flower
#

does it only reroll jokers into other jokers

scarlet imp
#

yeah, that's why pluto is staying the same, its not supposed to mess with that

red flower
#

ok, then this is probably not the ideal solution but you can call :set_ability on the joker in the shop

#

(and :set_cost after)

scarlet imp
#

well I kinda fixed it?

hidden sable
#

hes jsut getting lucky and keeps rolling noodles

scarlet imp
#

I think I just need to delete Ramen now

brittle tide
#

I'm trying to make a joker that can only copy blueprint and brainstorm and while this works for blueprint when I tried to sub in brainstorm it no longer copied it. Does anyone know what the problem is?

hidden sable
#

why no wroik

scarlet imp
#

if a Joker gives hands or discards it gives them even while in the shop if it gets rerolled by this card, even Vanilla ones like Drunkard
the extra hand/discard goes away if the shop is closed or the card is skipped, so its technically only a visual problem, but this is still insane

red flower
#

you want create_card and emplace

scarlet imp
#

I'll try SMODS.create_card

red flower
#

the SMODS create_card tho

brittle tide
hidden sable
chrome widget
#

Grr...... destroy card contexts are sent to jokers before they're sent to enhancements........

#

This is annoying

hidden sable
#

stup

chrome widget
#

stup?

scarlet imp
#

there's like 4 cards stacked on top of each other there btw

chrome widget
#

Hmmmm trying to figure out how to do this without editing glass cards directly

scarlet imp
#

and they dont have a Buy button 😭

chrome widget
#

I need to retrigger a glass card's chance to break

#

But I also don't want to roll it before glass cards normally roll that chance, so I can pass on it if they're already going to break, since that would just advance the seed unnecessarily

daring fern
thorn furnace
chrome widget
#

yeah

#

The effect is "Retrigger glass cards, but also retrigger their chance to break"

brittle tide
daring fern
chrome widget
#

I guess I'll just settle for taking ownership

thorn furnace
scarlet imp
#

I finally did it lol

#

the card works as intended

hidden sable
red flower
#

oh that wont work because its two nodes

chrome widget
#

Im very smart and cool

SMODS.Enhancement:take_ownership('glass', {
    calculate = function(self, card, context)
        local ret, post = ref_glass_calc(self, card, context)
        
        if context.destroy_card and context.cardarea == G.play and context.destroy_card == card
        and not context.destroy_card.glass_trigger then
            local shatter_mes = SMODS.find_card('c_fnwk_iron_shatter')
            local valid = false
            for _, v in ipairs(shatter_mes) do
                if not v.debuff then
                    valid = true
                    break
                end
            end
            
            if valid and SMODS.pseudorandom_probability(card, 'glass', 1, card.ability.extra) then
                card.glass_trigger = true
                ret = ret or {}
                ret.remove = true
            end
        end

        return ret, post
    end,
}, true)```
red flower
modern kindle
#

Hi my two friends pals besties

#

I hope you're both well

chrome widget
#

Hello!!!!!!!

hidden sable
#

god dammit im getting the black screen glitch again

hidden sable
red flower
#

sleepys mod is very cool
idk why it is so small tho

chrome widget
#

holy shit yugioh

thorn furnace
#

:o

hidden sable
# red flower ?

im checking if a variable is provided by my function, if it is, display it through ui, if not, dont display it, how im tryna do this is by setting a varable to be my ui, and if there is no description variable set that variable to nothing, and display whatever the variable is

red flower
#

ok

#

what does that have to do with what i said

hidden sable
#

im trying to explain to you what im doing

#

you literally responded ?

#

like what else am i meant to gather from that

#

you seemed confused

red flower
#

yeah I'm confused as to what your original response had to do with what I said

scarlet imp
hidden sable
#

so like

#

two variables

red flower
#

kyesd has two nodes inside a table, you need to add them to your other table individually
that's what causing the crash

red flower
hidden sable
#

is there a table unwrap function i can use there

red flower
#

unwrap()

hidden sable
#

id prefer to keep it 1 variable

red flower
#

uhh maybe it wasnt that

maiden phoenix
#

It's unpack no?

red flower
#

yeah that

primal robin
#

TheFamily.UI.scale and TheFault.UI.tabs_per_page

hidden sable
#

why is my balatro black

red flower
#

that didnt do what i wanted

hidden sable
#

my balatro is making everything black

primal robin
#

TheFamily.rerender_area()

red flower
#

perfect, thank you

primal robin
#

Gaming

#

I'll adjust formulas then

hidden sable
#

unpack doesnt exist either??

red flower
#

ok no yeah thats readable now

primal robin
#

It's just unpack, not table.unpack

#

Issue somewhere in here...

hidden sable
#

it works

#

ignore how the screenshot goes off the window

#

the balatro was black

#

and was blocking my software

#

like can jimbo stop being black

hidden sable
#

HES INFECTING MY OTHER PROGRAMS

#

OH GOD

#

SOUNDPAD

#

ITS BLACK

scarlet imp
#

we're about to witness the death of RatMilk

hidden sable
#

ITS TAKEN OVER SOUNDPAD, AND BALTRO ISNT BLACK ANYMORE

#

I CLOSED BALATRO ITS STILL BLACK

#

OH GOD HELP

scarlet imp
#

Discord's going next

hidden sable
#

ITS ALREADY TAKEN DISCORD BEFORE

#

IT FROZE DISCORD ONCE

#

ok i got it to stop being black

#

now

#

how cow pow wow, tow pow, gow yow

#

also how cna i change the

#

change default color of the localize box

#

nvm figiurted it tout

#

nvm i didnt

#

💔

thorn furnace
hidden sable
#

because i towkred when i closed it

#

and i could see balatro only if my cursor was on the grab window

hard flume
#

kinda wondering what's wrong here

hybrid shadow
hard flume
#

no, its just not doing anything

hybrid shadow
#

wait this should be a loop

hard flume
#

It should?

hybrid shadow
#

yeah, context.individual is when individual cards are scored

#

also youre calling the card's ability when it would be other_card

hard flume
#

Oh

hybrid shadow
#

i gotta find my code where i actually loop through the played hand so i can help better, hold tight for a bit while i get the code open

#

alr hold on lemme get this all together rq

vast bough
#

i find it amusing that smods has a dedicated function for free rerolls and NOTHING else

#

no free packs, vouchers, etc

hybrid shadow
red flower
vast bough
placid star
#

should this make a button that will toggle a button to true or false in my config.lua?

vast bough
#

it would be cool to have a SMODS.change_planet_cost or something

sonic cedar
#

apparently this (1) line in this (2) override crashes the game (3)? any ideas?

bought buffoon pack, clicked on shoot the moon. crashed on click

red flower
red flower
#

i might work on that

vast bough
#

instead of having them coupled

vast bough
red flower
#

rn in my mod i patch set_cost and have extra variables

vast bough
#

the only reason i knew how to do it was from vanilla remade haha

red flower
#

context.set_cost would be funny

scarlet imp
#

context.playing_game when

hybrid shadow
#

how would i go about making it so a card isnt able to be sold

red flower
#

hook Card:can_sell_card

long sun
#

is there a way to modify the pool of Boss Blinds?

#

i'm making a deck where only the Amber Acorn can appear, and i've got no clue how to do that -u-

primal robin
#

override get_new_boss function

hybrid shadow
long sun
#

ah grand, i'll do that :D

#

thanks!!

red flower
#

a harder option is hooking the function that calls can_sell_card

#

oh well sorry an easier option is to make the card eternal

hybrid shadow
#

smods should have a thing where you can just set can_sell_card to false in the card's code

scarlet imp
#

I'm confused, I don't see a call to ipairs in the source code anywhere near line 2168 of this file

vast bough
hybrid shadow
scarlet imp
#

ok I'll look for it, thanks

hybrid shadow
vast bough
hybrid shadow
vast bough
#
set_ability = function(self, card, initial)
        card:set_eternal(true)
    end,
#

this is how jokerforge does it

hybrid shadow
#

thats not what i was saying

vast bough
#

specifically when you buy it yeah

#

that would be more fucked

#

lmao

#

and rude to the player if you ask me

hybrid shadow
#

but i can probably figure out smth like having an add_to_deck function that sets the card to be eternal

hybrid shadow
vast bough
#

you only know if you got perishable when the joker dies after 5 rounds inconspicuously

#

you only know you got rental when your econ starts dying

hybrid shadow
#

though the funnier option here would be making all seals invisible and removing the enhancement atlas

vague crest
#

i set up a deck earlier today that randomizes the rarities of jokers when the run is started, and like it technically works in that it changes the rarities (for like baseball card for example) but it doesnt affect the shop in any way, and using the soul still gives the vanilla pool of legendaries, is there any way to fix this?

red flower
#

you probably need to modify the rarity pools

#

G.P_JOKER_RARITY_POOLS

scarlet imp
#

am I able to influence a tooltip on a card from loc_vars?
like I want the tooltip to be variable:

charges = {
    name = "Charges",
    text = {
        "Charges: {C:yellow}#1#/#2#",
        "{C:inactive}#3#"
    }
},
red flower
#

info_queue[#info_queue+1] = { set = set, key = "charges", vars = { 1, 2, 3 } } iirc

vague crest
red flower
#

yes

#

a lot of those things get done on start up

#

you will also need to revert it when the run is closed

vague crest
#

because i found the vanilla code and im wondering if doing what youre suggesting is just as simple as placing it there again in like an event or something

#

ohhhhh wait true that explains why it was happening in other decks maybe

red flower
#

yeah a lot of these things are global and not meant to be modified

vague crest
#

🤭

vast bough
scarlet imp
#

is C:yellow not a valid color

#

sorry colour*

vague crest
#

you could use C:money

#

or C:gold

sonic cedar
scarlet imp
#

true

sonic cedar
#

i was slightly too late

vague crest
#

every now and then i get to be the guy who knows the answer instead of asking for stuff and ill do it like my life depends on it 🙏

chrome widget
#

mmm can you juice ui buttons?

#

I need some equivalent to bring attention to one

scarlet imp
#

thank you guys though

primal robin
chrome widget
#

cool

scarlet imp
#

is there a way I can add a version requirement to the dependencies in smods.json

#

like I want to make sure that the player has a certain version of SMODS since I use some pretty recent stuff from it

wooden nexus
scarlet imp
daring fern
sonic cedar
lament agate
#

if i were to add another card into the title screen, would it work by just typing another emplace function

daring fern
lament agate
frozen smelt
#

is there a way to code to generate random consumables?

frozen smelt
#

or a random tarot would even be good

molten nymph
#

should be

frozen smelt
#

any consumable?

molten nymph
#

just like emperor

daring fern
molten nymph
#

just different limitations on what type it can be

frozen smelt
#

via a joker i mean, sort of like that joker that does it at the end of the shop

molten nymph
frozen smelt
#

forgot whats its called

molten nymph
#

theres one in cryptid that does that so yes

frozen smelt
#

how would i go about that can i ask

#

or perhaps could someone point me in the right direction

#

intellisense for this would be helpful

daring fern
frozen smelt
#

thank you very much

buoyant shard
#

pools = {Meme = true} is how you add meme jokers to the pool of meme jokers, right?

errant fulcrum
#

Is there documentation on how to patch functions?

scarlet imp
frozen smelt
daring fern
sonic cedar
#

is it possible for a joker key to have too many underscores?

sonic cedar
#

ughhhh

#

i mean thats cool but hh

#

trying to figure out why rerolling the shop into this card crashes the game

#

the line in question key = card.ability and card.ability.extra.new_key or "j_hpfx_not_fortune_teller",

magic crane
#

where are the crt shader values set?

sonic cedar
wooden nexus
frozen smelt
#

oops

wooden nexus
daring fern
frozen smelt
#

would create_card not work?

sonic cedar
daring fern
frozen smelt
#

what is the different between adding and creating a card

wooden nexus
frozen smelt
sonic cedar
#

still reading

frozen smelt
#

i should've been more specific

wooden nexus
#

oh. mb

daring fern
frozen smelt
#

i'm assuming i'd have to make sure it abides by the consumable card limit

#

if consumables are less the limit than it, then do that

#

G.consumeables.config.card_limit right

daring fern
frozen smelt
#

negatives from perkeo

#

i'm not creating negative consumables

#

so if i have 2 normal consumables, and loads from perkeo

scarlet imp
frozen smelt
#

yeah

#

sorta like what happens with negative invis joker

tepid crow
# wooden nexus

The error talks about descriptions, and loc_txt has description. Could that be the issue?

scarlet imp
#

a lazy solution is to make negative cards ineligible to be chosen for destruction

frozen smelt
#

too lazy

#

much too lazy

scarlet imp
#

yeah lol

sonic cedar
# wooden nexus oh. mb

seems like there's something up with how you're doing your description that's causing it to knock out. maybe make it description instead of the plural descriptions?

frozen smelt
#

if context.setting_blind and #G.consumeables.cards + G.GAME.consumeable_buffer < G.consumeables.config.card_limit then from Cartomancer

sonic cedar
#

oh lars said it already

daring fern
frozen smelt
#

is there a difference between adding and creating a card

daring fern
tepid crow
wooden nexus
#

why

#

I don't think it's funny

tepid crow
#

cuz now that you changed it from description to descriptions it's complaining about description not existing :)

red flower
#

misc.descriptions doesnt exist

scarlet imp
#

isn't it just descriptions? no misc?

red flower
#

G.localization.descriptions yeah

sonic cedar
red flower
#

sniped

sonic cedar
#

but yeah descriptions and misc are 2 different sections

scarlet imp
#

exactly

#

it just depends where they want their text to go doesn't it

sonic cedar
#

(i didnt even know SMODS.Filler was a thing)

wooden nexus
#

It's not

scarlet imp
#

🤷

wooden nexus
#

I'm making it

red flower
#

yeah

sonic cedar
#

oh awesome

#

thatd be useful methinks

wooden nexus
#

It's basically jokers but not as restrictive

scarlet imp
sonic cedar
#

jokers but good

thorn furnace
#

what function is called when a run is started

red flower
#

Game:start_run

thorn furnace
#

thanks dance

sonic cedar
#

n do you know enough about generate_ui to help figure out a crash,,,,

red flower
#

oh i forgot i was reading yours too

sonic cedar
#

oh cool carry on then

red flower
#

can i see the rest of the cards code

sonic cedar
#

yep

#

ss or code

#

(if i ss it'll be multiple images)

red flower
#

either

sonic cedar
#

one moment then

red flower
#

i only need the SMODS.Joker

sonic cedar
red flower
#

youre missing a config to initialize extra

sonic cedar
#

every time man

scarlet imp
#

got lost in the sauce

sonic cedar
#

i can get away with just this right

red flower
#

yes

sonic cedar
#

nice

#

oh god ive been doing that to the ones that didnt use extra vars

#

ive gotta go fix those

frozen smelt
#

can you loop something an amount of times based on a local variable?

red flower
#
local amount = 10
for i = 1, amount do
  -- loop
end
sonic cedar
#

also hi somecom

frozen smelt
#

not used to lua yet

scarlet imp
#

Lua is like a cursed mishmash between Python and C

frozen smelt
#

used to C# with modding but I used godot for most stuff which is baby language so

sonic cedar
red flower
#

no idea, i would need to see the crash

sonic cedar
#

ill link it
it was further up

sonic cedar
#

cause i have this

red flower
#

you can check if it exist and only add it if it exists

#

in a booster the buttons are different

sonic cedar
#

so like

local inner_nodes
if "this is a joker" then
  if "this is the card's booster pack ui" then
    inner_nodes = ret.nodes[1].nodes
  else
    inner_nodes = ret.nodes[1].nodes[2].nodes
  end
end

?

red flower
#

maybe, i dont know the ui structure of buttons off the top of my head haha

sonic cedar
#

oh noooo 😭

#

ok wait but how can i check if the card is a joker

red flower
#

card.ability.set == "Joker"

sonic cedar
#

cause card.area.config.type == 'joker' is for the area right

sonic cedar
#

is this right

red flower
#

no

#

i dont remember exactly the area name tho

sonic cedar
#

but i had the right format?

red flower
#

yeah

sonic cedar
pure salmon
#

does the game keep track of defeated boss blinds or do i have to do that myself

sonic cedar
#

i had to do it for specifically the crimson heart for an unlock

pure salmon
#

that's fine idm doing a patch

sonic cedar
#

let me get what i did for mine rq then

#

overrides file on the left, main file on the right

sonic cedar
#

cause im not
seeing one? (an area name)

#

whole lotta G.hand and G.deck

red flower
#

cardareas are usually defined in game.lua iirc

sonic cedar
#

ohhhh ok

red flower
#

i have things for the booster in joyousspring let me check my github

#

G.pack_cards

frozen smelt
#

so i'm back to annoy the professionals with another question

#

is there a way to change the edition of every playing card in your hand at once

thorn furnace
#

probably just loop over all the cards and change the edition

frozen smelt
#

for i = uhhh

thorn furnace
#

Like some
for _, card in ipairs(G.hand.cards) do

frozen smelt
#

what is _?

thorn furnace
#

I forget the name uhh

#

nullifying operator?
It's normally the index but you don't need that

red flower
#

for index, value in ipairs(table)

thorn furnace
red flower
#

if you don't use one of them is normal to change it for _

frozen smelt
#

aight cool

sonic cedar
frozen smelt
#

and i hate to ask this because it's stupid but how do you change the edition of a playing card

thorn furnace
red flower
thorn furnace
thorn furnace
thorn furnace
#

i think that would be a syntax error

hidden sable
#

i mean for _, v in

red flower
#

i normally use python and it doesn't do anything either I don't think, it's just convention

thorn furnace
#

though _ does still do a lot of weird things in python

sonic cedar
#

im gonna have to do it for each huh

red flower
#

can it also transform planets??

sonic cedar
#

no 😭

#

i only did jokers

#

(for now)

#

ok i found the uidef for this function

#

this is the conditional for consumables in boosters im guessing

#

the joker area is just sell which makes sense

#

it's specifically this line that crashed it btw in case i didnt send

hidden sable
#

any info on this?

sonic cedar
hidden sable
#

lok below

pure salmon
#

where would i put a run-wide variable

sonic cedar
pure salmon
#

trying to set up a table with a list of defeated blind keys

hidden sable
red flower
pure salmon
#

how would i reset that at the beginning of a run?

hidden sable
#

i think

pure salmon
#

oh yeah

graceful vapor
sonic cedar
thorn furnace
hidden sable
errant fulcrum
#

What are the parameters from draw_card()? I'm seeing values set to nil and true/false but what no idea what they're affecting

hidden sable
#

holy shit my format math is working

#

holy shit chat

#

it looks correct now!

#

kinda

#

scale is a lil

#

funky

#

and also

#

how do i change the default color in a localize box

sonic cedar
hidden sable
#

need it to be white/grey

errant fulcrum
pure salmon
#

what's the vanilla prefix for blinds? b_?

sonic cedar
pure salmon
#

thank you

hidden sable
#

unless thats not how its done

sonic cedar
#

that's for text

#

so if youre changing the text then yeah

hidden sable
#

yeah

#

didnt do anything when i changesd that tho

wild escarp
#

Is there a way I can set the desired score? Seems like I can set mult in context.final_scoring_step, but not chips.

wild escarp
#

How?

daring fern
hidden sable
#

i could set the text internally with {C:white} but that seems too much work

#

how do i set its default

#

like basically making {} into {C:white}

wild escarp
#

How do I check if a particular joker is owned?

daring fern
hidden sable
#

i switch to config and my text is smal

#

i switch to about

#

and back

manic rune
#

is this G.UIT.T

hidden sable
#

and then the text is bigger

#

i hate ui 😭

manic rune
#

if so then u can have colour = G.C.WHITE in config

manic rune
#

G.C.WHITE, not G.C.white

sonic cedar
#

i accidentally gave all the basegame boosterpacks my mod badge oh no

#

how

how do i not do that

manic rune
#

are you taking ownership

sonic cedar
#

no im overriding for a custom button

#

for specifically certain jokers you own

#

but it crashes the game when boosters get involved

manic rune
#

no clue how that would add your mod badge, can u show me the code

sonic cedar
#

ignore the "and card.area", i just added that

#

this was the crash when i tried to open a standard pack that had my mod badge

manic rune
#

mm i dont add buttons like that, so dunno

sonic cedar
#

do you wanna see the button itself

manic rune
#

sure

sonic cedar
glass scaffold
#

i got no idea what i'm doing here.

sonic cedar
glass scaffold
hidden sable
manic rune
#

odd, changing colour should change the default color of the text

#

maybe SMODS.localize_box doesnt work like i initially thought then

hidden sable
#

agre

errant fulcrum
#

draw_card() seems to be the source of countless headaches

scarlet imp
#

indeed

#

draw_card() has been my number one opp

flat mist
#

I have some cool combo and we'll balanced ideas for jokers and spectral cards. If some Wana add them to there mod then I can share these ideas (don't need any credits or something). Just let me play these ideas once they finished.

pure salmon
#

am i stupid

#

that file gets loaded for sure

#

is this not how you define global functions

daring fern
gusty iron
#

how would i affect the values of other jokers?

pure salmon
#

should do

#

i put it in the main file and it causes the same error

daring fern
gusty iron
#

would it bne

#

card.ability.extra?

#

or just card.ability?

pure salmon
#

is this the wrong way to do this

daring fern
pure salmon
#

is there another way to do variable cost

gusty iron
#

and how would I affect the blind requirement?

scarlet imp
#

editing this value messes with how fast they SCALE, but idk about effecting the requirements directly

pure salmon
gusty iron
#

and whats the context for blind start?

scarlet imp
#

context.setting_blind I believe

pure salmon
#

context.setting_blind yeah

scarlet imp
#

I'm trying to use context.other_ret to see if a Joker gives chips, but is there any way I can use this to pull information about the Joker that gave the chips?

scarlet imp
#

I tried context.other_joker but it doesn't have what I need

scarlet imp
gusty iron
#

so if i wanted to decrease the mult by a certain percent, would this be it?

daring fern
scarlet imp
#

alright so how do I use that to see when another Joker gives chips? Because I've tried calling that Joker's calculate function from elsewhere, but the game hates that apparently

pure salmon
#

i get a table index is nil error on the final line, is self.key returning nil?

#

how would i get the key of the defeated blind?

daring fern
gusty iron
#

how would i check if the joker to the right is compatible or not?

#

(blueprint compatible)

pure salmon
#

can you have a joker with a custom rarity show up in the shop without adding it to the Joker pool? no matter what default_weight i use i can’t seem to find my joker in the shop, but i know it’s in the pool

daring fern
daring fern
bitter portal
#

how do i add a reference to a seal and edition in translation?

#

like how Trance will show the descritpion to blue seal along with its own descritpion

daring fern
pure salmon
daring fern
#

info_queue[#info_queue+1] = G.P_CENTERS.e_modprefix_key

pure salmon
#

is there a way to just. make a new pool to have them show up at all

daring fern
pure salmon
#

don’t want them to appear in buffoon packs

gusty iron
#

then to lets say half all values of a joker, would i just loop through card.ability and half all numbers there?

daring fern
#

I have a function for this though.

gusty iron
#

then how would I do it?

#

oh

#

if you could slide that that would be amazing

daring fern
# gusty iron if you could slide that that would be amazing
function SEALS.modify_joker_values(card, modifytbl, exclusions, ignoreimmutable, withdeckeffects)
    if not card or not modifytbl then return nil end
    if withdeckeffects == nil then withdeckeffects = true end
    local cardwasindeck = card.added_to_deck
    if withdeckeffects and cardwasindeck then card:remove_from_deck(true) end
    exclusions = exclusions or {}
    local ops = {"=", "+", "-", "*", "/", "%", "^"}
    local function modify_value(ref_table, ref_value, isdirectlyinability)
        if type(ref_table[ref_value]) == 'table' and (ignoreimmutable or ref_value ~= "immutable") then
            for k, v in pairs(ref_table[ref_value]) do
                modify_value(ref_table[ref_value], k, false)
            end
        elseif type(ref_table[ref_value]) == 'number' and ((not (exclusions[ref_value] == true or exclusions[ref_value] == ref_table[ref_value])) or not isdirectlyinability) then
            for i, v in ipairs(ops) do
                if modifytbl[v] then
                    ref_table[ref_value] = SEALS.perform_operations(ref_table[ref_value], v, modifytbl[v])
                end
            end
        end
    end
    for k, v in pairs(card.ability) do
        modify_value(card.ability, k, true)
    end
    if withdeckeffects and cardwasindeck then card:add_to_deck(true) end
end
#
function SEALS.perform_operations(val1, op, val2)
    if op == "=" then return val2 end
    if op == "+" then return val1 + val2 end
    if op == "-" then return val1 - val2 end
    if op == "*" then return val1 * val2 end
    if op == "/" then return val1 / val2 end
    if op == "%" then return val1 % val2 end
    if op == "^" then return val1 ^ val2 end
end
gusty iron
#

how exactly would i use this?

bitter portal
daring fern
daring fern
gusty iron
#

can i do something like this? (im trying to temporarily half it, as the joker is basically a bad mimic)

feral tree
#

Can you have it so a joker makes a certain blind appear?

feral tree
#

how so?

daring fern
# feral tree how so?

Change G.GAME.round_resets.blind_choices.Small or G.GAME.round_resets.blind_choices.Big or G.GAME.round_resets.blind_choices.Boss to the key of the blind.

gusty iron
#

i think i screwed something up

daring fern
gusty iron
#

i genuinely have 0 idea what the issue is so heres the entire code:

#
SMODS.Joker{
    key = 'j_dummy',
    cost = 6,
    rarity = 2,
    blueprint_compat = true,
    loc_txt = {
        name = "Dummy",
        text = {
            "Copy the ability of the joker to the right,",
    "but all of the values are HALVED.",
    "{C:inactive}#1#{}"
        }
    },
    atlas = "Jokers",
    pos = {x = 0, y = 1},
config = { extra = { compatible = "Incompatible" } },

loc_vars = function(self, info_queue, card)
    return { vars = { card.ability.extra.compatible, } }
end,

 update = function(self, card, front)
        local _myid = 1
 if G.jokers then
     for i = 1, #G.jokers.cards do
            if G.jokers.cards[i] == card then _myid = i end
        end
end
        if G.jokers and G.jokers.cards[_myid + 1] then card.ability.extra.bptarget = G.jokers.cards[_myid + 1] end

        if G.STAGE == G.STAGES.RUN then
            for i = 1, #G.jokers.cards do
                if G.jokers.cards[i] == card then
                    other_joker = G.jokers.cards[i + 1]
                end
            end
            if other_joker and other_joker ~= card and other_joker.config.center.blueprint_compat then
                card.ability.extra.compatible = "Compatible!"
            else
                card.ability.extra.compatible = "Incompatible!"
            end
        end
    end,

calculate = function(self, card, context)

 local other_joker = nil
        for i = 1, #G.jokers.cards do
            if G.jokers.cards[i] == card then other_joker = G.jokers.cards[i + 1] end
        end
    modify_joker_values(other_joker, {["/"] = 2}, {x_mult = 1, x_chips = 1})
    local thing = SMODS.blueprint_effect(card, other_joker, context)
    modify_joker_values(other_joker, {["*"] = 2}, {x_mult = 1, x_chips = 1})
        return thing
end

}
scarlet imp
gusty iron
hidden sable
#

yuh i think i fucked something up

daring fern
gusty iron
#

and replace / with * when im done copying it?

gusty iron
#

still spams events

#

could be the update function?

#

putting the update function in comments to see what happens

daring fern
thorn furnace
#

Is there a way to prevent a game over like what Mr Bones has going on, but outside of a Joker? I don't know how to gain access to "context" outside of cards

thorn furnace
gusty iron
#

OH MY GOD IT WORKS

#

THANKS

daring fern
thorn furnace
#

truee

north lodge
#

Is there a way to do on click events with a joker? (the card itself)

thorn furnace
#

what variable is responsible for the player's current score

chrome widget
scarlet imp
#

the j*b

thorn furnace
#

wrong emote

chrome widget
#

Rather than a random debuff of a blind, you can choose which joker to go without. So you can easily buy a dummy joker to avert it if you want to, but it's also nowhere near as intrusive as Crimson Heart since you can choose the best option to debuff

#

Regardless it's more likely to make a difference on early antes

chrome widget
#

Regardless I'm glad I helped toma with the button stuff yesterday because I basically just ended up copying most of my own homework for it here