#💻・modding-dev

1 messages · Page 125 of 1

lyric blade
#

alright

#

Ok well I tried some ways to do it, and I feel myself very dumb, but none of em work

#

oh wait

nocturne garnet
#

it'll just override the first one probably

lyric blade
#

Hm

#

well I want two messages too ofc

maiden phoenix
#

Could use card_eval_status

lyric blade
#

Yeah, that's an idea, thanks

maiden phoenix
#

Oh wait you want 2 returned value

#

Uuh i cant fetch it rn but check SDM_0's Stuff Burger Joker, made something that returns multiple values

lyric blade
#

Ok thanks

nocturne garnet
#

wait, it might not work

glass scaffold
#

Does anyone know the exact event that occurs when a run is won?

#

I'm gonna take the approach of using the event manager

lyric blade
#

I see also the misunderstanding now xD

runic pecan
#

wait

#

event handle

#

This could help with my problem

#

limiting the joker only to activate at "enter shop" and "reroll"

reef gale
#

Hey how do you just edit joker textures, not wanting to change much else

glass scaffold
reef gale
glass scaffold
#

Just make sure:

1x: 71 x 95
2x: 142 x 190
File format: .png

reef gale
#

Like i can't add it to the archive

dry merlin
#

you can use 7zip method or mod method

#

i couldnt get 7zip to let me do it so i just made mods

#

the mods are pretty easy

reef gale
#

Is there a guide for mods then?

dry merlin
#

the example texture mod worked well for me

#

i can walk you through it if you want

glass scaffold
dry merlin
# dry merlin i can walk you through it if you want
--- STEAMODDED HEADER
--- MOD_NAME: <your mod name here>
--- MOD_ID: <your mod id here>
--- MOD_AUTHOR: <Your Name (2016), great movie check it out, here>
--- MOD_DESCRIPTION: <your mod description here>
--- BADGE_COLOR: <your badge color hex code here>


SMODS.Atlas {
    key = "<your key here>",
    path = "<your joker texture file name here>.png",
    px = 71,
    py = 95
}


SMODS.Joker:take_ownership('<joker name from game code>', {
    atlas = "<your key here>",
    pos = { x = 0, y = 0 },
    soul_pos = { x = 1, y = 0 },
--soul pos is  if you want it to look like a legendary joker
})
#

you also need to have the folders set up right which isnt hard, and also 1x size and 2x size versions

lyric blade
#

It works! Thanks again <3

runic pecan
violet void
#

when are context.cards_destroyed and remove_playing_cards called?

Canio does not seem to trigger when the face card is destroyed

dreamy thunder
#

why does the files become empty after uploading to github

frosty dock
violet void
#

wdym fake

frosty dock
#

canio and glass joker pretend like it exists

#

but it doesn't

nocturne garnet
frosty dock
#

it's never called

teal estuary
#

thunk moment

nocturne garnet
#

we love Caino ❤️

teal estuary
#

that’d explain why it never worked for me 😭

nocturne garnet
#

caino is actually a misspelled casino...

#

thats why he sucks

teal estuary
#

true

violet void
frosty dock
#

truly a consumeable moment

frosty dock
violet void
#

but when I do ctrl + R with debugplus Canio scales

dry merlin
dry merlin
#

probably best to keep it to a single word

tall wharf
dry merlin
#

sup

noble frigate
#

hey chat

dry merlin
#

sup

noble frigate
#

nun much wbu

dry merlin
#

modding my shit rn

noble frigate
#

same

#

can you do me a flavor

dry merlin
#

sup

noble frigate
#
calculate = function(self, context)
    if context.after then
      if #context.full_hand == 4 then -- shamelessly stolen from square joker
        -- and all this is shamelessly stolen from flower pot
        local suits = {
          ["Hearts"] = 0,
          ["Diamonds"] = 0,
          ["Spades"] = 0,
          ["Clubs"] = 0,
        }
        for i = 1, #context.scoring_hand do
          if context.scoring_hand[i].ability.name ~= "Wild Card" then
            if context.scoring_hand[i]:is_suit("Hearts", true) and suits["Hearts"] == 0 then
              suits["Hearts"] = suits["Hearts"] + 1
            elseif context.scoring_hand[i]:is_suit("Diamonds", true) and suits["Diamonds"] == 0 then
              suits["Diamonds"] = suits["Diamonds"] + 1
            elseif context.scoring_hand[i]:is_suit("Spades", true) and suits["Spades"] == 0 then
              suits["Spades"] = suits["Spades"] + 1
            elseif context.scoring_hand[i]:is_suit("Clubs", true) and suits["Clubs"] == 0 then
              suits["Clubs"] = suits["Clubs"] + 1
            end
          end
        end
        for i = 1, #context.scoring_hand do
          if context.scoring_hand[i].ability.name == "Wild Card" then
            if context.scoring_hand[i]:is_suit("Hearts") and suits["Hearts"] == 0 then
              suits["Hearts"] = suits["Hearts"] + 1
            elseif context.scoring_hand[i]:is_suit("Diamonds") and suits["Diamonds"] == 0 then
              suits["Diamonds"] = suits["Diamonds"] + 1
            elseif context.scoring_hand[i]:is_suit("Spades") and suits["Spades"] == 0 then
              suits["Spades"] = suits["Spades"] + 1
            elseif context.scoring_hand[i]:is_suit("Clubs") and suits["Clubs"] == 0 then
              suits["Clubs"] = suits["Clubs"] + 1
            end
          end
        end
        if suits["Hearts"] > 0 and suits["Diamonds"] > 0 and suits["Spades"] > 0 and suits["Clubs"] > 0 then
          return {
            message = localize({ type = "variable", key = "a_xmult", vars = { card.ability.extra.Xmult } }),
            Xmult_mod = card.ability.extra.Xmult,
          }
        end
      end
    end
  end,
#

i stole code

#

and ion think it's workin

#

but it looks like it should work

dry merlin
#

many such cases

noble frigate
#

either a. im just bad at lua, skill issue, or b. im just bad at modding, skill issue

#

i have created the Weezer (flower pot + square joker)

dry merlin
#

is this comma supposed to be here (ive been modding for like 5 days)

noble frigate
#

it does nothing lol it was added by my lsp

reef gale
#

so im a idiot was using winrar :)

noble frigate
#

i cant put logger messages in there bc like it gives an obj error

noble frigate
dry merlin
royal ridge
noble frigate
#

oh yeah that

#

that would make sense

#

please hold

dry merlin
#

oh worm

noble frigate
#

oh wait

#

