#💻・modding-dev

1 messages · Page 188 of 1

manic rune
#

a player out of nowhere will somehow crash with that

#

trust me

#

it always goes like that

sonic cedar
#

what does it skip /genq

normal crest
#

you lose a hand and play nothing

foggy carbon
#

not no benefit. Some jokers only give benefits on the final hand, so burning hands is useful to get to the final hand. Once you get into the scientific notation scores, 99% of the blinds will be won in one hand, so getting that extra Xmult or whatever is worth.

scarlet spire
#

true...

#

actually for the sake of this joker, would you consider 4oak to contain 2pair?

foggy carbon
#

the game doesn't

normal crest
#

No

manic rune
#

no

sonic cedar
normal crest
#

What I'd do for that joker (i realize my previous idea was wrong) is base it off the example provided in the run info

#

and call get_poker_hand_info on it

foggy carbon
minor furnace
#

can I define functions in my mod's main.lua or do I need to patch them into the game files?

manic rune
#

two pairs is two pairs of different cards, while 4 of a kind is 4 same cards so they arent really the same

minor furnace
#

perfect

scarlet spire
#

anyways I'm still trying to figure out why exactly this crashes

lucid owl
#

maybe my most embarrassing dev moment happened earlier when i discovered that my joker i had been debugging for THREE DAYS was perfectly working, the only problem was that in the calculate declaration i wrote function(self, context, card) therefore making every reference of context confuse the game entirely and make the joker entirely unfunctional. all i had to do was change that line to function(self, card, context)

manic rune
#

i honestly cant even imagine having to patch all of those if i cant do that lol

normal crest
#

on juice_up

scarlet spire
#

ohhhh I am blind.

#

thank you for pointing it out

faint yacht
lucid owl
manic rune
#

i have no clue what they even mean, but that art is clean

normal crest
#

The left one summons a worm friend

manic rune
#

in fact, way too clean compared to the pixelated style of balatro 😭

faint yacht
#

I didn't reuse 1x, instead doing 2x separately...

gusty sequoia
faint yacht
#

Like Cryptid, Ninja Rope will increase card selection limit by 1...

normal crest
gusty sequoia
#

I should make worm joker... it does nothing, alternatively you get a singular chip

#

Or maybe I could code it to give a random phrase of encouragement...

manic rune
#

...thats a ninja rope? 😭

gusty sequoia
#

I can see it

normal crest
#

Me too

#

But worm friend is funny so I'm sticking with it

manic rune
#

looks like a heated steel coil for me somehow

foggy carbon
#

there we go, now I have a tooltip for it, so people who download the mod without playing 999 or knowing the math concept, will still understand

lucid owl
faint yacht
#

Mess with G.hand.config.highlighted_limit.

lucid owl
manic rune
#

i cant find the image but imagine the first image heated like the second image

gusty sequoia
#

Oh yeah I can see that too, that's interesting

scarlet spire
#

actually it still isn't juicing up the stolen items but whatever

manic rune
gusty sequoia
manic rune
#

that + oops, all 6s is gonna be absolutely wild lol

normal crest
#

from the code previously it's a fixed 50% lol

manic rune
#

oh

normal crest
#

guess it's wip tho

gusty sequoia
#

Tbh I make all my jokers common until after I get a chance to test them out

scarlet spire
#

it's just common because I keep copying jimbo for my base jokers, I'll probably make it rarer

#

also i forgot about oops

gusty sequoia
#

This is why my in testing 777 joker that retriggers each 7 7 times is common... I still don't know what rarity it should be tbh

manic rune
#

thats even stronger than a rare

#

so idk

gusty sequoia
#

I did the math though, with a five of kind of 7's it gets 40 triggers total

gusty sequoia
normal crest
#

the math is 8 x 5

gusty sequoia
#

I might nerf it to 2... maybe 1 trigger for each 7?

#

Or I'll just keep it since I plan to keep the mod to myself either way

gusty sequoia
#

On an unrelated note how would I make the thing for my mod that shows up under its cards to say it's from the mod be a different colour?

#

I am very sure I worded that weird

vestal ore
manic rune
#

leet

normal crest
#

in your metadata you can add a "badge_colour" = "FFFFFF", entry

gusty sequoia
#

What is a Leet...?

manic rune
#

almost read that as feet ngl

normal crest
#

FFFFFF being pure white

vestal ore
# gusty sequoia What is a Leet...?

Leet (or "1337"), also known as eleet or leetspeak, or simply hacker speech, is a system of modified spellings used primarily on the Internet. It often uses character replacements in ways that play on the similarity of their glyphs via reflection or other resemblance. Additionally, it modifies certain words on the basis of a system of suffixes ...

gusty sequoia
#

So just Hexadecimal :D

gusty sequoia
vestal ore
gusty sequoia
#

Interesting

normal crest
#

That's very specific

gusty sequoia
#

I like it

manic rune
#

thats a really odd hand type ngl, can be both fun and challenging to build a deck around it tho lol

normal crest
#

25% Aces, 50% 3s, 25% 7s

gusty sequoia
#

The glorious LEET build!!!!

#

And a reason to have 7s!!!

vestal ore
#

im considering moving it a bit higher in the order to make up for its specifics, should i?

manic rune
#

a gambling game with no 7s supports is kinda disappointing ngl

normal crest
#

I'd make it better than three of a kind

manic rune
normal crest
#

Idk if better than straight

manic rune
#

As and 7s dont have any good support jokers

gusty sequoia
#

That's why I wanna make a lotta stuff for 7s in my own personal mod

normal crest
#

that could be changed with the jokers the mod provides!

manic rune
#

true, true

gusty sequoia
#

I like 7, it's a good number

manic rune
#

mhm

#

777 is my fav number with 3 digits honestly

#

i mean, who doesnt love it

vestal ore
gusty sequoia
#

I also like 42, but there's no 42 of spades or anything to that effect :(

normal crest
#

hey now you have more ideas

gusty sequoia
#

I have my 777 joker and I plan to do 2ish more about 7s... afterwards I plan to work on Aces >:D

manic rune
#

what if theres a mod that allows you to increase your card's rank insanely high

manic rune
#

like, 1 gazillion of spades

#

❤️

vestal ore
#

oh boy! can't wait to draw a 5,092 of Rank #1,799,802!

gusty sequoia
#

The glorious Red Seal Mult Polychrome 42 of Spades

faint yacht
#

And the first shop in this random run gave the Scales. ⚖️

vestal ore
gusty sequoia
#

Is it really called Mult for the thing that you add to cards that gives +4(?) mult or am I going insane?

vestal ore
#

yea

gusty sequoia
#

Okay

#

It just feels odd to say

vestal ore
#

