#💻・modding-dev

1 messages · Page 364 of 1

bold sleet
#

otherwise it will trigger itself again

split cairn
#

how can I make a consumable give a selected enhancement?

daring heron
#

like this?

red flower
#

yes

bold sleet
#

yup

#

-# god please tabulate your code correctly

daring heron
#

i dont know how 😭

red flower
#

if you have the lua extension just right click > format document

daring heron
#

oh nice

wintry solar
#

Or select from the add card line to the final end and press tab

#

This code isn’t too bad to be fair, it’s all indented correctly in respect to each other, just one less than it should be

daring heron
#

okay, now how do i make it keep track of the amount of gros michels broken and add that amount of cavendishes?

#

per ante, i want it to reset each ante

quartz ravine
#

If anyone would like a reference, here are the default drop rates for editions in the game

INFO - [G] This edition is e_negative weight = 3
INFO - [G] This edition is e_polychrome weight = 3
INFO - [G] This edition is e_holo weight = 14
INFO - [G] This edition is e_foil weight = 20
#

@daring fern thanks for the example of how to do render effects on decks! I was able to understand it after looking at the snippet you sent me!

It let me do this!

red flower
#

ohhh that looks good

wintry solar
#

-# there’s a lovely explanation of weights on the wiki shhhh

quartz ravine
#

Why am I gonna waste five mins reading the wiki when I can spend 30 minutes figuring out how to irerate through GPCenters object to filter out those beginning with e_ and do it myself

bold sleet
red flower
#

just add them to G.GAME

bold sleet
red flower
#

G.GAME.variable_i_made = 5

#

that gets saved

quartz ravine
bold sleet
#

ah

#

I am guessing it can save tables.

red flower
#

i recommend using the mod's prefix just in case

vast fractal
#

does Smods blinds have calculate functions now?

quartz ravine
#

Real brogrammers store their entire mods code as XML in a G.GAME variable

vast fractal
#

finally 😭

primal terrace
#

I am reworking the Starlight Glimmer

How would I go about checking for identical attributes between cards in the played hand?

bold sleet
naive sun
#

Hello everyone,
For my mode, I need to add chips/mult or xmult based on the other jokers, but at the trigger of a played card (unlike Baseball Man). However, for these values ​​to be taken into account in the calculation, I need to return them in my Joker's calculate function, which allows me to do this only once per played card.
Is there another way to add bonuses multiple times during a single evaluation of the calculate function (like going through G.E_MANAGER), or do I need to apply a patch to take into account a collection of return tables?
Thanks for your help!

bold sleet
#

Assuming I declare G.GAME.FG first?

quartz ravine
#

use ipairs to iterate through the played hand and add the rank, suit enhancement combo to a variable you increment @primal terrace

red flower
slender zenith
#

which part here is wrong?

bold sleet
#

Still don't know the difference between pairs and ipairs

slender zenith
#

it doesnt crash or anything it just doesnt trigger

red flower
red flower
red flower
# slender zenith which part here is wrong?

most of it is wrong, you dont put the hook inside calculate and you can't return a calculate table in a hook
also ease_dollars should go outside the return or do dollars = 2

bold sleet
#

ah

naive sun
red flower
#

like this?

return {
  chips = 50,
  extra = {
    chips = 50
  }
}
vast fractal
#

is there a way to detect if a joker/card/edition like trigger a +mult?

naive sun
red flower
#

i dont get how extra doesnt accomplish that

#

other than maybe the timing

wintry solar
#

You need to use post triggers

#

That would make it super easy

naive sun
naive sun
red flower
naive sun
unborn bay
#

extra is an additional effect table basically

#

extra is uh

#

a smods feature

#

lmao

#

if you're talking extra like the extra table in the ability table that's just a way of storing values without fear of something else generally overriding it

red flower
wintry solar
#

Extra is a vanilla feature 🤣

wintry solar
slender zenith
#

how do i see the code of vanilla jokers? more specifically DNA

#

i couldnt find any of the actual functionality in the files but i might be stupid

red flower
rapid stag
#

question, would SMODS.create_card({ set = 'Spectral', edition = 'negative' }) be inclusive of soul cards and respect its rate?

slender zenith
unborn bay
rapid stag
#

i see

lofty sand
#

anyone know where I can find the reference for joker in the card.lua? (jimbo, the plus four mult one, john balatro if you will)

bold sleet
red flower
naive sun
slender zenith
#

may have done something a liiiiiittle wrong...

bright axle
#

anyone knos how to localize a planet card?

red flower
#

for the name

bright axle
#

in a loclizatrion file

#
return {
    descriptions = {
        Joker = {
            j_cdv_bocette = {
                name = "Bocette",
                text = {"At shop end, consume a", "non-eternal {C:attention}Joker{}.",
                        "Adds {C:dark_edition}Negative{} copy.", "Gives {C:mult}+ #3#{} Mult and",
                        "{C:chips}+ #4# {} Chips per Joker", "Current: {C:mult}+ #1#{} Mult and {C:chips}+ #2#{} Chips"}
            },
            j_cdv_rebeca = {
                name = "Rebeca",
                text = {"At end of blind, create", "{C:dark_edition}Negative{} Celestial", "card for most played hand"}

            },
            j_cdv_creadora = {
                name = "Creadora",
                text = {"At start of round, replace", "random card in hand with",
                        "4 upgraded {C:attention}random{} cards",
                        "{C:inactive}(Uses {C:tarot}Tarot{C:inactive} and {C:planet}Celestial{C:inactive} enhancements)"}
            }

        },
        Planet = {
            c_cdv_haumea = {
                name = "Haumea",
                text = {"{S:0.8}({S:0.8,V:1}grd. #1#{S:0.8}){} Gradum augit", "{C:attention}Iugi",
                        "{C:mult}+#3#{} Plex et", "{C:chips}+#4#{} nummuli"}
            }
        }
    },
    misc = {
        poker_hand_descriptions = {
            ["Definitive Straight"] = {'5 cards in a row (consecutive ranks) with',
                                           'all cards alternating betwen two suits'}
        },
        poker_hands = {
            ["Definitive Straight"] = "Definitive Straight"
        },

        dictionary = {}
    }

}

i have this but it chrashes

red flower
#

looks fine to me, how does it crash?

bright axle
#

nil value

red flower
#

i would like the crash log

red flower
#

maybe it's the poker hand? i think you're using the wrong poker hand key in the localization

#

it says cdv_def_straight_Definitive Straight in the log

bright axle
#

nope the key is Definitive Straight i tries cdv_def_straight_Definitive Straight and cdv_Definitive Straight but none work