in the vars

reef gale
#

yeh it worked bouncy

noble frigate
#

its self.ability

noble frigate
dry merlin
#

is that jimbo

reef gale
noble frigate
#

ok its still fucked

violet void
reef gale
royal ridge
noble frigate
#

...fuck

#

(yes i stole the sprite from mystjokers temporarily as practice)

#

YES IT WORKS

#

thank you so much fellow interneters

royal ridge
#

gg

noble frigate
#

bonus round

#

can you add custom cards without remaking the whole card atlas

#

(playing cards)

tall wharf
#

look at these amazing art

noble frigate
violet void
noble frigate
#

i wanna test that mc mod fr

noble frigate
tall wharf
noble frigate
reef gale
#

anyways @glass scaffold@dry merlin thanks for helping me bouncy

dry merlin
#

o7

wintry solar
#

Which version are you on?

merry raven
tall wharf
#

I love reading the game code

noble frigate
#

how does one silence the debug logger

#

its tisming out

wintry solar
merry raven
#

Is it the one gotten from the highlighted part?

#

Because I got the old-calc version lmao

wintry solar
#

I think so yes

#

I don’t know where that link goes 🤣

violet void
nocturne garnet
wintry solar
#

Are you destroying outside of the normal scoring loop?

tall wharf
#

me?

violet void
tall wharf
#

oh

merry raven
#

So... where did you upload the updated version again?

wintry solar
#

That’s the correct one the

merry raven
#

Or is this the one

wintry solar
wintry solar
#

Use the destroying cards context instead of after

#

It’ll handle all the destruction stuff for you when you return something on a card

violet void
#

but the joker is destroying the cards, not reacting to destroyed cards

wintry solar
#

Yes there’s 2 contexts

violet void
#

sixth sense comes in clutch
I had completely forgotten about it

wintry solar
#

The first one asks jokers whether the card should be destroyed or not

#

The second is reacting to the cards being destroyed

merry raven
#

I updated it to the latest version and it's doing some weird stuff

violet void
merry raven
#
calculate = function(self, card, context)
        if context.cardarea == G.hand and not context.before then
            local charged = card.ability.extra.stored_chips > 0
            local chips_bonus = 0
            local mult_bonus = 0
            
            for _, handCard in ipairs(G.hand.cards) do
                if handCard ~= card then
                    chips_bonus = chips_bonus + math.floor(handCard:get_id() * 1.2)
                    mult_bonus = mult_bonus + 5
                end
            end
            
            if chips_bonus > 0 and not charged then
                card.ability.extra.stored_chips = chips_bonus
                card.ability.extra.stored_mult = mult_bonus
                return{
                    message = "Charged!",
                    sound = "fm_jolt",
                    colour = G.C.BLUE
                }
            end
        end
    
        if context.cardarea == G.play and context.main_scoring then
            if card.ability.extra.stored_chips > 0 or card.ability.extra.stored_mult > 0 then
                card.ability.extra.stored_chips = 0
                card.ability.extra.stored_mult = 0
                return{
                    chips = card.ability.extra.stored_chips,
                    mult = card.ability.extra.stored_mult,
                    message = "Jolted!",
                    sound = "fm_jolt",
                    colour = G.C.BLUE
                }
            end
        end
    end

So this is one of my Enhancements, and I spawned it in with the debug tool, but if I select a different card or itself, the game instantly closes. No crash messages, no error logs, it just straight up exits instantly

#

I'm on the latest version of Steamodded, hopefully

#

@wintry solar Any insights?

wintry solar
#

Can you screenshot code instead, easier to read on mobile

merry raven
wintry solar
#

What should the first part do?

#

I think the context is probably wrong, I can check back in an hour or so

#

Time to work 😢

merry raven
#

When unplayed, it checks for the rest of the unplayed hand for their chip worth and add it to itself, also gains +20% additional chips for each unplayed card's worth, and also gains +5 for each one

frosty dock
#

context.cardarea == G.hand and not context.before seems off

merry raven
#

As for this different Enhancement, it doesn't play the "Amplified!" message when the card is charged when it remains in hand after a play

frosty dock
merry raven
#

When it's in hand, unplayed, and you played a hand without it

dry merlin
#

would anyone know why a chip joker/mult joker on playing card (like arrowhead or sin suits) wouldnt do the little jiggle animation when it activates (the playing card itself still does it btw)

frigid jetty
#

i have a joker that makes a card evaluate itself multiple times. but for some reason, both the joker and the card use the return{message} info.

how could i get it so that only one of them uses the message?

nocturne garnet
#

another problem fixed :3

tall wharf
#

least original idea award

#

i don't think the game was meant to do this guys

teal estuary
#

wh

#

oh, 6 cards

merry raven
#

The Fuller House

tall wharf
#

i know

teal estuary
#

no it took me a second to realise what had even changed 😭

nocturne garnet
tall wharf
runic pecan
# merry raven The Fuller House

Consider that the name "Full House" came from "A couple and their triplets", I find this addition hilarious and concerning at the same time.

nocturne garnet
#

😨

tall wharf
#

trifecta

livid tapir
#

i found the template >:)

runic pecan
sick sparrow
#

how to make the stickers have different descriptions
for example:
On Joker: Prevents from Direct Removal Calls
On Consumable: Has Infinite uses, can't be selled

weary jungle
#

probably using keys

#
if on consumable:
  var = keyA
else
  var = keyB
return {key = var}
end
tepid crow
#

any steamodded devs able to explain what this percent is doing here? it kinda crashes my joker

function SMODS.eval_this(_card, effects)
    if effects then
        local extras = { mult = false, hand_chips = false }
        if effects.mult_mod then
            mult = mod_mult(mult + effects.mult_mod); extras.mult = true
        end
        if effects.chip_mod then
            hand_chips = mod_chips(hand_chips + effects.chip_mod); extras.hand_chips = true
        end
        if effects.Xmult_mod then
            mult = mod_mult(mult * effects.Xmult_mod); extras.mult = true
        end
        update_hand_text({ delay = 0 }, { chips = extras.hand_chips and hand_chips, mult = extras.mult and mult })
        if effects.message then
            card_eval_status_text(_card, 'jokers', nil, nil, nil, effects)
        end
        percent = percent + 0.08   # <<<<<<
    end
end
frosty dock
tepid crow
#

you mean it's supposed to increase the pitch?

#

cuz percent is kinda undefined

frosty dock
#

I mean I didn't add that

#

but I guess it's not a global so that makes sense

#

at the same time why are you even using eval_this

tepid crow
#