jimbo himself says it so

gusty sequoia
#

True, glory to Jimbo

broken cliff
#

The regime knows best

plush cove
vestal ore
#

yknow

#

nvm

quasi dune
#

What would be the correct way to put my custom stake between orange and gold? doing this still puts it at the end of the list, and doesn't even apply the other stakes

minor furnace
#

I added this print to state_events.lua but it is not printing...

    local poker_hands = evaluate_poker_hand_wrapper(_cards)
    print(_cards)```
normal crest
#

And how did you "add it to state_events.lua"

minor furnace
#

with a patch

normal crest
#

What's your patch

#

Well, first of all, do you see it in the dump

minor furnace
#

yeah, I copied that from the dump

normal crest
#

Do you see your changes in the dump

minor furnace
#

yes

#

all of my patches applied

minor furnace
# normal crest What's your patch

this was the patch

[[patches]]
[patches.pattern]
target = "functions/state_events.lua"
pattern = '''local poker_hands = evaluate_poker_hand(_cards)'''
position = "at"
payload = '''local poker_hands = evaluate_poker_hand_wrapper(_cards)
print(_cards)'''
match_indent = true
times = 1```
foggy carbon
grim remnant
#

wuh oh, were file uploads disabled in the wake of. The Events Incident. was encountering smth we figured was best described via video

normal crest
#

I can still upload files

grim remnant
#

weird.

limpid halo
#

nope

grim remnant
#

basically, the for loop works, the problem is that. uh. it keeps *re-*calculating itself and more specifically, adding onto itself. our attempt at a sanity check was not that, it turns out. what're we doing wrong here? it doesn't seem to be an issue with the actual for loop, but the code inside it.

        --NOTE: this is bugged and because of how the addition works, if you keep hovering over it, it. Keeps adding. this breaks things fast. oops.
        --could MAYBE solve this with some form of sanity check of "if money > cardsCounted, what the fuck stop that"?????
        local money = 0
        if G.playing_cards then -- make sure the deck. Exists.
            for _, v in ipairs(G.playing_cards) do --basically, "for every playing card, do the following script:"
                card.ability.extra.cardsCounted = card.ability.extra.cardsCounted + 1
                if card.ability.extra.cardsCounted <= card.ability.extra.cap then card.ability.extra.money = card.ability.extra.cardsCounted else card.ability.extra.money = card.ability.extra.cap end
            end
        end```
#

oh, we just had to loudly acknowledge the problem and it fixed itself. go figure. ;P

normal crest
#

you shouldn't modify your card's values in loc_vars

grim remnant
#

where's the best place to move it? this is a temperance-like card, if that helps narrow it down.

normal crest
#

instead of modifying your card directly, use a local variable as a counter

grim remnant
#

...huh. looking at it we think we started trying to do that and just kinda. Forgot. because of the local money = 0 line. sounds abt right

normal crest
#

I didn't even see that but yes it looks like you had the right idea to begin with

#

as a tip, not every single variable has to be in your card's config

foggy carbon
#

just tried to hover over the video to see what your deck did lol

normal crest
#

you could remove cardsCounted and money

#

and only keep cap

minor furnace
#

the only thing I can think of is that somehow G.FUNCS.get_poker_hand_info simply isn't being called, but then if it isn't I have no clue where the UI is getting the display information for the highlighted hand

normal crest
#

Did you try playing a hand

minor furnace
#

yeah, and that didn't do it either

normal crest
#

do eval G.FUNCS.get_poker_hand_info(G.hand.cards) in debug plus' console

#

while in a gaem

minor furnace
#

it printed high card, then I highlighted a pair, and it printed straight

normal crest
#

looks like your wrapper is messed up

#

Lol

minor furnace
#

I guess so

#

it's weird that it's printing the name of a hand when it should be printing the card information, unless I'm misunderstanding what G.hand.cards represents

#

OH

#

It's giving me the best hand I can play with all of the cards I curretnly have, not the ones I have selected

#

that still doesn't explain why that's what it's printing though...

#

It's not even coming from any print statement I've written myself

grim remnant
#

okay, we definitely removed those wrong, and it did crash in a silly way, but. question. can you put a for statement in a ease_dollars(yadda yadda) argument? because while it wouldn't fix the text on the card, that would very easily fix the actual functionality.

gloomy rain
#

Can't figure out my issue

It's crashing the game

plush cove
#

do you have the jokers.png file in your assets folder

#

with 1x and 2x versions

minor furnace
gloomy rain
#

omfg

#

I spelled assets wrong

#

"assest"

minor furnace
#

hmmm. I got a stack overflow trying to make a deep copy of the selected hand

#

perhaps the function I found for making the copy is faulty

faint yacht
#

Sounds like infinite recursion.

minor furnace
#

yup

#

probably a faulty function

#

I absolutely need it to be a deep copy though

faint yacht
#

Set a depth limit.

grim remnant
#

okay, we're almost there. we can get the numbers to stop incrementing every single time they're hovered over, but the function to actually give money is borked now. should we like, make a non-local money variable in config to store the payout, and then call that, or is there a simpler answer we're missing?

    loc_vars = function(self, info_queue, card)
        --NOTE: this is bugged and because of how the addition works, if you keep hovering over it, it. Keeps adding. this breaks things fast. oops.
        --could MAYBE solve this with some form of sanity check of "if money > cardsCounted, what the fuck stop that"?????
        local cardsCounted = 0
        local money = 0
        if G.playing_cards then -- make sure the deck. Exists.
            for _, v in ipairs(G.playing_cards) do --basically, "for every playing card, do the following script:"
                cardsCounted = cardsCounted + 1
                if cardsCounted <= card.ability.extra.cap then money = cardsCounted else money = card.ability.extra.cap end
            end
        end
        return { vars = { money, card.ability.extra.cap , cardsCounted } }
    end,
    atlas = 'Tarot',
    pos = { x = 2, y = 1},
    cost = 3,
    can_use = function(self, card, area, copier) --when can we use this?
        return true -- Yea,
        end, --ok good c:
    use = function(self, card, area, copier)
        ease_dollars(money)
    end
}```
rigid hare
#

Would it be possible to have a blind apply multiple other blinds? Not like the usual blinds where they recursively apply eachother, but multiple seperate stakes.

Basicly, you have one stack of stakes, and another stack of stakes, would it be possible to make one stake add both? And maybe even more stacks?

minor furnace
runic pecan
#
 held in hand at end of round.