cyan lagoon
#

how do i use context.destroy_card?

lofty sand
#

hypothetically if I wanted to make Canio's effect work with any card, not just face cards, could I simply replace "face_cards" with "playing_cards"?

red flower
#

no, thats a local variable

#

you need to replace the counting logic
it would be simpler because its just #context.removed

open aspen
#

return {
message = localize('k_again_ex'),
repetitions = 1,
card = self
}

what happens if i returned this without context.repetition?

lofty sand
red flower
#

thats how canio counts them

red flower
#

why

open aspen
#

i was hoping it would still repeat

red flower
#

im pretty sure it doesnt

open aspen
#

ugh

#

that is annoyin

lofty sand
rapid stag
# cyan lagoon how do i use context.destroy_card?

you mark cards that meet your conditions for being destroyed in other contexts with some kind of boolean
then you do

  return { remove = true }
end```
here's how i do it in my joker that destroys cards by random chance. mine's a little fancy because i specifically tuned the sequence to make it go per card, but the general gist should be clear
i hope that helps ![cirDerp](https://cdn.discordapp.com/emojis/1200501923917348884.webp?size=128 "cirDerp")
it is usually fine to just use ``.getting_sliced`` for this purpose ~~as that has no other real effect aside from being the same name as what ceremonial dagger uses~~ 🤷‍♀️
primal terrace
#

Still feel like a noob at this

#

Hopefully this sounds correct

red flower
red flower
rapid stag
red flower
#

yeah because individual is just before destroy_card iirc

red flower
open aspen
wintry solar
#

You shouldn’t need to apply getting sliced inside the destroying context

primal terrace
red flower
#

yeah

split cairn
#
        for i = 1, #G.hand.highlighted do 
            G.hand.highlighted[i]:set_edition({negative = true},true)
        end
    end,
``` how do I this consumable give an enhancement or seal instead?
red flower
#

:set_ability("m_key") for enhancements
:set_seal("key") for seals

#

although i think consumables have an option to just give them the enhancement you want to make

runic pecan
#

How to check if a card is a consumeable?
As in, while we can use if v.ability.set == 'Joker' then to see if v is a Joker, we cannot simply use if v.ability.set == 'Consumeable' then because that is not how it works.

open aspen
#

Consumable btw

split cairn
runic pecan
red flower
runic pecan
red flower
#

no idea

runic pecan
#

I'll go check that myself.

split cairn
red flower
#

yeah

open aspen
#

fml

#

more patching

red flower
#

i dont see why you would need to patch

open aspen
#

huh?

red flower
#

what do you need to do

open aspen
#

this was my attempt at patching it

#

directly

brisk rose
#

huh, those editions which were showing up black /do/ do something

open aspen
#

oh i just realized

#

i never explained what i was doing

#

its not a specific joker i wanted to make a change for red seals 😭

red flower
#

whats the change

open aspen
#

simply make it work in other contexts

#

rn im trying to make it work for discards

runic pecan
open aspen
#

aka if u discarded with rebate

#

it gives u double money

#

very original idea here ik

red flower
#

i mean i wouldnt patch it, i would take_ownership but yeah thats more complicated

open aspen
#

what is take_ownership?

#

thats a new concept to me

open aspen
red flower
#

it basically lets you replace parts of cards using the smods api

open aspen
#

is there a calculate function for a red seal

slender zenith
#

what's the different between 1x and 2x textures? i put them next to each other and it seems like 1x is... blurrier?

open aspen
#

wait

slender zenith
#

like whats the point of each

open aspen
#

im so dumb lowkey ofc there is

red flower
#

yeah, it still wouldnt solve your problem i think but it would avoid patches

open aspen
#

i think to solve my problem

#

i have to patch anyways

#

so that in state events when counting reps it checks for the context i want

red flower
torpid glade
#

Hey guys, Im getting started on making some mods and this is my first time coding. What program do you all use?

slender zenith
#

i see

hardy viper
torpid glade
#

ok cool, thx

hardy viper
#

am i helpful chat

#

isn't it though

slender zenith
#

no

open aspen
#

what would happen if i did this

hardy viper
#

huh

#

i could've sworn

slender zenith
#

theyre the same size the other guy answered me

red flower
red flower
hardy viper
#

ok yeah

open aspen
slender zenith
#

they are the same size though

hardy viper
#

i was about to say

open aspen
#

but im also worried that may horribly destroy the game somehow

red flower
slender zenith
#

photopea is fucked to shit then they open as the same size

open aspen
frosty dock
open aspen
#

that has to frick up something right?

#

or is it technically okay

frosty dock
#

it would do close to nothing actually

open aspen
#

well by itself sure

#

but if i patch state_events to check for this

#

where context.discard == true and context.repetition == true

slender zenith
#

yeah youre right its double the size for some reason photopea makes it smaller if you place rather than open

#

my bad

frosty dock
#

and no, you can't add repetitions like that

open aspen
#

not even if i change state_events

#

?

#

this is vanilla code

#

for red seals

#

what if i made the change i suggested and change that repetition_only at the end to be discard = true

frosty dock
#

smods code is substantially different from this. what i mean is that it's not reliable to add repetitions from the inside like this

open aspen
#

i see

#

to refresh waht im doing

#

i just wanted to have red seals do a repetition on other contexts

#

like context.discard

#

i feel ive gone down a wrong turn dark spiraling path with this current method of getting it to work

#

there must be an easier way

frosty dock
#

there's a bit of a logistical issue with repeating context.discard because it can destroy cards, but that can be worked around

open aspen
#

oh thats true

frosty dock
#

this is the relevant code as patched by smods

open aspen
#

i see

frosty dock
#

this is how repetitions are built into the main scoring phase of playing cards

rapid stag
#

why doesn't this condition enter? cirThink

open aspen
#

so i assume SMODS.calculate_repetitions changes reps based on whether the context and card added a repetition

frosty dock
#

you would then pretty much have to patch to integrate the repetition loop into the discard effect

novel drum
#

is there any way to get the key of the current stake instead of the number returned by G.GAME.stake?

red flower
open aspen
frosty dock
#

it asks everything that can generate repetitions and puts them into reps

frosty dock
#

context.end_of_round isn't unique and will trigger multiple times [context.end_of_round and context.main_eval is correct for a single trigger]

#

SMODS.create_card won't put the card where you need it, you should use SMODS.add_card for that

#

iirc it also expects edition = 'e_negative'

open aspen
#

i know thats wrong

#

partly cause i tried that a while back

frosty dock
#

repetitions are specifically checked in any repetition context, not anywhere else

torpid glade
#