I'll take a quick look

tepid crow
tall wharf
#

let's go

frosty dock
#

hm yeah percent is local to G.FUNCS.evaluate_play

tepid crow
#

yeah

frosty dock
quaint kettle
#

anybody know where the 1x version of the Tarot cards are actually used in game? I changed all the 2x versions and not the 1x, and I've not seen the 1x (original) versions in game anywhere

nocturne garnet
tall wharf
#

ok

nocturne garnet
#

nice

tall wharf
#

i figured this out on my own i will now pat myself

nocturne garnet
#

good job lil man

tepid crow
tall wharf
#

tho i don't know why blueprint doesn't work

tepid crow
nocturne garnet
tall wharf
#

ah

#

right

nocturne garnet
#

just like oops all 6 and all that

tall wharf
#

makes sense

frosty dock
quaint kettle
frosty dock
#

i can't catch the percent local out of eval_play and you can't pass it either

#

i mean the whole function looks out of place now, i guess I'll remove the percent stuff and mark as deprecated

tepid crow
#

i mean the whole function looks out of place now
kind of, yes

frosty dock
#

keeping compat with old calls of it is good imo, being out of order is enough of a reason to not use it

weary jungle
frosty dock
weary jungle
frosty dock
#

oh i missed that

#

either way eval_this doesn't even use the percent

#

it just increments it unread

tepid crow
#

oh lol

#

seriously?

tepid crow
weary jungle
#

yes

#

is it a to_big() moment

tepid crow
#

it is indeed a to_big moment

#

(assuming you want talisman compat)

frosty dock
tepid crow
#

hi mom

#

yeah looks good to me

frosty dock
#

k pushed

bold sleet
#

hi mom

nocturne garnet
#

hi mom

tepid crow
# frosty dock k pushed

Thanks aure ❤️
Oh, and the utility docs should probably also specify that the function is deprecated

frosty dock
#

yeah fair

crisp coral
#

oh wait eval_this is deprecated nvm LMAO

tall wharf
#

let's go

nocturne garnet
tall wharf
runic pecan
tall wharf
#

sorry

runic pecan
#

Oh

#

just googled it

crisp coral
#

washing machine rhythm game

runic pecan
#

So that's their actual name

runic pecan
tall wharf
#

thing about these

#

are than you sometimes need more than 1 player to play it

tall wharf
#

lovely

nocturne garnet
crisp coral
runic pecan
nocturne garnet
#

whar

#

what

runic pecan
#

Does Cryptid detect Flush Six or Flush Seven
or just count it as Flush Five despite you played your whole hand of Ace of Spade's, which usually is more than five?

violet void
#

cryptid has a hand for playing the entire deck afaik lol

frigid jetty
dark kite
#

IVE DONE IT.

#

IVE DEFEATED THE FLOWER POT CARD

violet void
#

I genuinely cant read with that blinding white

frosty dock
dreamy thunder
#

Is this balanced? Using the set consumable it has a 1 in 4 chance of appearing in the first place

tepid crow
frigid jetty
violet void
#

it has better durability and better mult, it should have only one prob

frigid jetty
#

the latest one (i think)

tepid crow
#

well I can guarantee it's not the latest latest

#

though I doubt updating will fix it, try updating anyway?

frigid jetty
#

i'll give it a go

#

nope, same problem

tepid crow
#

yeah thought so

dreamy thunder
#

Cause they are not in the shop pool and depends on a tarot card to be created

tepid crow
frigid jetty
#

yup

weary jungle
#

how do i make this talisman compatible?

#

the chehe (dont ask) variable is to prevent a negative chip value

violet void
frigid jetty
#

hang on, i'll send a video

tepid crow
frigid jetty
tepid crow
weary jungle
#

yes

#

wait...

#

is there a toString function?

tepid crow
#

I think you can just use tostring(...)

weary jungle
#

ok im just dumb good to know

tepid crow
#

I appreciate the JS-like attempt to just try to combine it with an empty string though

frigid jetty
# frigid jetty

expected outcome is that the card is the only one that does the "It's You and Me" message
and not the joker

tepid crow
#

also W Iso* Ult

frigid jetty
frigid jetty
tepid crow
#

just copy the code and paste it in this text channel

#

use this format:
```lua
<code>
```

frigid jetty
#
calculate = function( self, card, context )
    if context.scoring_name == 'High Card' then
        if context.cardarea == G.play then
            local cardreps = 0
            for k, v in ipairs(context.scoring_hand) do
                cardID = context.other_card:get_id()
                --gets face value of card
                if cardID == 14 then
                    cardreps = 11
                elseif cardID >= 11 then
                    cardreps = 10
                else
                    cardreps = cardID
                end
                cardreps = cardreps - 1
                --return function
                return{
                    x_mult = card.ability.extra.x_mult,
                    message = 'Again!', --the problem: the message is done by both the card and the joker
                    repetitions = cardreps, --repeat card evaluation equal to face value of card
                    card = card
                }
            end
        end
    end
    if context.scoring_name == 'High Card' and context.cardarea == G.jokers and not context.blueprint then
        if context.after then
            G.E_MANAGER:add_event(Event({
                trigger = 'after',
                delay = 0.0,
                func = (function()
                    for k, v in ipairs(context.scoring_hand) do
                        v:remove_from_deck(false)
                        v:start_dissolve()
                    end
                    return true
            end)}))
        end
    end
end,
tepid crow
#

cheers

violet void
#

ah wait

tepid crow
#

what's up with it checking both High Card and the full context.scoring_hand btw?

#

wait, you don't even use k or v

frigid jetty
#

it was to do with compatibility with the Splash joker

#

so it does the joker's ability to every single card scored

tepid crow
#

Ah, I see. I'm not sure that part works?

violet void
#

the return with the message is made in context.cardarea == G.play

tepid crow
#

Oh actually it might work, and the loop just does nothing

weary jungle
frigid jetty
#

actually, i could try and remove the loop and see if it solves the problem though i doubt it

tepid crow
#

I don't think so

storm kraken
#

currently trying to add booster packs and im failing so hard edegabudgetcuts

bold sleet
frigid jetty
tepid crow
# frigid jetty ```lua calculate = function( self, card, context ) if context.scoring_name =...