(Won't clean if your hand has only one rank.)```Please help me find better wording for the last line.
plush cove
gloomy rain
#

what's the context name for the end round money calculations

plush cove
gloomy rain
#

so, what golden joker refers to

plush cove
#

calc_dollar_bonus(self, card)

grim remnant
#

having tried a non-local variable for the payout... didn't work. any idea what we're missing here? everything here except the actual "give money" part seems to be working just fine. (image embeds smaller so may as well use that)

runic pecan
#

Does any words in the third line need to be {C:attention}-ed?

#

I'm leaning to highlight the "more than one" part.

sturdy compass
#

I think that'd work well

#

Also, anyone in chat rn familiar with modding with Talisman? I'm running into some issue that I'm very confused with

runic pecan
#

Numbers got turn-tabled again?

sturdy compass
#

Not exactly. Lemme reply to it rq

#

here we are

gloomy rain
#

"calc_dollar_bonus(self, card)"

How do I set up the values afterwards here

runic pecan
gloomy rain
#

example? I am extremely new to lua so I might need an example

runic pecan
gloomy rain
#

oh

#

ok

#

thank you

rose dragon
gloomy rain
#

Why thank you good sir

maiden phoenix
#

What if Ancient Joker had Whatsapp

gloomy rain
sturdy compass
#

If Baron had whatsapp

gloomy rain
#

How does Canio's effect look in the code? I am trying to do that but with money instead of mult

faint yacht
#

Reacts to context.remove_playing_cards, with context.removed containing destroyed cards.

solar eagle
#

not ranks

gloomy rain
solar eagle
#

then in that context, see if the cards are face cards

solar eagle
#

no

#

thats not how contexts work

#

if context.selling_card and context.card.ability.name == "Egg" then

#

here's an example, this joker reacts to when you are selling a card

#

and if its the egg

#

if context.remove_playing_cards
and then context.card should be the card being removed/destroyed? i admit my knowledge here is slim

#

you would check if context.card is a face card though i do not remember how to do so because its 2 and i need to go to bed

frosty dock
#

Note: you should be checking keys instead of names: context.card.config.center.key == 'j_egg'

solar eagle
#

i just did it the same way card.lua does

plush cove
solar eagle
frosty dock
#

yeah smods code likes to stay as far away from names as possible

plush cove
#

localization right?

frosty dock
maiden phoenix
#

If mods use the same name for their objects it can be troublesome

frosty dock
plush cove
#

thank you for that wake up call

gloomy rain
frosty dock
gloomy rain
#

I knew about ring master and canios

solar eagle
#

i greatly dislike that its spelled "caino" not "canio" in the source

plush cove
#

celiac joker doesn't like it

gloomy rain
#

ahh

frosty dock
gloomy rain
#

how would I make an internal counter on the card, similar to satellites counter

plush cove
#

i dont think its a common thing to have joker values be passed on to other jokers but i wanted to share the code I used for it

foggy carbon
#

trying to remember, are there any vanilla jokers that deal with played but unscored cards?

plush cove
#

oh I forgor about that

gloomy rain
#

I've been trying to figure out what to write to check if the destroyed card was a face card and I'm getting rly confused

normal crest
#

Anyone know how to make this text not go off screen? It shouldn't pop up on top of the card like that

#

tis on a custom collection tab

plush cove
#

¯_(ツ)_/¯

normal crest
#

D:

#

There's gotta be

plush cove
#

if there is one I would also like to know because i have that same issue as well

normal crest
#

In the jokers collection all the jokers on the top row show their text below them

#

So I would want this to do the same

#

@frosty dock would you happen to know

normal crest
#

The top of the screenshot is the top of the screen

#

The name goes off screen

primal robin
normal crest
#

all credit goes to PaperMoon

rancid charm
#

just finished art for another custo joker

#

and the other one i posted earlier

sturdy compass
#

Go off dude

#

these are great

#

Do you have any function in mind?

rancid charm
#

thanks!

#

yeah the top one of underdog

#

and its affect is gonna be that it gains +3 mult for every hand played that is not your most leveled poker hand

#

and the second one is courier joker

gloomy rain
rancid charm
#

and played 6s give 38 chips when scored and selling it will make a negative version of it much more likely to appear in the shop

sturdy compass
#

Is that a reference of some sort?

rancid charm
#

or somethin like that

#

yeah fallout new vegas

sturdy compass
#

Ah I see

rancid charm
frosty dock
#

it's just not far enough up to be switched

normal crest
#

if you could point me to where the positioning is calculated that'd be great

#

if not i'll look for it tomorrow

plush cove
random sleet
#

wake

normal crest
#

that's okay

rose dragon
plush cove
#

its just in the collection

random sleet
#

crop job so bad it killed godzilla

rose dragon
random sleet
#

my mod has long enough tooltips that stuff goes offscreen all the time

plush cove
random sleet
#

yes it is

#

by the screen height

#

hee hee
hoo hoo

plush cove
rose dragon
wintry solar
#

Are those code and idea badges toggleable?

plush cove
random sleet
plush cove
#

At the moment I'm focusing on getting as many Joker ideas as possible into Mistigris

random sleet
#

pog how many are you at

wintry solar
#

You’d save so much vertical space without them 🤣

plush cove
rose dragon
normal crest
#

Lol

#

A tiny bit taller

#

like 10%

rose dragon
plush cove
random sleet
#

nice im almost done with my third page of jokers iirc

plush cove
#

i am proud of these ideas though

random sleet
#

eepy

rose dragon
plush cove
rose dragon
plush cove
rose dragon
wise crown
#

Woke joker

#

Woker

#

Awaker

plush cove
desert ore
#

where does the game set the G.GAME.current_round stuff? or at least anybody know a mod that cycles a global thing like castle or rebate? I have like 6 mods downloaded and none of them have a cycling joker lol

opal spade
desert ore
#

oop nvm farmer from extra credit does

crisp coral
foggy carbon
#

How do I look through a player's entire deck? I want to make a joker that, if the player doesn't have a specific card at the start of a blind, adds it back to their deck.

normal crest
#

Full deck is in G.playing_cards

manic rune
random sleet
#

thanks bup

fickle quail
#

Can you lovely patch a mod?

random sleet
#

yes

fickle quail
#

Same format & everything?

random sleet
fickle quail
#

Ahhhhh. Thank you!

faint yacht
#

So far...

broken cliff
#

Peak Work

rancid charm
#

another joker, this one is more visually graphic than illustrated

#

seal team five

neat plover
#

how would you check for the rank or suit of the right most card?

hushed field
#

iterate through the played hand, and grab the last one, then just check the way you'd normally check for rank and suit

neat plover
hushed field
#

You don't even need to iterate, I realize, that's just habit on my part, I guess

neat plover
hushed field
neat plover
#

no way

#

thats so cool

zealous glen
hushed field
#

Hmm, the easiest way to have things in the collection screen that aren't tied to a game object specifically would probably to just create Dummy objects, right?

rancid charm
#

also heres another finished joker art

hushed field
hushed field
# neat plover here is the code

Please do include line numbers when you post code, it's a lot easier if I don't have to count. But you just used the wrong brackets. () Is for passing variables to functions. [] Is for indexing

#

My bad for giving you the wrong brackets in my suggestion, btw

neat plover
#

like that?

hushed field
#

Ya

neat plover
#

perfect

#

small problem

#

it doesnt work

#

it just does nothing

wintry solar
#

You’re combining contexts

neat plover
#

wtf is that?

hushed field
# neat plover wtf is that?

Go over your code and try to reason when each statement is entered. When do you enter context.before, and when do you enter context.main?

neat plover
#

what?

hushed field
neat plover
#

yyes i want to give the money before the cards are scored

hushed field
neat plover
#

when the jokers are being used?

hushed field
neat plover
#

ii don't understand what your questions mean

hushed field
#

I'm just trying to figure out what you mean when you say 'when the jokers are being used'

neat plover
#

after the hand is scored

hushed field
#

No, no, not when, what does it mean when you say a joker is being used? Do you mean if it gives out it's effect?

neat plover
#

yes

prisma loom
#

So I want to make a Joker that draws 2 Enhanced cards from your deck at the start of round. So far it does nothing, what could be the issue?

hushed field
#

Ah, okay!

prisma loom
#

context?

opal spade
prisma loom
opal spade
#

That's what your code has

zealous glen
prisma loom
opal spade
#

I can't read but I don't think setting_blind has other_card either

zealous glen
#

Anyways your contexts don’t make sense to me

#

I intend to rework how I was doing it, but you need to iterate over the deck to find which cards you want to draw

opal spade
hushed field
# neat plover yes

Jokers aren't 'used' in that way. The game has a bunch of times it calls each joker the player has with by using 'calculate_joker()'. You can see this happen by making a joker who's calculate function has no 'if context' statements, but just a function like this:
calculate = function(self, card, context)
return {mult = 1}
end

If you put that in your game, that joker will add 1 mult when you draw a hand, when you discard, when you use an item, when you reroll. So to stop that, Balatro uses context. They carry information, and part of that information is timing.

For example:
context.before will only be true before scoring.
context.individual will only be true when playing cards are scored
context.joker_main will only be true when each joker card is scored.
context.after will only be true after scoring.

Jokers have a variety of abilities, and only some are the ones you wanna put in joker_main. If a joker says '+4 mult', that goes in context.joker_main, because that happens when the joker triggers. If a joker says something like 'gains +2 mult if your hand contains a pair', you check if it's a pair in context.before, before the scoring. context.before and context.joker_main are never true at the same time, so your code, which checks first for before, and then for main, will never trigger because of that.

#

So, in the code you're writing, try and figure out why you're using context.before if you want to return something on context.joker_main. Is there something that needs to happen before scoring?

opal spade
prisma loom
zealous glen
#

At least SMODS ones

zealous glen
hushed field
opal spade
prisma loom
neat plover
prisma loom
zealous glen
hushed field
zealous glen
#

There’s an extra option for effects of cards in the deck, but Idk about effects of cards on cards in the deck

#

Either way you don’t need that

neat plover
zealous glen
#

And I’d probably recommend against it for probabilistic reasons

prisma loom
hushed field
prisma loom
hushed field
stiff locust
#

anyone know why this take ownership wouldn't be working

SMODS.Joker:take_ownership("splash", {
    tsun_mine = true
})
zealous glen
#

Actually I found this but let me check something

prisma loom
#

like G.play or G.hand

#

I think yeah

wintry solar
#

If you want to draw extra cards you should probably just use the hand_drawn context and then draw extra cards

zealous glen
zealous glen
wintry solar
#

Well if you draw them before that you won’t get extra cards

zealous glen
wintry solar
#

As the games draw function just fills your hand

prisma loom
#

makes sense

zealous glen
hushed field
# neat plover thanks very very muc

With SMODS not being big enough to have thousands of guides on google, it can be tricky to figure out, especially if you're still learning. If you're getting stuck and not sure what contexts actually contain or do, you can just play around with print statements, and the debug functions (https://github.com/Steamodded/smods/wiki/Utility) to see what's going on. Not as flashy as making functioning jokers, but I found it really helped me understand the code a lot better

GitHub

A Balatro ModLoader. Contribute to Steamodded/smods development by creating an account on GitHub.

zealous glen
#

There are also example mods

#

Or just other mods

wintry solar
#

Look at big mods that are well made and easy to understand

zealous glen
#

I think the tricky part is new modders don’t know what mods do what

#

At least we know what mods to suggest for some effects

stiff locust
#

cryptid does everything

hushed field
#

And they're often not commented, or per se written to be understood by new people. Especially once they use lovely injects, or a lot of functions that call other functions

zealous glen
#

It doesn’t do balance

stiff locust
#

yeah

zealous glen
#

Also Cryptid is usually very confusing

wintry solar
#

I am against blanket copying effects and more for looking at mods to understand how they work

prisma loom
hushed field
#

Yeah, copying code over is often a good way to lose the ability to just understand your own code

zealous glen
#

I’ll also probably update to use patches

#

To unify different draw methods

prisma loom
#

sry

zealous glen
prisma loom
#

typed too fast

hushed field
#

Hmm, I should check if I'm actually using the proper ways to draw cards, or if I'm going to break intended synergies with the way my code's working 🤔

zealous glen
#

I wanted to get an alpha release soon

wintry solar
# zealous glen What do you mean

Mods should be used as a reference to help understand how to use the stuff smods supplies, I see way too many people posting code that they don’t understand that they’ve just copied blindly from a different mod that isn’t necessary for what they’re doing

zealous glen
#

I have more than enough Jokers for it

zealous glen
rancid charm
#

I want to make a joker that ensures the last hand played the previous round is drawn first in the current round, is that possible without extensive modding of how the game handles deck order?

zealous glen
#

It’s mostly new programmers who don’t want to learn programming

rancid charm
#

or does the game even order the deck randomly each round instead of just pulling random cards from a pool

zealous glen
#

The rest should be easy

stiff locust
#

remembering the cards sounds easy though

#

cant you just add a property to them like how c dagger adds sliced to cards and then remove it when they get drawn

#

search the deck for the property on blind select

hushed field
#

On a slightly related note, btw, I haven't looked into it much, but I have some joker concepts that do deck order manipulation. Is there already a safe way to do that in SMODS, or is that going to involve me writing some injects or hooks to do?

zealous glen
hushed field
#

I should probably look into whether the game shuffles at any arbitrary moments, too

zealous glen
wintry solar
#

But there might be mods that shuffle the deck at certain points

zealous glen
#

I hooked the shuffle function to guarantee you draw enhancements for a Joker effect

stiff locust
#

sdm0's stuff dev branch has a card that lets you see the top 3 cards on the deck that might help with something idk

zealous glen
hushed field
#

Haha, I do have that joker too!

zealous glen
#

Idk why “top 3” specifically is so popular

stiff locust
#

yugioh

zealous glen
#

How so

hushed field
#

I went for 3 because that way I can make the Back to the future part 2 joker show you 4, and the part 3 joker show you five

stiff locust
#

dark magical circle

zealous glen
#

It’s not like YGO has scry effects

#

Not many I mean

zealous glen
hushed field
#

Such limited regular card draw and so many shuffle effects in ygo that scrying's not too useful. You just look at your entire deck every time you're searching for a monster anyway 😛

zealous glen
#

One reason I’m not sure about that one is because someone else did it better

zealous glen
#

Are you playing against SPYRALS

hushed field
stiff locust
#

it's nice for mill decks

crisp coral
zealous glen
prisma loom
#

what is this?

#

is that a number?

hushed field
zealous glen
zealous glen
hushed field
#

I have a potential voucher that I'm considering that would turn my new consumable item into a cache, so that no matter how many you have, they'd only take up one consumable slot, which the logic wouldn't be too difficult for, but if I want it to look nice, I'd commit to more ui stuff than I'm actually interested in

wintry solar
#

That is the timing i suggested btw victin

zealous glen
#

And it’s a flavor effect so Idk what to do

hushed field
#

Haha, I think it's my days writing ruby code for pokemon rpg maker fangames that have traumatized me about the concept of making custom ui that's bug free, so I'm always a bit too wary

zealous glen
#

I had planned more

#

But I’m not sure since I cut down a few

zealous glen
hushed field
#

I'll look into it at some point. I've been considering some custom UI for my boss blinds, but I've set everything up so that I can make mostly everything in this mod function without having to touch ui stuff, so that ui stuff is only for polishing everything

zealous glen
#

It doesn’t need to be more complicated than that

hushed field
# zealous glen What kind of custom Boss UI

mostly some reskinning the blind info with some more thematic art. Nothing too big, but it's mostly that ui stuff is such a bummer to work on for me that I'd prefer to just do it in the end, as it doesn't need to be there for things to function and the player to get the right info. Only stuff I do need to implement is an indicator for boss blind's that target specific jokers or cards and warn the player, but that's just sticking a sprite to an object

zealous glen
hushed field
#

Yeah, probably! It's mostly that I also want certain animated things and indicators and such. It's probably not hard, I just hate doing it, haha. The Voldemort boss blind I want to have an indicator for each random spell he's going to cast next hand, for example, and display that, and that's still something to figure out too. It's mostly the designing things and making sure it's floating on the right coordinates and such, when you don't get immediate visual feedback 😛

zealous glen
#

L Corp does some stuff with Blinds

prisma loom
#

@zealous glen Is there a get_enhancement function? So I could look for cards that have them

zealous glen
#

I had also made Blind tooltips

merry raven
#

I usually use if card.ability.set == "Enhanced" then

zealous glen
#

As they said

merry raven
#

You can even do the inverse by substituting == with ~=

hushed field
#

SMODS has a specific get enhancement function that checks for quantum enhancements, right?

zealous glen
merry raven
#

Ah

wintry solar
#

It does but I’m not sure it’s appropriate in this situation

zealous glen
#

@hushed field some minor Blind UI stuff

random sleet
#

oh hell yeah

#

victin when does your mod come out

#

i forgot

zealous glen
#

I have more than 15 working but no art

random sleet
#

oh bet

zealous glen
#

Well not for a lot of them

#

I have placeholders but people need to hover to see

random sleet
#

i was just being a weird one

prisma loom
#

@zealous glen which part of the code is responsible for the number of cards drawn?

hushed field
zealous glen
#

I’m thinking if I release as is or if I do more distinguishable placeholders

random sleet
#

i mean my mod has like 50% placeholders

zealous glen
random sleet
#

(does it count when one is named "Placeholder Joker"?)

random sleet
prisma loom
zealous glen
random sleet
hushed field
#

I've just opted for an art style that's honestly just as quick as making a placeholder

zealous glen
prisma loom
#

Im used to changing values via config

crisp coral
#

she fusion on my trans til i

prisma loom
#

So idk what to do here

zealous glen
zealous glen
stiff locust
#

fusion???

random sleet
wintry solar
#

Autumn you should totally not steal the ortalab artist credit boxes

zealous glen
#

Yeah

random sleet
#

thanks i havent

zealous glen
#

Steal mine

#

I like them more

random sleet
zealous glen
#

them = mine ;P

wintry solar
#

Oh that message read badly I meant that you should actually steal them

zealous glen
random sleet
#

thanks i wont

hushed field
zealous glen
prisma loom
random sleet
prisma loom
#

if im not mistaken

zealous glen
young dew
#

is it intentionnal that the seed 7LB2WVPK on erratic deck no longer works?

zealous glen
young dew
#

(no more cards in deck)

zealous glen
#

Although I think I lost the Dog and Hamster arts

random sleet
#

dog

hushed field
#

So, if people are up to help me brainstorm, for Fantasy card enhancements (and some jokers), I've gotten a list of 'spells' that cast when they're triggered based on the suits of your first 2 cards in hand, and the rank of the third one, but I'm struggling to come up with anything that works for Clubs and Spades. (Though I think I should potentially figure out a stronger theme for Spades than 'the random effect suit')

zealous glen
zealous glen
crisp coral
hushed field
zealous glen
#

Also first three

#

Not first two

random sleet
#

first the suits

#

and then the suits

zealous glen
#

Arrowhead gives Chips, Bloodstone xMult, Clubstone Mult

hushed field
#

I was considering having spades mess with meta resources like discards, hands and consumables, generally, but those are a bit too powerful to give freely

zealous glen
#

I was almost settled on Seal themes

hushed field
#

seal theme six

random sleet
#

i have 22 "finished" jokers, 16 implemented with no art, 5 with art but no effect, 2 with art but not even ingame

hushed field
#

hmm maybe spades/clubs should upgrade the other scoring cards with a chip bonus 🤔

zealous glen
zealous glen
wintry solar
#

It doesn’t say anything

zealous glen
prisma loom
wintry solar
#

I see

zealous glen
hushed field
# random sleet why not an xmult bonus

because i want the club suit to relate to chips. I might make the heart/spade one give an xmult bonus, in that case, but that's a bit harder to properly balance I think

random sleet
#

-# the vanilla game does not have xmult bonus

zealous glen
hushed field
random sleet
#

no i mean like its not there at all

#

you have to do the heavy lifting

hushed field
#

already done

zealous glen
#

Unless I do the heavy lifting and add to SMODS

random sleet
#

i mean

zealous glen
#

(Seriously I was working with someone else but I haven’t put in my side of the work to finish the PR)

random sleet
#

AMM is right there

#

please steal my code

zealous glen
#

My side of the PR is for Jokers

prisma loom
zealous glen
#

The playing cards are done

random sleet
#

/pos

zealous glen
#

Those are all syntax questions

#

Well

#

The latter are semantical questions

wintry solar
#

Victin holding up smods beta release 🙃

hushed field
zealous glen
#

But they are due to some particular syntax

random sleet
#

lmao

#

i mean it'd ideally be nice if people actually used AMM as a dependency

#

because then cross compat is better

#

but IDEALLY it's just in SMODS anywya

#

but i cant do that so :)

zealous glen
#

Also some card UI @hushed field

random sleet
#

offering tombstone combob

zealous glen
#

I just didn’t explain myself ;P

random sleet
#

yeh i just hadnt seen the joker itself yet :)