Another question rq. In the source code, where can I find the code for the joker cards specifically?

frosty dock
#

that's mainly because anything else would require an unlimited amount of repetition layers

open aspen
#

if its not checked

#

i realize atp im just asking to have it spelled out, its quite hard to wrap my head around somehow

frosty dock
frosty dock
open aspen
#

i usually do ctrl-shift-f to search all files, look for the joker name directly, find the key, then search for the key

frosty dock
open aspen
#

oh yea

#

doesnt it normally just straight up check == 'some string'

red flower
#

sometimes it doesnt even use the correct names!

rapid stag
novel drum
cyan lagoon
#

how do i make a joker shake like booster pack?

rapid stag
#

...i see

#

that's confusing cirBlech

hard mica
#

Is there any documentation for the API? I wanna read it and get a hang onto the funcs n stuff , also is there an extension for VC? Cause I like it so it auto fills , more convenient imo

frosty dock
red flower
rapid stag
#

well it works now, so thanks cirComfy

open aspen
#

hmm

red flower
#

it should be in your mods folder if you installed it, else install it following that link

quartz ravine
#

How do I check what the red notification means in the discord mobile app?

frosty dock
open aspen
#

is it that hard 😭

open aspen
#

all good

brisk rose
#

lol

open aspen
#

i appreciate every bit of help so far

brisk rose
#

idk where they are on decktop

frosty dock
#

it's no different than how repetitions work elsewhere, I just haven't touched it in a while and would have to remind myself of how exactly they function

quartz ravine
#

The IOS app is weird!

open aspen
#

ill look into it when i have some free time

slender zenith
#

made my first joker :D

quartz ravine
#

Hey @brisk rose I did a new release and gave you a shout out for your ideas!

frosty dock
quartz ravine
slender zenith
#

thats a good idea i'll try

open aspen
#

amazing tho congrats

quartz ravine
#

Apoptosis - destroys cards for last discard of each round

Could be another fun take on the cellular gimmick

slender zenith
#

i like that

daring heron
#

how do i make a spectral look like the soul, and appear like the soul but in buffoon packs instead of arcana packs?

scarlet thorn
slender zenith
#

baboon pack

scarlet thorn
#

Autocorrect

runic pecan
#

Which one looks better?

open aspen
#

right, but change it to "if no cards were selected"

runic pecan
manic rune
#

civilization

runic pecan
manic rune
#

oh damn, im sorry 😭

daring heron
viscid lagoon
#

does anyone have an example mod of booster packs and/or vouchers?

rapid stag
#

question, how can i, in its return table, get a joker to juice without any message?

flat sorrel
daring heron
#

why is this crashing? i don't even think that's my code

rapid stag
polar star
#

any ideas on what the easiest way is to check if someone doesn't spend any money in the shop (per round)?

daring heron
#

idunno if that would work or how but probably add the money spent to a vars and check if it's 0

polar star
#

how do you track the money spent?

daring heron
#

no idea

slender zenith
#

art is ugly as hell but it works

#

i removed the blueprint compat i forgot before that screenshot

scarlet thorn
#

If you just call it no event, it will juice at the beginning of calc

rapid stag
scarlet thorn
#

That also wokrs

lofty sand
#

yo can someone with a brain (not me rn) help me debug some code? lol

joker works fine, only issue is values display as +nil and I'm not sure why

rapid stag
lofty sand
#

cool, here

#