try this version?

    calculate = function( self, card, context )
        if context.scoring_name == 'High Card' and context.cardarea == G.play then
            local cardreps
            cardID = context.other_card:get_id()  --gets face value of card
            if cardID == 14 then
                cardreps = 11
            elseif cardID >= 11 then
                cardreps = 10
            else
                cardreps = cardID
            end
            cardreps = cardreps - 1
            --return function
            if context.repetition and not context.repetition_only then  -- # check for the right context
                return {
                    message = localize('k_again_ex'),  -- # use localization instead of the literal text
                    repetitions = cardreps, --repeat card evaluation equal to face value of card
                    card = other_card
                }
            else
                return {
                    x_mult = card.ability.extra.x_mult,
                    card = card
                }
            end
        end
        if context.scoring_name == 'High Card' and context.cardarea == G.jokers and not context.blueprint then
            if context.after then
                G.E_MANAGER:add_event(Event({
                    trigger = 'after',
                    delay = 0.0,
                    func = (function()
                        for k, v in ipairs(context.scoring_hand) do
                            v:remove_from_deck(false)
                            v:start_dissolve()
                        end
                        return true
                end)}))
            end
        end
    end,
candid epoch
weary jungle
#

huh????

frigid jetty
#

yup, that works now!

weary jungle
#

is there a message variable for cards?

tepid crow
bold sleet
tepid crow
viscid bough
#

Is there a list somewhere of all the things that can go into the brackets in loc_txt? Currently I only know of X C and S

weary jungle
#

it was a different message

tepid crow
#

oh alright

frigid jetty
#

it's the additional context check, but there's a new context in that code i haven't seen (context.repetition_only) and i'm not sure what it does

weary jungle
#

but it still doesnt work

#

im trying to make this not say +-10

#

now its saying +-10 AND -10 for some reason

bold sleet
weary jungle
nocturne garnet
#

thats literally ascended hands

tepid crow
viscid bough
weary jungle
#

thats a thing??

viscid bough
#

Yeah

weary jungle
#

wow

viscid bough
#

That’s how you get your joker description to have the cool text colors like with mult being red and chips being blue. (It might do stuff with other things but all I’ve modded so far are jokers)

weary jungle
#

i thought it was {C:chips}{} ?

viscid bough
#

Yes

tepid crow
#

they're talking about the first argument

weary jungle
#

OHHHHH

tepid crow
#

(took me a second too)

weary jungle
#

ok i get it now

tall wharf
weary jungle
#

why does my card show +-10, why doesnt it auto format to -10

weary jungle
viscid bough
violet void
tepid crow
weary jungle
tall wharf
#

TRUE

tepid crow
#