crisp coral
#

i can't really add dependencies because people may be stupid and dont know how to install the right shit

hushed field
#

I might switch it over to that set up, honestly. I used AMM to look into how lovely injections functioned, so I thinkt he one in my current main branch is your credited code, but I think the one on my dev branch is a wacky refactor of it to make it worse so I could learn and figure things out.

zealous glen
#

Also those cards are permanent

zealous glen
#

Not blind genius, Blind genius

merry raven
#

Myst my goat

crisp coral
#

who knows whether im actually blind

zealous glen
#

Myst was verdant_leaf all along

#

I’d Crimson Mist but I don’t have an emoji of it
-# it was Crimson right

crisp coral
#

yes

hushed field
#

Haha, I'll check out Myst's stuff at some point then. Boss blinds are for when I've finally added all 8 enhancements and have 150 functional jokers, though, haha. Can't get distracted

crisp coral
#

but that ain't a self insert

random sleet
#

myst you should do a self insert blind so i can have my self insert joker beat you up

#

8 enhancements eh? i'm halfway there myself :3 enhancements are funny

zealous glen
#

Did you see the fanart of Water pregante

crisp coral
#

if i make a self insert blind none of you are going to survive

zealous glen
#

Self-insert Victin particle effect when

hushed field
#

I've somehow decided that I wanted an enhancement type for each big movie genre, so there's something for jokers of that genre to interact with