no nitro, sorry :(

#

don't judge too harshly this is literally my first time working with lua lol

rapid stag
#

so the #1# and #2# are defined in the vars table inside a table returned from loc_vars, which you do not have. so since there isn't anything, they show as nil

lofty sand
#

oh that was supposed to be my loc_def table, could I just change that to local_vars?

rapid stag
lofty sand
#

theres a wiki

#

holy fuck

#

thank you

flat sorrel
# polar star how do you track the money spent?
[[patches]]
[patches.pattern]
target = 'functions/common_events.lua'
pattern = '''
function ease_dollars(mod, instant)
'''
position = 'after'
match_indent = true
payload = '''
    if mod < 0 then
        # money has been spent
    end
'''
#

although this will also trigger in non-shop contexts so also check if G.STATE == G.STATES.SHOP

polar star
#

yeah, we also found that tracking just money has some loopholes but we found an idea that will hopefully work

#

like with the spectral card that turns your money to 0 and stuff

rapid stag
torpid plume
#

hey gang i’m having an “attempted to call a nil value” error and i’m not seeing what could be wrong- all the code i have rn is posted in #1371331136961380382 if anyone wants to take a look and try n help

daring heron
#

well it's still crashing but different

rapid stag
# daring heron well it's still crashing but different

the key you passed is likely not a valid key.
keys in this context always need to have their set type prefix
and if they're from your mod, they need your mod prefix, too
the standard formula for, for example a mod joker, is
j_[your mod prefix]_[your joker's key]

daring heron
#

oops

quartz ravine
# slender zenith

Jeeze, that was fast!

To me that’s a powerful card. It would be cool if it’s sell value increased per card you destroy as an added perk.

It’s a godsend for deck fixing and especially if you use Obelisk

quartz ravine
slender zenith
#

i think the sell value would be a little op because i wanna keep it uncommon

slender island
#

nvm, i figured it out

daring heron
#

would this even spawn?

#

i tried to make it a 100% chance for testing

scarlet thorn
daring heron
#

why not?

brisk rose
daring heron
scarlet thorn
#

Remove the thing that makes it not ik through pool

daring heron
#

oh lfmao

daring heron
#

it only spawns in spectrals

slender island
#

is stealing ideas from reddit to practice in coding a good idea?

daring heron
#

most of the ideas ive seen are pretty good

lofty sand
#

I think I got the jist, just no idea how to replace +#2#

daring heron
#

my spectral card isnt spawning in buffoon packs, how do i fix this?

placid star
#

i have a consum that spawns a tag, every other tag works fine but this one crashes, are there any fixes?

placid star
daring heron
#

i think it's 0.003 lemme check

#

but that was just for testing purposes

red flower
daring heron
#

might me 0.3%

brisk rose
# brisk rose

Once again, anybody have any ideas how to get negative to do the thing and shut it isn't

daring heron
#

yep

#

0.3

brisk rose
placid star
red flower
#

nope sorry
you can try looking for tag_orbital

red flower
lofty sand
#

yo if I use loc_vars like this...

            return { self.ability.extra.chips, self.ability.extra.chip_mod }```

 to return two different values, is there any reason they should display as nil?
placid star
#

wait found it

red flower
red flower
lofty sand
#

o sheit you right

placid star
red flower
#

add_tag takes a tag not a key

#

that's why you do Tag(tag.key)

placid star
#

ahhhh

red flower
#

you can just separate them

placid star
#

so Tag(tag.key).ability.poker_hand = ... in an if?

red flower
#

i wouldnt edit the values in the same line youre creating the object but yes something like that

wintry solar
wintry solar
hard mica
tired kestrel
#

just in case, I want to ask, is there like a guide on how you can code a joker? Like how to know about the mults creating random jokers or torot cards or maybe even special ones like copycat ability?

wintry solar
#

Looks like it’s Tag(key, some_bool, blind_type)

slender zenith
#

could someone help me? why does this not work

red flower
slender zenith
#

get_enhancements returns a table so i think thats why but i dont see how else i can get it

red flower
red flower
red flower
#

go to file > add to workspace

slender zenith
hard mica
red flower
slender zenith
#

oh right i didnt know how lua worked mb

red flower
slender zenith
#

imma try some bandaid fix for my problem though

red flower
hard mica
red flower
#

hmm that looks like normal vscode autocomplete
do you have the lua extension?

hard mica
#

i searched steammoded or smods

red flower
#

search for lua and install the one by sumneko

#

there's no smods extension

hard mica
#

okay i got the extension

#

i think its good to go

lofty sand
#

does anyone know where a debug print might show up? I'm trying to see if my config extra table is properly initialized and the self.ability.extra is being initialized before I try to access them

hard mica
shrewd fox
#

Hi, I have what I think is a fairly complex joker concept to implement and I'm not sure where to get started, just need some pointers.

#

The closest vanilla card is Pareidolia but looking at how that works in VanillaRemade doesn't give me much of a hint since the function it modifies is very specific to face cards

#

I also fully understand if it's just straight up not doable

red flower
red flower
lofty sand
#

it wasn't showing up on debugplus when I loaded the mod or when I triggered the joker, how do I open the lovely console?

red flower
#

it opens with the game

lofty sand
#

oh that console lmao

#

durr

red flower
#

or you can look at the logs under Mods/lovely/logs

lofty sand
#

oh good call

red flower
#

hi dilly

wintry solar
modern kindle
#

Hi n :D

hard mica
red flower
#

no idea then sorry

daring heron
#

oh btw how do i make my spectral card destroy all other jokers?

hard mica
#

its fine dw

woeful stratus
#

this replaces the rank

#

it doesn't count as both

slender zenith
#

ah

#

my bad

hard mica
tired kestrel
#

Uhh.. I'm sorry if I interupt but right now I still want to ask if there is a detailed guide on making jokers

#

and also geting to know how they function

daring heron
#

does anyone know how i can make my spectral card destroy all jokers in hand? i tried looking at the balatro code but that didnt work

plain apex
#

you have jokers in hand and not in the joker slots?

slender zenith
brisk rose
daring heron
daring heron
slender zenith
#

me neither but that destroys all jokers so

tired kestrel
#

speaking of joker slots, I'm wondnering is it possible to make a joker card that can do any of these things:
copy a random joker card.
try to boost up any stats.
turn any stone cards into regular cards?

#

(just something to test modding if any)

wintry solar
placid star
scarlet thorn
wintry solar
#

Yes

#

It should do

rapid stag
plain apex
#

you'd probably want to do something similar to my thanos joker

                    -- Collect all cards separately
                    local jokers, consumables, hand_cards = {}, {}, {}

                    for _, c in ipairs(G.hand.cards) do table.insert(hand_cards, c) end
                    for _, c in ipairs(G.jokers.cards) do table.insert(jokers, c) end
                    for _, c in ipairs(G.consumeables.cards) do table.insert(consumables, c) end

                    -- Function to destroy a rounded-up half of a card list
                    local function destroy_half(card_list)
                        local num_to_destroy = math.ceil(#card_list / 2)
                        for i = 1, num_to_destroy do
                            if #card_list > 0 then
                                local randomIndex = math.random(#card_list)
                                local target = card_list[randomIndex]
                                if config.sfx ~= false then
                                    play_sound("fn_dust")
                                end
                                target:start_dissolve()
                                table.remove(card_list, randomIndex)
                            end
                        end
                    end

                    -- Destroy cards separately
                    destroy_half(jokers)
                    destroy_half(consumables)
                    destroy_half(hand_cards)

                    -- Create a Legendary Joker
                    local new_joker = create_card("Joker", G.jokers, true, 4, nil, nil, nil, "")
                    new_joker:add_to_deck()
                    new_joker:start_materialize()
                    G.jokers:emplace(new_joker)

                    return {
                        message = "Balanced...",
                        colour = G.C.MAGENTA
                    }
                end
                return true
            end}))
        end
    end
}
scarlet thorn
# wintry solar Yes

Any chance you can send the init function for tags. I never noticed the extra args while making better tags

plain apex
#

@daring heron

hybrid shadow
#

how do i write out colors for badge_colour in rarity

daring heron
#

but does anyone know how i can delete all the current jokers?

daring heron
plain apex
#

the thing i just sent discord bugged and didn't reply

scarlet thorn
plain apex
wintry solar
hybrid shadow
scarlet thorn
hybrid shadow
#

k

daring heron
# plain apex

well i have no idea which part actually destroys them

scarlet thorn
plain apex
daring heron
#

and how do i make it target all?

wintry solar
#

Orbital tags specifically require the blind type to populate their hand

plain apex
#

you'd do similar to my thanos joker that i sent that targets everything then halves it you'd just remove the non joker targets and remove the part where it halves it

dull sage
#

This is a long shot, probably making this too complicated - I have a seal that will change between 3 random values every round. At the moment I am able get the change to value on all instances of that Seal, that bit is easy, but I'm wondering if it's possible to have different values for each instance of the Seal.

daring heron
lofty sand
# rapid stag ~~...what?~~ oh you sorted it, unsure why discord decided to ping me now

the text I'm trying to display is,

        "{C:chips}+#2#{} Chips when each",
        "playing card is destroyed",
        "{C:inactive}(Currently {C:chips}+#1#{C:inactive} Chips)",```

how I'm trying to return those values is with the loc_vars function, that wiki you linked me to says that ```return { vars = {self.ability.extra.chips, self.ability.extra.chip_mod} }``` should return as +#1# and +#2# respectively, yet it just returns as +nil and +nil, so I'm trying to figure out how to use the keys, I figured out that I just had to define whatever key I wanted as +#2#, but if what I'm doing is nonsense then lmk lol
red flower
#

card instead of self

rapid stag
#

ah

lofty sand
hybrid shadow
rapid stag
#

yeah, card instead of self then

wintry solar
hybrid shadow
lofty sand
next timber
#

ok seriously where tf are my cards

tired kestrel
next timber
#

@tall wharf you are good with ui. do you know why the cards arent there (sory for ping)

next timber
#

there are cards in the new cardarea. where are they

lofty sand
next timber
#

wait my patch isnt patching

#

wha

rapid stag
next timber
#

nvm no it is patching

lofty sand
#
        card.ability = card.ability or {}
        card.ability.extra = card.ability.extra or { chips = 0, chip_mod = 0 }
        return { vars = {card.ability.extra.chips, card.ability.extra.chip_mod} }
    end
}```
#

oh wait

#

OOPSIES :))))

wintry solar
# dull sage

Never use self, you want to use the card reference instead

rapid stag
lofty sand
#

deleted more than I meant

lofty sand
daring heron
#

so something like this?

#

nope..

#

why is it so hard to just destroy all jokers?

tired kestrel
placid star
tall wharf
#

hook CardArea:draw

placid star
#

how does the pools var work for cards? e.g. pools = {[collection} = true where is this stored? i checked G.P_CENTER_POOLS but cant find it

shrewd fox
placid star
hybrid galleon
#

Is this too much for a single joker? I guess it's not hard to understand the ability as it's mostly just Marvel + Stone Joker, but it is very, very long compared to any vanilla jokers.

daring heron
placid star
#

nevermind

#

do this:

daring heron
#

huh?

placid star
#
for i,v in ipairs(G.jokers.cards) do
  v:start_dissolve()
end
plain apex
# daring heron huh?

here modified one of my things this destroys all jokers

SMODS.Consumable{
    key = 'LTMPolychromeSplash',
    set = 'LTMConsumableType',
    atlas = 'Jokers',
    pos = {x = 4, y = 5},
    loc_txt = {
        name = 'Polychrome Splash',
        text = {
            'Destroy all jokers'
        },
    },
    config = {
        extra = { cards = 1 },
    },
    loc_vars = function(self, info_queue, center)
        info_queue[#info_queue + 1] = G.P_CENTERS.e_polychrome
        return { vars = {} }
    end,
    can_use = function(self, card)
        return G and (#G.jokers.cards > 0)
    end,
    use = function(self, card, area, copier)
        if not (G and G.jokers and #G.jokers.cards > 0) then
            print("No Jokers to destroy.")
            return
        end

        for i = #G.jokers.cards, 1, -1 do
            local target = G.jokers.cards[i]
            if target then
                play_sound("slice1")
                target:start_dissolve()  -- Initiates card dissolution
            end
        end
    end,
}
dull sage
plain apex
dull sage
#

No error now but all my values are nil

placid star
weary sentinel
#

where can I commission someone to code my jokers for me

plain apex
placid star
wintry solar
placid star
#

@wintry solar this no workie

dull sage
#

I reloaded the game and started a new run

plain apex
#

idk my code is very inefficent like everywhere probably lol

daring heron
#

btw might be a really stupid question but how do i give my mod an icon?

wintry solar
red flower
plain apex
tired kestrel
#

Umm, guys does anyone know where to start coding a joker?

sleek cliff
#

so I put this code into here, still nothing

tired kestrel
#

as a test first.

dull sage
plain apex
#

but i also have a joker from when i started this mod whos full code can't even fit on screen so if i was to go about having efficient code i should probably start there

daring heron
#

why does my spectral appear so often? like almost every single pack..

wintry solar
dull sage
plain apex
wintry solar
#

Oh it’s a seal

#

Uhhh, it’s card.ability.seal.blablabla iirc

daring heron
tired kestrel
#

Uhh... I'm sorry to interupt but I'm stuck trying to learn how joker codes work, I don't know if I missed anything even though I'm actually new to this but a little guide would help if any.

#

on coding.

#

Or how to mod a custom joker.

timid zinc
#

You can also take a look at other mods and see how they handle such things

plain apex
tired kestrel
plain apex
#

oh like blueprint?

tired kestrel
#

as well as trying to figure out how I can convert a stone card into a regular card

tired kestrel
#

not just only to the right.

plain apex
#

hm i have a legendary joker that works as a left and right blueprint but thats not exactly the same thing (could still send that if you want tho)

tired kestrel
#

Yeah,

dull sage
tired kestrel
#

Also, wished there's like tutorials about like custom abilities mostly.

wintry solar
placid star
plain apex
red flower
wintry solar
dull sage
#

Yup

plain apex
#

and of course the code is too long because almost all of my code is :/

wintry solar
dull sage
#

Right at the top of my file

plain apex
# tired kestrel Yeah,

first half

SMODS.Joker{
    key = 'Zorlodo', 
    loc_txt = {
        ['en-us'] = {
            name = "Zorlodo", 
            text = {
                "Dissociates so hard the he thinks he is ",
                "The {C:attention}left{} and {C:attention}right{} jokers",
                "Even if they cannot be copied"
            }
        }
    },
    atlas = 'Jokers',
    pos = { x = 3, y = 4 },
    config = {
        extra = {
            -- No additional properties required for now
        }
    },
    rarity = 4,
    cost = 4,
    blueprint_compat = true,

    calculate = function(self, card, context)
        -- Initialize a table for results
        local results = {}

        -- Identify left and right jokers
        local left_joker, right_joker
        for i = 1, #G.jokers.cards do
            if G.jokers.cards[i] == card then
                left_joker = G.jokers.cards[i - 1]
                right_joker = G.jokers.cards[i + 1]
                break
            end
        end

        -- Process the left joker, if it exists
        if left_joker and left_joker ~= self then
            context.blueprint = (context.blueprint and (context.blueprint + 1)) or 1
            context.blueprint_card = context.blueprint_card or card

            if context.blueprint > #G.jokers.cards + 1 then
                return
            end

            local left_result, left_trig = left_joker:calculate_joker(context)
            if left_result or left_trig then
                if not left_result then
                    left_result = {}
                end

                left_result.card = context.blueprint_card or card
                left_result.colour = G.C.GREEN
                left_result.no_callback = true
                table.insert(results, left_result)
            end
        end
plain apex
#

second half

-- Process the right joker, if it exists
        if right_joker and right_joker ~= self then
            context.blueprint = (context.blueprint and (context.blueprint + 1)) or 1
            context.blueprint_card = context.blueprint_card or card

            if context.blueprint > #G.jokers.cards + 1 then
                return
            end

            local right_result, right_trig = right_joker:calculate_joker(context)
            if right_result or right_trig then
                if not right_result then
                    right_result = {}
                end

                right_result.card = context.blueprint_card or card
                right_result.colour = G.C.GREEN
                right_result.no_callback = true
                table.insert(results, right_result)
            end
        end

        -- Return the combined result
        if #results > 0 then
            return results[1] -- Return the first result (or adjust as needed)
        end
    end
}
wintry solar
dull sage
#

Yes?

wintry solar
wintry solar
plain apex
red flower
#

remove the "path to"

plain apex
#

taking like 90 lines to do something that can apparently be done in 8

next timber
#

is it possible to make a cardarea not allow dragging the cards in it?

sleek cliff
#

Ok, so it exists now, but this pops up

tired kestrel
dull sage
next timber
next timber
plain apex
#

thats honestly really helpful

next timber
#

is it possible to make a card area give all its held cards a button?

red flower
red flower
dull sage
shell timber
#

bring back chipmult for agender

#

the mod that never was

dull sage
#

Uuuh I currently have Agender set for +3 chips if no cards in hand have a gender

shell timber
#

also that's where the arrows for monus cards in modernfluff come from btw

tired kestrel
#

By the way, somehow it got me thinkin' or rather an odd question I've seen some random custom Balatro jokers from other sites on my searches for like how I can make jokers randomly before I stumble across this server and I had the idea or thought of idea of actually making one into an actual joker that can work. though I wasn't sure about these though they were made by other artists, but I wasn't sure if they seem to worth making them into an actual joker in Balatro:

shell timber
#

you should probably ask the creator's permission if you do

next timber
#

you should probably ask the creator's permission if you do

tired kestrel
# next timber you should ~~probably~~ ask the creator's permission if you do

Yeah, I mean honestly even though I haven't gotten any contacts for these artist or creators but then again, yeah.

Although I was thinking just using one of the custom card designs just for testing or maybe just for fun but when I actually do a full mod, I wouldn't include the card art unless given permission from one of the artists.

Also I wasn't sure if any card artists outside from this server are in this server?

next timber
#

<@&1133519078540185692>

tired kestrel
#

But yeah

next timber
#

KILL THIS INDIVIDUAL

karmic creek
#

ok

next timber
#

thank you mods

tired kestrel
#

I do need to ask permission if I ever use these artworks.

dull sage
#

Mods, send them to the shadow realm

nova eagle
#

i have a question... what software do i need to write the code for custom jokers?

shell timber
#

any text editor will do

dull sage
#

A text editor

nova eagle
#

so writing it in the .txt file will work?

#

(this one i mean)

dull sage
#

Even notepad words - but if you don't want hate yourself I'd recommend a proper IDE. I'm using Visual Studio Code SMILERS

nova eagle
#

could you maybe send me a link? im still new to lua, so i want to make this learning process as easy for myself as possible

next timber
nova eagle
#

TANKS

#

thanks

#

caps lock, mb

next timber
#

lol

placid star
#

this code doesnt work, i know its the card = self line because it works when i remove it, any ideas?

red flower
#

remove it

#

lol

placid star
#

yeah but it uses context.individual

#

and i want the message on the joker, not the cards

next timber
#

card = card

#

dont use self in contexts

red flower
#

dont use card =

next timber
#

oh right yea mb

flat sorrel
#

self is the joker type, card is the specific joker card

rugged helm
#

how would i make a joker gain 3 Xmult per Ramen joker the player has?

red flower
#

is ramen a specific joker or a class of joker

rugged helm
#

specific

#

i.e. the joker that is named Ramen

red flower
#

xmult = 1 + 3 * #SMODS.find_card("j_modprefix_key")

rugged helm
#

splendid

shell timber
#

j_ramen

#

?

rugged helm
#

what context would this be under in the calculate function?

red flower
#

oh yeah i forgot that was a joker

daring fern
red flower
#

i assumed because of the name it was their mod lol

rugged helm
#

fair assumption tbh

#

hmm

#

i can't really tell if it's working

red flower
#

well you need to put it in loc_vars too

rugged helm
#

ohh wait

#

it worked

#

it added the X3 upon scoring

tawdry shale
#

i may be stupid but i'm trying to make a joker that gives x7 mult if the scored hand is a three of a kind with rank 7

#

currently it's doing nothing

next timber
#

the cards are card objects, not numbers

rugged helm
#

wait

#

hold on..

rugged helm
next timber
#

youll want to get uhh card.base.rank

#

i think

#

there are like 3 of them that give slightly different values so idfk lmao

red flower
#

or :get_id

red flower
daring fern
tawdry shale
#

also is there a way to refresh balatro w/ the new lua or do you have to close and reopen everytime

slender zenith
#

ive been trying to fix this for so long im really confused why this doesnt work

next timber
slender zenith
#

this what it's meant to do

rugged helm
red flower
slender zenith
#

he wants it to just be a flat x3 mult per ramen that's owned, not a gain on hand

rugged helm
red flower
#

oh wait i get it, my comment was to do return { xmult = ... }

#

don't make it an scaling joker

slender zenith
rugged helm
#
            card_eval_status_text(
                card,
                "extra",
                nil,
                nil,
                nil,
                {
                    message = localize({ type = "variable", key = "a_xmult", vars = {card.ability.extra.Xmult_ramen * #SMODS.find_card("j_ramen")} }),
                    colour = G.C.MULT,
                }
            )
                            return { xmult = card.ability.extra.Xmult + card.ability.extra.Xmult_ramen * #SMODS.find_card("j_ramen") }
                                message = localize{type='variable',key='a_xmult',vars={card.ability.extra.Xmult}},
                                Xmult_mod = card.ability.extra.Xmult,
                          }     
            end```
#

so this?

red flower
#

yes

nova eagle
#

so im trying to get my thing into the game, but it doesnt show up in my mod list for whatever reason

slender zenith
nova eagle
#

although it does show up in the mod manager

red flower
# rugged helm so this?

if you don't want the extra 1 do
next(SMODS.find_card("j_ramen")) and 3 * #SMODS.find_card("j_ramen") or 1

red flower
slender zenith
#

no thats the first print statement, the second one is empty

#

and it doesnt do anything to the card but juice it

flat sorrel
# slender zenith

if the table is {m_bonus: true} then iteration should be via pairs, not ipairs

rugged helm
#

im not that good at lua yet

slender zenith
#

i have been trying this for so long you just solved it in 20 seconds

red flower
#

depends on what you want

rugged helm
#

ah

nova eagle
#

i need some help actually getting my mod into the game to test it out...

red flower
#

the problem is that if it's 0 it will multiply the mult by 0

flat sorrel
#

just do math.max(1, 3 * ramens)

rugged helm
#

yeah it should be 1 + (0.25 per tarot used) + (3 * ramens)

red flower
#

also

nova eagle
shell timber
#

note that xmult_mod and all of that other stuff is the old way of doing it

#

you should do just

return {
  xmult = card.ability.extra.xmult
}```
tawdry shale
#

hold up

red flower
minor magnet
#

uhhh

#

how are straights calculated

#

i think smods rewrites straight calculation

red flower
#

yeah

#

check get_straight i guess

#

or ask @/aure s. smods

tawdry shale
red flower
#

you're missing a context check.
what's the effect?

tawdry shale
#

the effect?

red flower
#

of the card yes

tawdry shale
#

wdym by effect

maiden phoenix
red flower
rugged helm
#

i'm gonna change it later on

tawdry shale
#

if the scored hand is a three of a kind of rank 7, the final score gets x7 mult

rugged helm
#

it's just there for testing purposes at the moment

#

referenced that mod's code a bit

red flower
#

im asking because those are different contexts

tawdry shale
#

final score

lofty sand
#

is it possible to take effects from boss blinds and or decks and add them to jokers? for instance adding plasma deck's balance to a joker, or the arm's ability to de-level a hand?

red flower
#

or context.final_scoring_step

red flower
lofty sand
#

dope

placid star
#

can anyone tell why this doesnt work? it doesnt give me any money at all

nova eagle
#

can someone explain to me why my mod wont show up in game? i am hard stuck on this

minor magnet
#

this is the most cursed straight i've ever made

daring fern
placid star
daring fern
#

Also why not just return dollars?

placid star
flat sorrel
daring fern
nova eagle
slender zenith
#

listen to amaryllis

flat sorrel
red flower
#

doesn't it initialize their global table?

golden lake
#

this is used to initiate the mod init object

#

every joker's registering function is then added to this init object

#

and then the mod iterates over the init object

#

and adds every joker individually

red flower
#

oh the cryptid method

golden lake
#

from the INIT object

nova eagle
golden lake
unkempt thicket
#

Shouldn't this work for tag context?

golden lake
#

before cryptid Codex Arcanum did that

red flower
golden lake
#

it's a good method

#

a clean method

red flower
#

agree to disagree

flat sorrel
#

I don't understand how it's actually being used though. ExtraCredit doesn't seem to be used anywhere in the actual source, and afaik new Jokers are initialized by simply calling SMODS.Joker?

daring fern
red flower
golden lake
#

but that's the usecase of creating an INIT object

rugged helm
#

what the fuck. william mutual

nova eagle
golden lake
#

maybe EC had that at one point and the refactored

#

Balatrostuck has that because we deal with seven million merge conflicts every tuesday

daring fern
golden lake
#

we would deal with seven octillion merge conflicts otherwise

nova eagle
#

like i just make another text thing here and make it .json?

flat sorrel
#

Yes, it's a plaintext format

nova eagle
#

ok

#

does it have to be named anything specific?

daring fern
red flower
golden lake
#

every joker has its own file

#

meaning that if i work on joker X and my friend works on joker Y

#

we will not have to edit over the same file

flat sorrel
#

If each separate file individually just calls SMODS.Joker does that not work? Not familiar with lua in this respect

tawdry shale
golden lake
#

we are working in two separate files which makes comitting our changes cleaner

nova eagle
#

ok... so now the mod is being loaded... thats good. now i just need help understanding this

red flower
#

i just have my jokers in separate files and initialize them normally

#

i dont see the need for init

golden lake
#

we've been doing this since before SMODS had stuff like consumables support

novel drum
#

anyone know what variable controls how often finisher blinds show up? ik they show up every 8 antes in endless and i'm wondering if there's a variable i could change to make them show up every 6 instead (i.e. 6,12,18,24 instead of 8,16,24,32)

flat sorrel
cunning barn
#

sometime this summer I'm gonna get back into jokestar. I know I'm CLOSE on KOT's coding but it's just not working right. might have to recode from scratch since I largely based it on another hand size-correlated Joker that probably had different variables
still excited about this mod but I'm really gonna have to buckle down to work on it

nova eagle
#

what do i fill for that?

slender zenith
#

your main file

#

probably yourmod.lua

tawdry shale
#

it works now

glad osprey
#

ignore the shit colours my monitor tricked me

nova eagle
flat sorrel
#

it's a relative address. if your main lua file is in the same folder as the json, it's "name.lua". Otherwise "folder/name.lua" etc.

tawdry shale
#

only problem is it says "x7" twice

slender zenith
#

yes

red flower
cunning barn
tawdry shale
red flower
#

remove the message and the color

#

it does it automatically

slender zenith
#

uhhhh shit i have a problem

#

this works for three of a kind too

#

how do i make it if it IS a pair, not contains it

cunning barn
#

I think there's a separate variable for specific names of hand sizes

red flower
cunning barn
#

*types

#

I called it for one of my jokers

slender zenith
tawdry shale
novel drum
tawdry shale
#

this card is triggering before the modded joker i did

#

does that happen with brainstorm or doesn't it always go left to right

#

the one on the left is my modded one btw

red flower
#

final_scoring_step is at the very end

#

that's why i asked if it was normal joker scoring instead

tawdry shale
#

o

#

my bad

red flower
#

if it's normal scoring then it's joker_main

tawdry shale
#

ty ty

nova eagle
#

OK! my mod is now in the game... issue is whenever i try to change profiles the game crashes

#

is there a fix to this?

#

i want to use unlock all to check to see if the sprite is loaded in properly... but i cant change away from my main profile

slender zenith
#

remove the mod change profiles and add it back?

#

doesnt fix the crash but

nova eagle
#

oooh

#

good news

slender zenith
#

it loaded?

nova eagle
#

it wasnt my mod that was doing that

#

i turned off the mod and relaunched, and it still crashed

#

close enough... glad i got it in the game... thanks yall for the help!

slender zenith
#

based on your previous screenshot it doesnt

#

under the key add atlas = 'cheese house',

daring fern
#

Keys can’t have spaces I don’t think.

slender zenith
#

idk if they can i was just going off of what he already has

#

if the sprite doesnt load after that remove the spaces in both your keys though yeah

minor magnet
#

can anyone help me with the jump cards

#

i'm having quite the trouble with these

cunning barn
#

OK i have another idea that's probably somewhat simpler?
all cards trigger as if they were queens
i.e. all cards in your deck trigger as normal but also are treated as Queens for jokers like shoot the moon, triboulet, etc.
realistically it won't be SUPER easy but I feel like with the servers help I could finish it in like a day

novel drum
minor magnet
cunning barn
#

well that's just great I have to entirely rewrite the joker idea

tawdry shale
#

i was thinking about making this a 1 in 3 chance

daring fern
minor magnet
#

like you'd have to rewrite most of card:get_id()

cunning barn
#

for context it's based on senor cardgage from homestar runner and one of his things is that he refers to everyone by a butchered female name, and i want to reference that. my idea involving quantum ranks was my only one that I thought was unique. like pretty much every other idea was a super niche version of triboulet or shoot the moon etc
so back to the drawing board I'd rather not rewrite a ton of base game code

#

maybe something with wilds to make them viable. considering hes just generally spouting vaguely familiar gibberish most of the time

spiral crown
#

Is there a way to set rarity for a consumeable? I'm not seeing anything in the github for consumeables

cunning barn
#

ok i got it.
face cards become wild, retrigger wild cards twice
this has Probably been done but it works for me

next timber
#

ughghh why cant i find what code makes use buttons turn red. this should be simple

red flower
#

isn't it like G.FUNCS.can_use_consumeable or something

spiral crown
daring fern
next timber
next timber
spiral crown
#

Maybe I could finagle that if I make 2 different "consumeable types" and make it so the higher rarity ones appear in the regular at a specific rate

lofty sand
#

trying to make a joker whose effect only triggers if played hand contains only stone cards, does anyone know how I could make something like that work?

daring fern
nova eagle
slender zenith
#

do you guys think this theme fits the effect?

lofty sand
minor magnet
#

i need help.

lofty sand
slender zenith
#

okay thanks didnt know if it was a stretch or not xD

#

science themed mod so

lofty sand
#

only true bio nerds gonna get that so checks out

daring fern
placid star
#

does anyone know how to use juice_card_until? ik invis uses it but the only reference to it in its code is lit juice_card_until(self, eval, true) which crashes when I use it

lofty sand
daring fern
placid star
placid star
red flower
lofty sand
#

ahh damn that would have saved me a couple hours of pain

red flower
#

i usually try to give them more descriptive names

red flower
next timber
#

ok so what am i doing wrong here. when i try to engage a hearts, clubs or spades card it just Doesn't Stop making the destroy noise, and i can't destroy anything else, im presiming because its fille thde event queue or smth

#

(this is the function that gets called when you press the button given to a card while its in my custom cardarea G.rascal_room)

red flower
#

return true in the events

next timber
#

ah

#

what does that actually do btw i dont rlly understand events all that well

red flower
#

events re-add themselves to the queue until they return true

next timber
#

oh weird

#

might come in handy

torpid plume
#

hey y’all i’m getting an “attempted to call a nil value” error with a mod i’m working on. if someone would be able to help me out in #1371331136961380382 id appreciate it a lot as i can’t identify what might be causing the issue

minor magnet
#

can anyone tell me why this isnt working?

#
  1. this is a hook
  2. this is the only part changed
red flower
slender zenith
#

jump cards are meant to count as any rank for straights

red flower
#

as far as I understand what that code is doing is that straights take one less card, but it's not allowing skips

#

you need skip = true for that but even then i dont think it would allow 2 jump cards

red flower
#

yeah straight calculation is one of the things that's stopping quantum ranks from being a thing so it's too far out of my field of knowledge lol

next timber
#

ok wtf. how come using a card has a seemingly random delay anywhere from instant to like. a whole second? at least it feels like a second, its probably closer to half a second lol

red flower
#

maybe it's because there are already events in the queue?

next timber
#

i cant think of anything else that would be in the queue

#

theres nothing going on

red flower
#

hmm no idea

slender zenith
#

how do i do the icon thing for my mod

#

the only examples i can find in my mod folder use the old steamodded header

red flower
#

make an atlas with key "modicon"

slender zenith
#

thats it?

red flower
#

ye

slender zenith
#

thanks

next timber
# red flower hmm no idea

ok ive discovered something even weirder, doing it on a diamond card stops any future delay from happening??? it does also stop any more cards from being drawn after a new one is drawn to replace it for some reason but thats not my main priority rn lol

lofty sand
#

hey, I'm trying to make a joker that balances mult if played hand contains only stone cards. I've managed to get it to balance when a stone card is played, but if there's any more than one stone card played it doesn't balance. does anyone know what might be going on?

lofty sand
#

here:

#

too beeg no nitro :(

minor magnet
sonic cedar
#

How would one take ownership of The Devil? i can't seem to find its code

#

outside of its locvars at least

red flower
# lofty sand

im pretty sure you can just return { balance = true } instead of doing most of that

but anyway the code should only work when all played cards, even unscored, are stone

#

you should also do calculations inside contexts instead of checking if the attributes don't exist

red flower
next timber
#

why does having zero cards in hand cause events to have delays??

lofty sand
red flower
lofty sand
#

ah, isn't that irrelevant cause played stone cards are always scored?

minor magnet
#

ok so

#

i want to make it so

#

jump cards have no rank in a straight

#

but do have one outside of straights

#

is that possible

red flower
lofty sand
red flower
#

yeah im pretty sure, it's pretty new

lofty sand
#

lmao fuck

red flower
#

without d tho, just balance

next timber
#

no d? 😔

minor magnet
#

hell yes

next timber
#

honestly im surprised its not just flat out ending the run

minor magnet
#

wait can you lovely patch smods

#

if yes how

#

that would save me great hassle

flat sorrel
#

target = '=[SMODS _ "src/utils.lua"]'

nova eagle
#

how do i split this text into multiple rows?

next timber
#

{"line 1","line 2"}

#

or do you mean like where specifically should you split it

flat sorrel
sonic cedar
red flower
#

if you take_ownership and don't change the config then it's going to still do the effect

#

if you want to change it you need to change the config to delete the mod_conv or change it to another enhancement

nova eagle
next timber
#

not at all what i meant

#

remove the {line 1} parts

#

the rest is good

#

and put commas at the end of each line but the last

#

outside of the quotes

#
text = {
  "blah blah blah",
  "blah blah blah 2",
  "blah blah blah some more"
}
sonic cedar
#

so im trying to figure out where i'd add the counter increment

nova eagle
#

cool, thx

red flower
sonic cedar
red flower
#

you can hook SMODS.calculate_context

sonic cedar
#

ill whip something up brb

next timber
red flower
#

might have something to do with the game trying to draw cards when the hand is empty?

next timber
#

ok its only 400 events. thats better

next timber
#

looking through the instances of draw_card

#

i see

#

draw_from_deck_to hand (very lengthy function name, thunk) is getting called. a lot.

minor magnet
#

JUMP CARDS ARE DONE

#

MONUMENTAL

lofty sand