{E seems to be for unlocks only is for DynaText (floaty text)

#

{V is for changing custom colors in loc_vars iirc

frosty dock
viscid bough
#

Oh now I remember the V being in the example for castle

frosty dock
#

chips already makes a message

tepid crow
#

ahh bet

weary jungle
#

but the message is +-10

#

which is not good

frosty dock
#

uh i thought it automatically did the minus message, though I'd have to check

violet void
frosty dock
#

you can override the message with chip_message

frigid jetty
frosty dock
#

oh mkay it does that for editions only, weird

storm kraken
# storm kraken currently trying to add booster packs and im failing so hard <:edegabudgetcuts:1...
local pack1 = {
    object_type = "Booster",
    key = "Ascended",
    kind = "Ascended",
    atlas = "pack",
    pos = { x = 0, y = 0 },
    config = { extra = 3, choose = 1 },
    cost = 4,
    order = 1,
    weight = 0.96,
    create_card = function(self, card)
        return create_card("Ascended", G.pack_cards, nil, nil, true, true, nil, "asc1")
    end,
    loc_vars = function(self, info_queue, card)
        return { vars = { card.config.center.config.choose, card.ability.extra } }
    end,
}

(the booster pack isnt appearing)

tepid crow
tall wharf
#

this might sound stupid but how do i import a module here

tepid crow
#

assert(SMODS.load_file("relative_path/to/file.lua"))() should do

tall wharf
#

ty

frigid jetty
#

so the if is basically the joker's return and the else is basically the card's return?

#

imma play with the code more and understand more how it works; thank you so much!

wintry solar
merry raven
frosty dock
storm kraken
faint yacht
frosty dock
#

what system do you have for loading your cards and why?

#

if you do this object_type shenanigans cryptid does, you need to have code to handle your objects

#

it's not the most intuitive and I'd suggest using constructors directly

storm kraken
tepid crow
#

you might want to get out of cryptid's source code

#

lots of moving parts in there

storm kraken
#

that is probably very true

frosty dock
#

cryptid isn't the greatest mod to learn off of

noble frigate
#

y'all
i have a 480x480 image i need to jokerify

#

howmst

noble frigate
frosty dock
#

don't use 0.9.8 mods as reference

crisp coral
#

no thats even worse

#

yeah 0.9.8 😭

noble frigate
#

oh wait

#

nevermind then 😭

frosty dock
#

I'd recommend going off something like ortalab

noble frigate
#

thats why my code was broken for a bit

noble frigate
storm kraken
#

question now is
what do i do with smods.booster 😭

noble frigate
#

my 480x480 is goofed

crisp coral
#

if you want a successor to MystJokers just look at LobotomyCorp (it's a mess

noble frigate
#

real

livid tapir
noble frigate
storm kraken
#

ooo i found the documentation for boosters

frosty dock
# storm kraken question now is what do i do with smods.booster 😭
- local pack1 = {
-    object_type = "Booster",
+ SMODS.Booster {
    key = "Ascended",
    kind = "Ascended",
    atlas = "pack",
    pos = { x = 0, y = 0 },
    config = { extra = 3, choose = 1 },
    cost = 4,
    order = 1,
    weight = 0.96,
    create_card = function(self, card)
        return create_card("Ascended", G.pack_cards, nil, nil, true, true, nil, "asc1")
    end,
    loc_vars = function(self, info_queue, card)
        return { vars = { card.config.center.config.choose, card.ability.extra } }
    end,
}
#

-# ignore the fact that vanilla create_card shouldn't be used either

crisp coral
#

does ret.jokers for eval_card still use shit like mult_mod

frosty dock
#

you can use both mult_mod and mult anywhere

#

(mult_mod doesn't get an auto-message)

crisp coral
#

i'm hooking to eval_card here

wintry solar
#

What’s the aim ?

crisp coral
storm kraken
#

holy shit its a booster pack

wintry solar
#

So it needs to modify chips mult and xmult?

crisp coral
#

yea

#

okay cool it's working, just not hitting jokers that return var_mod

storm kraken
wintry solar
#

There’s a full list of what is accepted in the utils.lua

#

Near calculate_individual_effect

crisp coral
#

oh thanks

wintry solar
#

I don’t remember the name of the table T_T

crisp coral
#
SMODS.calculation_keys = {
    'chips', 'h_chips', 'chip_mod',
    'mult', 'h_mult', 'mult_mod',
    'x_mult', 'Xmult', 'xmult', 'x_mult_mod', 'Xmult_mod',
    'p_dollars', 'dollars', 'h_dollars',
    'swap',
    'message',
    'level_up', 'func', 'extra',
    'saved'
}
wintry solar
#

That’s the one

crisp coral
#

i could've sworn h_x_mult was a thing

frosty dock
#

it is, in enhancement config

#

you would just use x_mult

tall wharf
#

i mightb e insan

wintry solar
#

What uses h_x_mult?

crisp coral
#

steel? iirc?

faint yacht
#

h_x_mult is hand x_mult.

#

So, most likely?

wintry solar
#

I’m pretty sure steel works though

crisp coral
#

aware, but it's not included in SMODS.calculation_keys so shrug

#

whatevs

wintry solar
#

Oh it just gets added as x_mult in eval card

crisp coral
#

oh my god i just saw this 😭

#

98%........

noble frigate
#

i have resorted to jimball

tall wharf
#

sorry

livid tapir
crisp coral
#

time to rewrite a bunch of jokers that used eval_this before

noble frigate
#

dear mother of god

tall wharf
#

i got too bored

noble frigate
#

real

tall wharf
elder vapor
noble frigate
#

do i need to use lovely patches for scaling bigger images down in joker rendering

violet void
#

not if you have 101 cards

livid tapir
noble frigate
livid tapir
bold sleet
#

😭

tall wharf
livid tapir
crisp coral
#

does returning mult without message automatically use a_mult_minus message key?

livid tapir
#

i need your secret

noble frigate
violet void
livid tapir
violet void
#

ctrl + c with debugplus

tall wharf
#

yea

livid tapir
#

wait that exists

tall wharf
#

i did that

livid tapir
#

😭

tall wharf
#

i just

#

copy a bunch of card for testing

livid tapir
#

ok thx

#

btw whats the drag mod

tall wharf
#

like this joker is actually cracked

tall wharf
livid tapir
livid tapir
bold sleet
violet void
#

the fact you added 95 hand types for 1 joker

bold sleet
#

Can't wait for flush one thousand

crisp coral
#

okay, i'll figure that one out later but-
is there an equivalent of context.other_joker but with consumables? so i don't have to use SMODS.eval_this anymore

livid tapir
#

like the aikoshenanigans

noble frigate
tall wharf
#

changes not pushed yet

worthy stirrup
#

how can i check for a jokers name thats in the hand

tall wharf
#

i did reorganize files

bold sleet
# crisp coral okay, i'll figure that one out later but- is there an equivalent of ``context.ot...

if you are working with selected cards, best I can offer you is this

            G.E_MANAGER:add_event(Event({
                trigger = 'after',
                delay = 0.2,
                func = function() 
                    for i=#G.hand.highlighted, 1, -1 do
                        local card = G.hand.highlighted[i]
                        if card.ability.name == 'Glass Card' then 
                            card:shatter()
                        else
                            card:start_dissolve(nil, i == #G.hand.highlighted)
                        end
                    end
                    return true end }))

Change whatever is inside the for loop.

#

(taken straight from the game files)

violet void
bold sleet
#

+blueu printeu

crisp coral
#

that's not what i'm asking about

tall wharf
#

blueprint no worky

bold sleet
#

f

#

i stupid sorry

worthy stirrup
crisp coral
#

next(SMODS.find_card(key))

worthy stirrup
#

what does next do?

wintry solar
#

It doesn’t use the minus message keys, no

crisp coral
#

💥

wintry solar
#

Can probably add a check for that though

nova scroll
#

question that i'm sure many have asked before, but which lua file has all the source joker code itself? working with a friend on an idea of mine and i want to see if we can locate the code for 8 ball since it relies on random chance, use it as reference

nova scroll
#

it's all in there? good to know

crisp coral
worthy stirrup
#

I feel like i programmed this wrong but i am not sure


ModdedCardKeys = {'Tetra', 'Seabird', 'Convict', 'Tetra'}

SMODS.Keybind{
  key = 'CheckJokers',
  key_pressed = 'm',

  action = function(self)
      if G.jokers and G.jokers.cards then
          for i, card in ModdedCardKeys do
              print(next(SMODS.find_card(card)))
          end
      end
  end,
}
crisp coral
livid tapir
#

though remember that vanilla is different than smods so youll need to make some changes to be smods compatible

crisp coral
#

assuming consumables, c_prefix_key

worthy stirrup
#

ModdedCardKeys is a list of the names of the keys

wintry solar
#

I don’t think consumables get passed as other joker ever

#

Maybe they should though

worthy stirrup
#

these are custom jokers

thick panther
crisp coral
#

okay then it should be j_prefix_Tetra

#

prefix being your mod's prefix

worthy stirrup
#

ah, okay

crisp coral
frosty dock
#

exactly

wintry solar
#

Myst, would passing the consumables through that same context as the jokers work for what you’re trying?

#

Or maybe it should be a different context

#

Is using context.other_joker to refer to consumables confusing?

crisp coral
#

it would, yeah, since the effect i'm aiming for is just "Each consumable held gives [value] if [cond]"

violet void
#

why is it bad?

#

I kinda used it for a joker I made

crisp coral
#

it's Bad because it's Hardcoded

slow pilot
#

hardcode is bad. Offers no flexibility, which means interactions between that code and anything else will be...difficult. Annoying.

tall wharf
nocturne garnet
tall wharf
#

200*

nocturne garnet
#

why would you do this

slow pilot
#

Cryptid has a better framework for this, I know

sand oasis
#

I gotta ask, is there some sort of library available for SMODS? I'm using Notepad++ and have been watching this tutorial that has a bunch of drop-down / auto-complete references

#

may not be a technically correct question but im very out of practice

tall wharf
#

i am not mr john cryptid

crisp coral
slow pilot
crisp coral
#

when you have the game's code and smods code in the workspace

tall wharf
slow pilot
#

Half of coding is taking what other people made and adapting it to what you need.

sturdy compass
#

I can second that. I adapted Cryptid’s method of updating values for The Clock for one of my Jokers

sturdy compass
#

Ws

candid epoch
storm kraken
#

now that i have all the tools i need i can make almost everything :evim emojj:

storm kraken
tall wharf
#

there we go

hardy viper
wintry solar
hardy viper
#

which is all of them practically

faint yacht
sturdy compass
violet void
#

can someone tell me how to write this 🙄

candid epoch
#

man, you guys make so much mods that no matter what i think of its already taken

crisp coral
faint yacht
crisp coral
#

gn

faint yacht
violet void
nocturne garnet
candid epoch
#

what am i suppose to make when every idea is taken lmao

crisp coral
#

and who said you can't do stuff other people have done

candid epoch
nocturne garnet
#

what HAVE you thought of...

violet void
storm kraken
candid epoch
crisp coral
#

i have some ideas that i wanna make. unfortunately, i have a mod to maintain

candid epoch
#

even lobotomy corporation is taken, hell their sound effect is made as template

violet void
#

'unfortunately' doesnt bode well

candid epoch
crisp coral
#

basically taking the entirety of lobcorp lol

tall wharf
crisp coral
#

at least ruina is partially free, and limbus is completely free

storm kraken
#

lethal company cards whe-
explodes

candid epoch
#

nice to meet you in person

crisp coral
#

hi

#

i'm surprised you didn't notice by my nickname. or my profile. or my

noble frigate
#

your

candid epoch
#

even if i did, it could be any lobotomy corp fan aswell

sand oasis
#

OH

#

never mind

faint yacht
thick panther
#

im looking at the cryptid source to see how they define custom loc_colours and I found this. Is the Code in this case the key for the Code collectibles?

G.ARGS.LOC_COLOURS.cry_code = G.C.SET.Code
elder vapor
#

yes

tall wharf
#

this should still be a flush 6 doesn't it

#

i guess mr john balatro would not expect it to go above that

long sun
#

i'm so cool

#

now to make the booster packs!!

tall wharf
#

omg

#

tartarus

#

ok

crisp coral
tall wharf
#

problem in my mod

crisp coral
#

because you need more resources

tall wharf
#

how the fuck do i arrange houses from this

tall wharf
noble frigate
#

ghelp i tried eveyrthing and still cant resize jokers

wintry solar
#

Oh more zodiacs I wonder what these ones do

noble frigate
#

do i just imagemagick

tall wharf
#

😭

long sun
#

but i'll invent some!

crisp coral
#

modpack where only content thats similar between mods is added

thick panther
#

I think im defining the color wrong, but im not sure which part (or if its all of it). I want it to use the color from the SMODS.Suit. How would I achive that?

-- Init color
G.C.SUS_SUS = { 0, 0, 0, 0 }

-- Setup Localiation Colors
local lc = loc_colour
function loc_colour(_c, _default)

    if not G.ARGS.LOC_COLOURS then
        lc()
    end

    -- Define custom colors
    G.ARGS.LOC_COLOURS.sus = G.C.SUITS.Sus

    for k, v in pairs(G.C) do
        if string.len(k) > 4 and string.sub(k, 1, 4) == 'SUS_' then
            G.ARGS.LOC_COLOURS[string.lower(k)] = v
        end
    end

    return lc(_c, _default)

end
wintry solar
#

I don’t know if any zodiacs other than ortalab have even been implemented, it I can’t think of at least 5 different times I’ve seen them

long sun
#

i've been told there are a lot of zodiacs

#

i plan to add these to Phanta though :D

weary jungle
#

have runes ever been done?

#

because im like 50% through with them and i havent thought to ask

viscid bough
#

How can i play a custom sound when destroying a card? I have a joker that i want to play a toilet flushing sound when it gets destroyed

#

also while im here, im gonna ask: Does this seem too powerful? like it should be less Xmult gain or instead be normal mult?

gaunt thistle
#

which card is destroyed?

viscid bough
#

The joker

gaunt thistle
#

ah the oker

#

I don't think it seems strong? I feel like it scales way slower than some of the vanilla xmult yokers

viscid bough
#

I tested it and wasnt fully sure because i realised im too used to finding flushes

#

and i destroyed almost immediately lol

viscid bough
storm kraken
#

oh

viscid bough
#

including flush, straight flush, flush house and flush five

storm kraken
#

seems fine

#

actively attacks my boss blind only play style

viscid bough
# violet void

ive already got it destroying i just need to figure out the sound part really

violet void
viscid bough
#

do i have to create a sound like how i'd create an atlas?

violet void
#

it runs when the card is removed

#

ah hold on

viscid bough
#

ahh thank you

tall wharf
#

god what the fuck

viscid bough
livid tapir
#

bc i want it lol

tall wharf
livid tapir
#

YESSSSSSSS

#

awesome

tall wharf
#

i am now trying to automatically make it create multiple flushes

#

this is the challenge

#

there ain't no planet cards for this shit tho it's gonna be painful to draw

livid tapir
tall wharf
#

that's crazy

livid tapir
#

im crazy

tall wharf
#

but what if

nocturne garnet
livid tapir
#

infinite deck be like:

nocturne garnet
#

now i'd like to see this with cryptid

#

to see if ascended hands work

weary jungle
#

speaking of hands

slow pilot
weary jungle
#

i saw codex arcanum

#

but im like 10% worse!!!!

#

i got this!!!!!!

slow pilot
#

I think Codex is the only mod of note with runes?

weary jungle
#

theres about to be 2 mods 😎

#

in like a few weeks

#

i only mod during school

young sand
#

I’m gonna learn how to make new seals

#

That oughta be simple, right?

viscid bough
# violet void https://github.com/Steamodded/smods/wiki/SMODS.Sound

i used this

SMODS.Sound {
    key = "3xr_flush",
    path = {
        ["default"] = "fish_flush.ogg"
    },
    volume = 0.6
}

and then the play_sound function with the same key. But its crashing and apparently its looking for that key in a resources folder. Is there a different function for playing an SMODS.Sound?

violet void
#

did you add your mod's prefix?

#

prefix_soundkey

viscid bough
#

lemme check

#

i did this

remove_from_deck = function(self, card, from_debuff)
        if not from_debuff then
            play_sound("3xr_flush")
        end
    end,
#

am i supposed to not put the prefix in the keys?

#

just when i get the keys?

violet void
#

your mod's prefix that you specified in the json

viscid bough
#

the prefix is 3xr

violet void
#

alright

faint yacht
#

If key = "fish_flush", then play_sound("3xr_fish_flush").

violet void
#

ah right, remove the prefix from the key

rough furnace
violet void
#

otherwise you need to write it twice

rough furnace
#

cause your key is 3xr_flush and your prefix is 3xr

viscid bough
#

ooohhhhhhh

#

so the prefix is automatically added to keys?

rough furnace
#

yes

violet void
#

smods checks for it yes

rough furnace
#

you can disable the prefix if you want to but its mostly there for internal stuff

sudden dew
#

When a joker triggers off of a card scoring and you provide a message in the return table, the message displays next to the card. Is there another field to provide a message that will display next to the joker?

elder vapor
#

card = self

#

i think

weary jungle
#

9 runes to go!

rough furnace
#

probably card = card

#

self is the cetner

sudden dew
#

card = card makes the joker juice like I'd expect, but the message still shows beside the playing card

weary jungle
#

printaholic over here

sudden dew
#

Actually scratch that, it doesn't even juice up the joker, I'm doing that manually

rough furnace
weary jungle
#

i love print

#

its like breakpoints but bad

hardy viper
#

never used a breakpoint in my life personally

rough furnace
#

pro tip with DebugPlus master branch you can print(table) and it get expanded

rough furnace
weary jungle
sonic cedar
#

is there a context.first_hand_drawn but for the last hand? i’m trying to make this mult only apply on the last hand of the round

weary jungle
#

check acrobat

rough furnace
#

we can't really know if it'll be the last hand or not

#

oh unless you mean hands == 1

#

if so iirc its G.GAME.current_round.hands

sonic cedar
rough furnace
#

oh it's hands_left

sonic cedar
#

oh lmao

faint yacht
#

if G.GAME.current_round.hands_left = 0

rough furnace
rough furnace
#

if G.GAME.current_round.hands_left == 0 then

hardy viper
faint yacht
#

am tired. 🍞

rough furnace
#

is that a syntax error in lua?

#

well the missing then is

sonic cedar
hardy viper
tall wharf
#

i am dead

rough furnace
#

Side not return being a syntax error if not the last block is super helpful

hardy viper
#

pretty sure anything that prevents the code from being compiling is considered a syntax error

sonic cedar
wintry solar
#

Just copy the dusk check then

hardy viper
rough furnace
rough furnace
thick panther
#

when I view this in the poker hands screen, the cards in the example render as blank. the Suit's card_key is SUS. does my mod prefix come before that, like prefix_SUS_A?

local base_sus_flush = SMODS.PokerHand{
    key = 'Sus_Flush',
    chips = 35,
    mult = 5,
    l_chips = 15,
    l_mult = 2,
    example = {
        { 'SUS_A', true },
        { 'SUS_K', true },
        { 'SUS_10', true },
        { 'SUS_5', true },
        { 'SUS_4', true }
    },
hardy viper
sonic cedar
rough furnace
#

luckily I only need the return in async statments

wintry solar
#

Open card.lua, ctrl+f Dusk

sonic cedar
#

that’s RIGHT THERES A THING

#

thanks

hardy viper
#

if you lose a shotgun just show me js code and ill find the first one in a thousand feet radius. it'll cost you a shell though

rough furnace
#

thsi functions does a lot

tall wharf
#

debugplus feature

#

when can i hold backspace to delete

hardy viper
#

soon 🙏🙏🙏

rough furnace
#

I probably could just turn that on and off automatically when console opened

#

however, I am lazy

hardy viper
#

its become habit for me to butterfly click the backspace button

rough furnace
#

me too

tall wharf
#

how is this a flush house

thick panther
rough furnace
#

3 4'S 2 2'S

tall wharf
#

where i2s the other 2 of spades

#

hold on

#

i am stupiod

#

ok it is a house

#

it is a flush and a house

#

thanks

nocturne garnet
wintry solar
#

Hand evaluation doesn’t like extending the selected limit

nocturne garnet
#

all that a flush house needs to be is a flush and a full house

#

whether or not they're all the same suit doesnt matter

tall wharf
#

fair

young sand
#

I know what to do

I’ll make a new deck

#

It will be a painful one

frosty dock
hardy viper
#

repeat key?

dreamy thunder
#

How do i check for a specific joker in hand

hardy viper
dreamy thunder
#

Thanks

sudden dew
#

I think you'd want #SMODS.find_card(key) > 0 cause empty lists evaluate to true

dreamy thunder
#

K

hardy viper
#

oh yeah

frosty dock
hardy viper
#

next(SMODS.find_card(key)) works too

hardy viper
#

idk

#

meow

frosty dock
#

yeah but ctrl+backspace is two keystrokes

#

(so is backspace)

sudden dew
#

Is there a way to tell from context the total number of repetitions a card has?

hardy viper
#

oh

frosty dock
#

that's one of the few cases I actually use it for, I never bothered to learn to use to properly since I added it lmao

#

mostly because I don't think double taps are that bad

hardy viper
rough furnace
#

(I use it all the time I am just stupid)

#

also merry christmas (I just pushed key repeat in the console)

#

I was liek I don't tbhink delete works in the console maybe I should add that but then realized I don't have mvoing the cusor so it would be useless

hardy viper
#

wait i can't count

#

fourteenth

frosty dock
#

lol

#

I thought there were only twelve

hardy viper
young sand
#

Evidently, my ideas are very bad.

hardy viper
#

there's now 365

#

that would make for a very long song

frosty dock
#

everyday is a day of Christmas (except the day before Christmas on a leap year)

rough furnace
#

me when I knew something was possible before I made the console but didn't implement it until someone compained

hardy viper
#

i think we could do it i remember one night me and 3 other fellas were in cryptid vc repeating the same joke with slight variation for like 2 hours

#

idk why

#

it was about doing balatro stuff in irl casinos and we just . didn't stop laughing

frosty dock
#

not me playing the entire fucking deck

violet void
hardy viper
#

sir you cannot summon omegatranscendent entities at this poker table

rough furnace
#

me shwoing up to the casino with my baron mime perkio cryptid steel kings

hardy viper
#

jen should make it so only one person on the planet can have kosmos at any given time

rough furnace
#

that would be really funny

hardy viper
#

balanced almanac fr ..

rough furnace
#

would make development hard

young sand
hardy viper
young sand
#

But if there’s even one you play without Vantablack, fuck you go back to discarding i guess

tall wharf
hardy viper
livid tapir
livid tapir
thick panther
#

if I wanted to check if a hand has a pair, and that pair is the same suit (e.g. a pair of 2 of Ace), how would I format the if statement for that in the evaluate method in SMODS.PokerHand?

local flush_count = 0
for i=1, #hand do
    if hand[i]:is_suit('Hearts') then
        flush_count = flush_count + 1
    end
end

if flush_count == 2 and next(parts._2) then
    return { SMODS.merge_lists(parts._2) }
else
    return {}
end
frosty dock
rough furnace
#

(if you had the master branch DebugPlus installed it would have expanded that)

sudden dew
#

Where does joker calculation actually happen in the game files? It's not in any of the places I'd expect it to be

rough furnace
#

card.lua

#

well

#

thats where the joker part of it happens

#

in Card:calculate_joker

sudden dew
#

Yeah, I'm thinking of what makes all of the calculat_joker calls

rough furnace
#

not sure bit I iirc evaluate_play calls it

dreamy thunder
#

I think i messed up y'all

rough furnace
#

idk where it is

dreamy thunder
#

How do i limit this to one

rough furnace
#

need more context

dreamy thunder
#

Alright

thick panther
#

If I wanted to make a collectible that acts like a planet card, but stored under a different collectible type and with its own packs, would I need to recreate the planet card logic for them?

dreamy thunder
#

what do y'all think?

#

i did not limit it with a room, so it can create infinitely

crisp elbow
#

I feel like it's a bit too OP with stuff like OA6 making it a 1/2 chance effectively

dreamy thunder
#

i dunno though

analog pilot
dreamy thunder
analog pilot
#

I see

dreamy thunder
#

but i dont know if i should limit it

crisp elbow
#

Must have room would be nice

dreamy thunder
#

then i would need to add that to all of my jokers

#

hm

#

i forgot how to limit it

vagrant cedar
#

I have a Joker I'm trying to create but I'm not really sure how the coding for it works, I've made a few Jokers already but I can't figure this out from the example Jokers

#

Does anyone know how to make a Joker that gives every other Joker a 1 in 2 chance to retrigger?

stiff locust
#

this already exists

#

in cryptid

vagrant cedar
#

hmm

#

Oh?

#

I know of Mario

stiff locust
#

boredom

vagrant cedar
#

Heard

stiff locust
#

1 in 2 chance to retrigger all jokers and played cards

vagrant cedar
#

Oh well without the played cards part tho

stiff locust
#

you can just

remove the code that does that i don't know

vagrant cedar
#

And does Cryptid code the same way I have been?

stiff locust
#

¯_(ツ)_/¯

vagrant cedar
#

If it does I'll use it as my example

vapid mango
#

SMODS.Language{key = "en-us", path = "en_us.lua", label = "English"}
SMODS.Language{
file = "riskofsquares.ttf",
render_scale = G.TILESIZE*8,
TEXT_HEIGHT_SCALE = 0.83,
TEXT_OFFSET = {x=10,y=-20},
FONTSCALE = 0.11,
squish = 1,
DESCSCALE = 1
}

#

Gang

#

am I formatting this correctly

#

cause it keeps throwing me this error

vagrant cedar
#

I'm looking at it now

#

Not what I wanted

#

I don't want a 1 in 2 chance to retrigger all

#

I want each individually to have a 1 in 2 chance

frosty dock
#

the second table is supposed to the the font of the first

vapid mango
#

gotcha

#

I'm also attempting to change some aspects of en-us

#

for this mod

#

SMODS.Language{key = "Rainglish", label = "Rainglish", font = {
file = "riskofsquares.ttf",
render_scale = G.TILESIZE*8,
TEXT_HEIGHT_SCALE = 0.83,
TEXT_OFFSET = {x=10,y=-20},
FONTSCALE = 0.11,
squish = 1,
DESCSCALE = 1
}, }

#

this seems to let me launch

#

Ok, so I've gone and changed it to english, but it still won't apply the font naturally

frosty dock
#

have you switched to the language?

vapid mango
#

yep

#

gives me a UI_ERROR

frosty dock
#

wdym

vapid mango
#

so ill click the english one

vagrant cedar
#

There's 2 English options

vapid mango
#

I'm aware, it's named that for the test

vagrant cedar
#

Ah

vapid mango
#

Even changing the name breaks it for some reason

tall wharf
#

uhhhhhhhhhhhh

frosty dock
#

wraparound straights don't exist

tall wharf
#

ok

#

fair

vapid mango
#

ok i figured it out

#

thank god

civic shuttle
vapid mango
#

now all i have to do is figure out how to make it load a custom language file

#

like a modified en-us

vapid mango
frosty dock
tall wharf
#

rewriting straight logic just for a silly mod

civic shuttle
gaunt thistle
vapid mango
civic shuttle
#

alr

humble gale
#

cryptid has a tendecy to crash, it could litterly be anything

frosty dock
#

localization/en-us.lua

vapid mango
#

gotcha

#

how should i add it as a string in the mods lua?

humble gale
#

like adding a description?

vapid mango
#

oh wait

#

i should title it the same as my custom language, huh

humble gale
#

yeah, whatever you made the game recognize it as

vapid mango
#

Baller

wintry solar
#

@crisp coral can now use context.other_consumeable to check the consumables that you have (thunk spelling lives on)

valid trench
#

I'm trying to use a string variable in a description and it keeps giving me nil

#

right now I'm just trying to make it display a string at all and it doesn't seem to want to

humble gale
#

are the variables in your loc_vars function?

valid trench
#

oh does it call from that

humble gale
#

because #2# is the second variable in your return

#

in loc_vars

valid trench
#

ah

#

alright thank you

dreamy thunder
#

done for today

quaint kettle
#

does anyone know the font used on the cards?

#

I kinda need an Æ character in it

frosty dock
#

it's called m6x11plus

quaint kettle
#

oooooh

#

awesome

#

I'm using it in photoshop but it tries to anti-alias it or something so it looks blurry

#

any ideas on how to make it more like the one on the left?

#

never mind got it I think

random sleet
tall wharf
#

someone please help me figure out

#

how straight logic works

valid trench
#

rn I'm using add_to_deck for this joker does anyone know what function is called as soon as a joker spawns

#

basically I just want to call the function whenever the joker is spawned in so if you check it from the collection it will do this function and give you the right information

stiff locust
#

does anyone have a K in the legendary font

#

none of my mods have a legendary with K in its name

valid trench
#

does it use the same font as the tarots I don't remember

wintry solar
#

perkeo?

stiff locust
#

fuck

valid trench
#

oh wait

#

lol

stiff locust
#

lmao

#

<- idiot

tall wharf
#

i am genuinely stuck

#

someone please help me rewrite the straight evaluation algorithm

#

maybe just giving a lot of value to single straight flushes

stiff locust
#

how does context.destroying_card work exactly

gaunt thistle
tall wharf
gaunt thistle
#

ah gotcha, that's fair

tall wharf
#

or at least

#

not what i wanted

#

i wanted to be able to combine multiple flushes

#

note to self recursively check bigger straight if it can find bigger straight otherwise do the normal thing