merry raven
#

8 enhancements? Pathetic

zealous glen
#

Where’s the Disenhancements

crisp coral
#

SMODS Objects? Pathetic

fast badge
#

yall reek

merry raven
#

Right here

zealous glen
hushed field
#

Though the nightmare code that is the Fantasy enhancement rn might as well've been 30 enhancements in itself, and I'll probably split it up into a sort of module that the fantasy card uses so I can keep reading my code without losing sanity

fast badge
merry raven
#

But honest to god tho I'm really happy on how they turned out

zealous glen
#

Oh I don’t think I shared the Confused cards here

manic rune
#

if you are reading this, you are now blinking manually

fast badge
#

didnt work

manic rune
#

damn.

zealous glen
#

If you’re reading this, you lost the game and I won it

merry raven
#

If you are reading this, you have the habit of blinking hard

random sleet
#

if you are reading this [[LET ME OUT LET ME OUT LET ME OUT LET ME OUT LET ME OUT]]

hushed field
fast badge
#

If you're reading this, the snail is outside your door.

zealous glen
#

Confused Disenhancement

merry raven
#

Some I get carried away with

crisp coral
manic rune
#

wallahi im cooked 😭

zealous glen
merry raven
#

Damn you read my mind Victin

zealous glen
#

Also here’s a way to get all these Enhancements

edgy mountain
#

this hook works but the cards played are all flipped down

#

i dont really know what to use flip_card on

#

G.hand_highlighted doesnt work as expected

crisp coral
#

fun fact igo stands for init_game_object

zealous glen
#

isn’t that Frankenstein’s monster’s Frankenstein’s assistant

fast badge
#

Yep

random sleet
#

it is so interesting to me to see people not realize you can just change variable names to whatever you want

fast badge
crisp coral
#

cool, did not need to ping me

fast badge
#

its not that deep

merry raven
#

This Joker is going to be the end ofm e

stiff locust
#

i really need this to work

frosty dock
stiff locust
stiff locust
#

it used to do that, but after I split my mod into multiple lua files today, it stopped working and splash no longer is owned by my mod

#

this code is in the main file (the others load properly anyway)

#

i do actually need this for functionality now and not just for show

frosty dock
#

and you didn't accidentally disable the badges?

stiff locust
#

nope

#

wait you can do that?

#

yeah no it's not in the tsunami collection page at all

#

even if it didnt have a badge it'd still be there right

fast badge
#

aure's now called john? interesting

frosty dock
#

it's more that I'm the john of smods

#

I'm still aure

stiff locust
#

john "aure" smods

frosty dock
fast badge
#

john aure smods the second

stiff locust
#

it's in the main file

#

not inside any if statements or other code

#

it's at the top and the code below it runs

#

and it doesn't crash it just gets ignored

frosty dock
#

huh

#

any logs?

stiff locust
#

logs of what

stiff locust
#

i haven't had any crashes

frosty dock
#

no just logs

#

in your game logs

stiff locust
#

oh

#

i thought it only logged when it crashed?

frosty dock
#

Mods/lovely/log

stiff locust
#

oh there is a newest log

#

huh okay

fast badge
#

lovely mods log

stiff locust
#

i'm not really sure how this will help..? but do your magic

#

all I did here was boot up the game and go to my collection

#

and then close it

random sleet
#

chat rate my placeholder oddity art

runic pecan
#

How do I make this compatible with modded suits?

red osprey
#

Use SMODS.change_base instead

merry raven
#

Ooh boy that reminds me, my mod is painfully vanilla

runic pecan
red osprey
#

Yep

#

assert means it will check that the change did something

runic pecan
red osprey
#

What's your goal?

runic pecan
red osprey
#

Then that should work

#

It doesn't handle custom ranks but I'm not sure how to deal with that

runic pecan
hushed field
#

Testing some code that had a 1/4 chance, and I thought I'd written it to be broken, but no, my luck was just very good and I had 16 triggers in a row

crisp coral
#

lmao??

shadow rapids
#

Hi guys! I'm quite new to Balatro, and infantile to balatro modding (though I have modded other games [eg Minecraft] in the past). Where would you recommend I start?

hushed field
#

I was so convinced that I'd done something wrong. But no, four separate hands without reloading, all triggering every card

red flower
hushed field
shadow rapids
#

yipper!!!

manic rune
#

shouldve went and win the jackpot ngl 😭

hushed field
#

damn

minor magnet
#

anyone has any clue why this happens?

#

this happens when i try to open cryptid refactor

shadow rapids
stiff locust
#

oh wait i got the link wrong

#

did that

#

there we go

shadow rapids
#

the page doesnt work

#

nvm dark mode extension doesntr work

#

so is it possible to spawn a joker in the command line

#

sorry again im very new to modding

bold gyro
bold gyro
#

Hey y'all, I'm trying to implement a joker that basically takes the ceiling of the current chips and mult during scoring. I'm working with Talisman, and I'm really confused on how to_big is supposed to be implemented. I get an error saying a table is being used inside the math.ceil() bit. How do I fix this?

calculate = function(self, card, context)
    if context.joker_main then
      mult_mod = to_big(math.ceil(to_big(mult) / to_big(10)) * to_big(10))
      chips_mod = to_big(math.ceil(to_big(hand_chips) / to_big(100)) * to_big(100)) 
      return {
        chips_mod = card.ability.extra.chips,
        mult_mod = card.ability.extra.mult,
        message = "Gullible!"
      }
   end
end```
minor furnace
#

so, if Card:get_id() returns self.base.id

    if self.ability.effect == 'Stone Card' and not self.vampired then
        return -math.random(100, 1000000)
    end
    return self.base.id
end```

Then why am I getting two different values for these two prints???
```print(hand[j]:get_id())
print(hand[j].base.id)```

Possibly related to the fact that I'm doing this earlier
```for i=2, 14, 1 do
        hand[current_card].base.id = i```
#

get_id() is returning this negative number while card.base.id is giving the value I want, even though that's the value the function is supposed to be returning

wintry solar
#

is it a stone card?

#

or rather, a has_no_rank card

minor furnace
#

ah

#

yeah it is. Not a stone card but it is my own custom enhancement with no rank

grim remnant
minor furnace
#

Not checking the dump file strikes again 💀

#

one of these days I will learn

manic rune
#

....can i carry this to info_queue somehow

wintry solar
#

card.ability.extra.payout is always 0

manic rune
#

starting to realize that if i were to add more complex effects for my jokers, this is gonna flood the entire screen 😭

minor furnace
#

I was using replace_base_card and no_rank, but I think I just need the base card one

red flower
manic rune
#

i also initially thought of that actually, but can you change this part of a joker through code?

#

(holy shit that circle is diabolical, its basically the text part of loc_txt)

#

if its possible, i want to add a button for the jokers to cycle the description between the effects, eidolons, and set effects

#

that should make it look much better

minor furnace
sonic cedar
#

unrelated but is there a way to pin stuff in #1209506514763522108 ? so i can have my most important information readily accessible

manic rune
#

you can do that with vencord

#

it has client-side pinning, i think

minor furnace
#

hold on, this is accurately registering as a pair! The function might actually be working properly
No such luck

red flower
manic rune
#

...honestly, its gonna help on the long run so im willing to go through the torture 😭

#

lets see, im supposed to find the part where the game generates the joker's description and somehow work with that, right?

red flower
#

smods.joker has a generate_ui function you can use

manic rune
#

oh i see, thats convenient

minor furnace
red flower
weak brook
#

it is

#

it's on the SMODS.Center page in the smods wiki since SMODS.Joker is derives from that

red flower
#

there's an SMODS.Center page?

weak brook
#

oh wait

#

no im mistaken

#

on both counts

manic rune
#

if thats the case, then jokers should be using this right? (its inside SMODS.Center)

weak brook
#

some jokers use it but its not used often cause its ui stuff, which is more advanced to a lot of modders

manic rune
#

i can see why

red flower
#

yes, you're basically hooking into it so it replaces it
you need to call the original in your code

manic rune
#

hmm, i will try, thanks for telling me where to start ❤️

shadow rapids
#

i have a joker idea that wants to modify a large game function

#

fml

#

(also soul/bh spawn rate is 0.3% iff you don't have Showman for some reason)

#

common events 2273~2284

minor furnace
#

Ok so I know for a fact my wrapper function returns exactly what I want it to, ran it using eval in debug. But why isn't it executing in any place I patched my wrapper into? This is in state_events.lua btw

    local poker_hands = evaluate_poker_hand_wrapper(_cards)
    print("testing")```
shadow rapids
minor furnace
#

unless, I've missed some critical place that evaluate_poker_hand() gets called

wintry solar
#

where are you trying to patch it?

minor furnace
red flower
#

smods\src\overrides.lua

minor furnace
#

I didn't, that's almost certainly it then

#

am I able to patch that file??

red flower
#

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

#

i think

minor furnace
#

Thanks! I’ve gotta go but I’ll check it out when I get the chance

#

Chances are that’s the last piece I’m missing

#

These are the kinds of things that if I didn’t ask, I literally would not know even existed

stiff locust
#

how would I remove specific ranks of cards from the starting deck like abandoned deck does with faces

#

abandoned deck uses starting parameters to toggle a pre-existing removal of face cards which I can't find the code for

tepid crow
#

You'll have to go a route similar to checked

stiff locust
#

alright then how do I remove a playing card directly from the deck

#

is card:remove() enough

sturdy compass
#

Is there anyone in chat rn who has good Talisman knowledge?

zealous glen
#

@mellow sable

sturdy compass
#

lmao

mellow sable
#

👋

stiff locust
#

that was quick

sturdy compass
#

Yeah seriously

zealous glen
#

Like seeing a Cryptid in the wild

stiff locust
#

math was already here

mellow sable
#

I was alr online lol

mellow sable
stiff locust
#

while you're here is card:remove() enough to remove a playing card directly from the deck

#

do i need to do anything special like context.destroying_card

zealous glen
#

Hey while you’re here should I invest in Apple stock

normal crest
#

no

zealous glen
#

I heard Fuji was gonna be the fruit of the season

stiff locust
#

invest in to the moon stocks

zealous glen
mellow sable
#

I remember card removal being annoying

#

Could be wrong tho

stiff locust
sturdy compass
normal crest
#

go invisible

mellow sable
#

Like I think you also have to remove it from card area

stiff locust
#

oh that's annoying

stiff locust
stiff locust
#

G.GAME.chips is a table with talisman

normal crest
#

you might just need to mark the card as destroyed too

zealous glen
stiff locust
mellow sable
#

^^^

stiff locust
#

if talisman isn't loaded, to_big won't do anything so it won't crash with or without talisman

stiff locust
#

holy shit

#

wait is there a way I can check that without steam end of year analytics

shadow rapids
#

how do i make a joker that increases itself based on played cards work?

sturdy compass
#

Post-talisman patches might I add

stiff locust
#

you could put it in the lovely patch if you really want

mellow sable
#

to_big(G.GAME.chips) + to_big(whatever) maybe

stiff locust
#

but it should work just

#

in the top of your mod's lua file

#

because the code won't be run until score calculation, which is after your mod is loaded so

#

yeah that oughta do it

sturdy compass
#

So stick the block you gave somewhere in my main??

stiff locust
#

yeah

#

just pop it right in

wintry swallow
#

hello, anyone knows how to have stickers only apply to jokers? i have the "sets = { Joker = true }" thing but it looks like it doesn't matter cuz the sticker appears on consumables as well

sturdy compass
#

Hmm, still no. Same error

stiff locust
sturdy compass
#

I did not whoops

stiff locust
#

like to_big(G.GAME.chips)

#

yeah do that

sturdy compass
#

I'm just confused as to why Talisman doesn't make that patch in the first place

stiff locust
#

because to_big is the function it uses to convert numbers to tables for bignum/omeganum storage

#

it is not something talisman can fix in itself, they would have to find and patch in to_big() around EVERY instance of G.GAME.chips and G.GAME.dollars

#

something like that, anyway

#

if talisman added the dummy to_big function it would change nothing

sturdy compass
#

I knew that much. I just meant that the G.GAME.chips in that vanilla code block is untouched by the mod. That's where my confusion is coming in

stiff locust
#

all that code block does is make sure to_big exists, and if to_big doesn't exist, it does nothing
so that the code doesn't change without talisman

#

oh

#

no it should be working on the vanilla stuff

sturdy compass
stiff locust
#

well that's all i got ¯_(ツ)_/¯

sturdy compass
#

damn lol

stiff locust
#

i only know surface level talisman stuff

#

so back to @mellow sable

sturdy compass
#

If absolutely needed I can easily send over the files that are doing this. Won't do that unsolicited tho lol

mellow sable
#

What line of code do these errors refer to? StackTrace :: Oops! The game crashed
main.lua:1781: main.lua:1567: bad argument #1 to 'floor' (number expected, got boolean)

sturdy compass
#

That's a great question that I genuinely don't have an answer to

#

I would've checked my main.lua but it doesn't even have that many LOC

stiff locust
#

check in mods/lovely/dump

#

if you're doing lovely patches to vanilla code it's usually something there

#

dump contains the vanilla code post-patches from your last crash

sturdy compass
#

Ah right I did find that. It's coming from a G.FUNCS.evaluate_play() call

shadow rapids
#

im having a bit of trouble debugging my mod, can I have some help? It keeps crashing when the cards get scored. Does execute() need to always return a value?

Mod code:

SMODS.Joker{
    key = 'scribbled',
    loc_txt = {
        name = 'Scribbled Joker',
        text = {
            'Gains {C:chips}+#1# Chips{} for',
            'every scored {C:chips}Bonus Card{}',
            'and {C:mult}+#2# Mult{} for',
            'every scored {C:mult}Mult Card{}',
            '{C:inactive}(Currently {C:chips}+#3#{C:inactive}, {C:mult}+#4#{C:inactive})'
        }
    },
    rarity = 2,
    config = {
        extra = {
            chips = 0,
            mult = 0,
            dchips = 10,
            dmult = 1,
        }
    },
    loc_vars = function(self, info_queue, card)
        local stg = card.ability.extra
        return { vars = { stg.dchips, stg.dmult, stg.chips, stg.mult } }
    end,
    calculate = function(self, card, context)
        local stg = card.ability.extra
        if context.joker_main then
            return {
                chips = stg.chips,
                mult = stg.mult,
                card = context.other_card
            }
        end
        if context.cardarea == G.play then
            if SMODS.has_enhancement(context.other_card, 'm_bonus') then
                stg.chips = stg.chips + stg.dchips
                return {
                    message = 'Bonus!',
                    colour = G.C.CHIPS,
                    card = card
                }
            end
            if SMODS.has_enhancement(context.other_card, 'm_mult') then
                stg.mult = stg.mult + stg.dmult
                return {
                    message = 'Mult!',
                    colour = G.C.MULT,
                    card = card
                }
            end
        end
    end
}
#

sorry for text wall it wont let me send .luas

sturdy compass
shadow rapids
#

oh

#

ok yeah that makes sense. thanlks

stiff locust
#
local stg = card.ability.extra
        return { vars = { stg.dchips, stg.dmult, stg.chips, stg.mult } }

THIS HAS BEEN A THING THIS WHOLE TIME???

shadow rapids
#

yeah. just defining your own locals in a function

stiff locust
#

you mean i DON'T HAVE TO TYPE OUT CARD.ABILITY.EXTRA EVERY SINGLE TIME

shadow rapids
#

heebie geebies

sturdy compass
#

I feel like a moron for not thinking of that

#

holy shit

shadow rapids
#

what

stiff locust
#

i've

#

literally never seen that

shadow rapids
#

this is going on tumblr. i am putting this on tumblr

sturdy compass
stiff locust
#

do not put me on fucking tumblr

dreamy thunder
sturdy compass
#

You've summoned the horde

#

with superior coding practices

dreamy thunder
#

no more "extra" typos

shadow rapids
#

THREE PEOPL

#

THREE., PEOPLE.

stiff locust
dreamy thunder
#

i keep typing exrta or ablitly 😭

foggy carbon
#

how do I get a card's base suit, not accounting for smeared/wild/etc.

shadow rapids
#

should just be able to access the suit anyway

sturdy compass
#

It's always 'ablity' or 'abiltiy' for me

stiff locust
#

one of my jokers

#

has 35 instances

shadow rapids
stiff locust
#

of card.ability.extra.something

#

and i just typed or copy pasted it every time there's so much

#

why did nobody come up with this

dreamy thunder
#

my most has 15~

#

i think

shadow rapids
#

i cant even say anything

stiff locust
#

youve said enough

dreamy thunder
#

true

stiff locust
#

we will carve this as the 11th commandment

hushed field
#

tbf, most ide's just let you autofill the card.ability.extra after you've typed it once

sturdy compass
#

real

shadow rapids
#

also it still crashes, same listed reason

stiff locust
#

oh oh right your crash

#

hold on let me return the favor

sturdy compass
#

LMAOOOO

stiff locust
#

what is it supposed to do

shadow rapids
stiff locust
#

so
when a bonus card scores, increase chips
when a mult card scores, increase mult

shadow rapids
#

yes

stiff locust
#

or is it the other way around

#

okay

shadow rapids