#đŸ’»ăƒ»modding-dev

1 messages · Page 36 of 1

unkempt thicket
#

yea

#

i believe this does it

zealous glen
#

other_card is a single card

zealous glen
unkempt thicket
#

it works for me, so size might not matter

shell tangle
# zealous glen `other_card` is a single card

Still somewhat unfamiliar with Lua's for loops, I'd assume it's something like for k, v in ipairs(context.other_card[v]) do, or is that completely off? Or, should I be searching through cardarea instead?

zealous glen
#

I think there’s a context.individual at the end of round that automatically iterates over cards in hand

shell tangle
royal ether
#

and when it is called, it passes a singular card in context.other_card

#

so you dont need the loop

shell tangle
# royal ether so you dont need the loop

Heavily cleared things up - It's getting further, but, somehow, it's saying that ability is nil - succeeding the if statement, but now, I have no idea what the issue might be. Here's how I changed the code. Any suggestions from here?

    if context.end_of_round and context.cardarea == G.hand and not context.blueprint then
      if context.other_card:is_suit('Hearts') then 
        self.ability.extra.Xmult = self.ability.extra.Xmult + self.ability.extra.Xmult_add
        return {
          message = "Upgraded!",
          colour = G.C.MULT}
      end
    end```
sturdy glen
#

im genuinely confused since this works fine in lobotomy corp but not mine ;<

sturdy glen
#

yeah

zealous glen
#

What does the file look like

sturdy glen
#

the code or the directory? (sorry im stupid)

zealous glen
#

The code

sturdy glen
zealous glen
#

Not that code

#

The code you’re loading

sturdy glen
#

oh wait shoot sorry

royal ether
#

the ones in indiv_jokers i think

zealous glen
#

You’re calling NFS.load on some file

edgy reef
#

You should check if the load was successful before calling.

#

Like this.

#

Would let you have an easier time bugfixing since you'd know what the loading issue is

zealous glen
#

No checking if the load was successful we die like giant golden babies

royal ether
#

it looks like the issue is just that either one of the files is empty, or incorrectly defined

zealous glen
#

Or maybe the key v is different from the file name

royal ether
#

yea thats incorrectly defined

sturdy glen
zealous glen
#

What are v and what are the file names you’re loading?

sturdy glen
#

Just the Joker names for the files and v is just what was in the lobo corp code

zealous glen
#

Show them please

solid salmon
#

can someone make suggestions for my mod

sturdy glen
zealous glen
#

What about v?

sturdy glen
#

I don't have anything about v in my code other than that bit, its not in lobotomy corp either other than that code part

#

unless im just blind... (< about looking in lobo corp)

zealous glen
zealous glen
solid salmon
#

look at this

solemn coral
#

@cobalt nexus (Cont. from previous channel) The best way to get started with modding is honestly to just get started. It's programmed in Lua, which is very simple, and the source code for any mod is available just by downloading the mod and looking through its files (and the base game source code isn't difficult to get either)

#

I'd recommend reading the Steamodded documentation and looking at and/or editing the source code for my mod, then trying to make a mod following the same style as mine.

shell tangle
#

Figured all the abilities out, most of it is working, but pool flags appear to do nothing. Also tried using add to deck = function() return{add = false} end to try removing it, but, neither seems to have any affect. Also tried moving the remove from pool function to activate at different times. No idea how to approach it from here.

wintry solar
#

where are you initialising the flag?

shell tangle
#

The first line after calculate, I tried bringing it out of the code, but it crashed because it couldn't index GAME.

wintry solar
#

and do you ever add the flag to the joker?

shell tangle
#

The second comment under calculate, I tried adding it at the end of round since that's when Gros Michel does it, and it used to be at the bottom, right before the message that says "Broken".

wintry solar
#

No not like that, you need yes_pool_flag = joker_broken. in your joker object

#

I think your code should change the flag correctly but you havent assigned it

shell tangle
#

It's within config.extra - I'll check and see if Gros Michel has it out of extra.

wintry solar
#

nah it needs to be outside that

shell tangle
#

Indeed it does, looks like that'll probably fix it, thanks for pinpointing it.

#

Did not fix it.

wintry solar
#

it's not removing it?

shell tangle
#

Wait - might've been dumb, moved it out of extra, not out of config - I'll try another time.

wintry solar
#

also

#

you set the flag to false every time calculate is called

#

but you don't set it to true in the calculation that destroys the joker, so I'm pretty sure it'll always be false

shell tangle
#

That'd make sense. I'll try a few more things, might come back for a bit more help.

#

Alright - either I'm incredibly unlucky, or I've figured it out - I'll make a quick test joker that has yes_pool_flag and see if it appears.

shell tangle
wintry solar
#

You could look at the book of shaders

#

But I mostly just figured stuff out and trawled the internet for forum posts

cobalt nexus
solid salmon
#

when i'm making different card types

#

do i make different lua

#

like stupidity jokers and stupidity vouchers

#

or do i just make a megapack

edgy reef
#

Unfortunate that it doesn't seem like the obj pool I set up doesn't remove duped cards but it's functional at least.

#

Maybe because the cards don't have center.name?

#

That's probably it.

rough furnace
#

^ this also will delete any kind of card

austere schooner
#

Well that's one way to do deck thinning

rough furnace
#

you can duplicate things now

#

keeps all the values too

solemn coral
#

That might actually be kinda interesting as a temporary effect from a consumable

autumn berry
crisp coral
#

No

autumn berry
#

but what about yes?

fallen tendon
#

Can you please do a cosplay of the hanged man

hallow forge
#

Very creative insult

fallen tendon
#

Truly

grand violet
#

Can you please do a cosplay of "speak no evil"

#

Let's not go too crazy with the jokes, folks

frosty dock
#

Can you please stop doing a cosplay of The Fool?

unkempt thicket
frosty dock
zealous glen
royal ether
#

at least it isnt ai generated like the other guy?

crisp coral
#

the source material is worse

royal ether
#

fortunately i am unawar

#

e

oblique gust
#

e

zealous glen
#

e

frosty dock
#

e

sonic mortar
#

why is my consumable causing a crash on boot when it's assigned a modded consumable type?
attempt to index local 'ref_table' (a nil value)

functions at which the crash occurs at shown below

#

consumable type definition:

#

i feel as though i've got everything right, something tells me this might be a bug with the modloader but i'm not sure at the moment

wintry solar
#

have you got the consumable definition handy?

sonic mortar
#

hold on

edgy reef
#

You’re missing undiscovered.

wintry solar
#

you don't need undiscovered

edgy reef
#

And also “Label” is so longer used as of current commit.

sonic mortar
sonic mortar
wintry solar
#

what's the current name?

sonic mortar
wintry solar
#

the key is different to your set

#

they should be the same afaik

sonic mortar
#

oh, i must have misspelt it last time lol

#

we're good

#

because i did try that and it still crashed, but clearly i must have done a spelling mistake

surreal marsh
#

how to randomly create a joker of certain rarity đŸ€” how to support rarities in other joker mods

surreal marsh
#

this rarity parameter is a fraud

zealous glen
#

do that

surreal marsh
#

_legendary

#

ohh đŸ€”

#

I want to generate a joker that has same rarity as a given joker, so I inject into it and set _starting_pool to G.P_JOKER_RARITY_POOLS[card.ability.rarity]?

zealous glen
#

You just need to use the right input

solemn coral
#

I'm actually working through a very similar problem right now for my Gatito jokers

#

I'm pretty certain from what I've seen you do need to inject code into that function

#

At least, that's what I'm doing right now

zealous glen
#

If you pass 0.995 you can get a rare Joker

#

Likewise 0.98 and uncommon

edgy reef
#

I’m pretty sure you should be able to force a specific rarity pool as it would be a required feature for Riff-Raff to work.

zealous glen
#

And 0 and common

frosty dock
zealous glen
#

Also the rarity tags

solemn coral
#

Wait are you making a new rarity or forcing it to generate an existing rarity?

surreal marsh
zealous glen
solemn coral
#

Ah okay that's easy then

zealous glen
solemn coral
#
G.E_MANAGER:add_event(Event({func = function()
    local newCard = create_card('Joker', G.jokers, nil, 2, nil, nil, nil, 'strongHeart')
    newCard:add_to_deck()
    G.jokers:emplace(newCard)
    return true end }))

This is the code I'm using to get a random rare joker

frosty dock
#

the issue here is that you pass the chance roll for a rarity and not the rarity itself

surreal marsh
solemn coral
#

The 2 there represents the rarity (it's rarity minus 1, so 0 is common, 1 is uncommon, 2 is rare) (I think)

zealous glen
frosty dock
#

if a chance roll of 0.9 no longer results in an uncommon joker, then uncommon tags will be broken

surreal marsh
#

like cry_epic

zealous glen
#

Then it needs to have a Ratity API

#

Pool API when

solemn coral
#

Yeah, without a consistent API for new rarities I think that's going to be tricky to support all modded rarities that way

zealous glen
#

The chance of new rarities should follow the model of Edition API

#

While choosing a specific one should be done by index (not integer indices)

#

So you’d need to replace every base call that specifies a rarity by float with a string

solemn coral
zealous glen
#

Either “no” or “yes” I forget which is which

#

Cavendish moment

surreal marsh
#

why rare tag checks if rare jokers in G.jokers are less than number of all rare jokers and doesn't generate if not satisfiedbalatrojoker

solemn coral
#

I think it looks nicer if it's got a fully custom rarity. They kinda occupy a similar design space to the Legendary jokers, so I want their rarity to reflect that

surreal marsh
#

and uncommon tag doesn't do that

zealous glen
solemn coral
#

What rarity would I give them if not a custom rarity? Do I say they're "common" because they all have terrible effects (actually most of their effects are worse than Common jokers), or do I say they're "rare" or "legendary" because they have game-warping effects once you get the whole set?

zealous glen
zealous glen
#

I have a Joker that increases the chance of itself spawning and even at 1 in 12 it’s kinda rare to see

zealous glen
solemn coral
#

Yeah, they only way to get them is through packs

#

The rarity would just be a visual thing

zealous glen
#

Then choose the rarity of whichever one you can find naturally and the rest can match

#

As in, in the shop

solemn coral
#

None of them will show up in the shop naturally, they're only going to be in packs

zealous glen
#

If none are in the shop they can all be Rare or Legendary as per your preference. I’d do Rare

solemn coral
#

I think fully custom rarity gives a better indication that they have their own unique design space

zealous glen
#

I think you can indicate it through other ways

solemn coral
#

Again, it's just a visual thing, so it really doesn't matter that much

zealous glen
#

Rarities do have mechanical impact

#

Baseball moment

#

Idea: for effects that don’t normally use calculate, call calculate with a custom context named after the Joker(‘s key) to make it interactable

#

I had had an idea for a Joker that doubled the effect of Common Jokers by calling calculate twice, but it wouldn’t work with e.g. my Cows, so doing this would make the Cows work

#

Having said that I don’t know how the doubling Joker would work with a calculate call rather than being hardcoded đŸ€”

#

Unless someone else has a better idea of how to retrigger Jokers

#

I don’t know an available mod with that mechanic

brisk quartz
#

cryptid

#

try looking at canvas from cryptid

#

it retriggers jokers to the left of it once for every non-common joker to the right of it

zealous glen
#

đŸ€”

surreal marsh
wintry solar
#

I had started working on it before ejwu took over the calculation stuff

surreal marsh
mellow sable
zealous glen
#

Something like

function calculate(context)
    if bool and not context.loop then
        context.loop = true
        calculate_ref(context)
        calculate_ref(context)
    else
        calculate_ref(context)
end
solemn coral
#

Small issue I've been running into with custom rarities

#

I've got the rarities set up in the bottom level of my main code (copied from the init function of Fusion Jokers, which is a 0.9.8 mod)

#
table.insert(G.P_JOKER_RARITY_POOLS, {})
table.insert(G.C.RARITY, HEX("CC9977"))
local gatitoRarity = #G.P_JOKER_RARITY_POOLS
loc_colour("mult", nil)
G.ARGS.LOC_COLOURS["gatito"] = G.C.RARITY[gatitoRarity]```
#

This works exactly as expected for the most part, except for when I try to reset my save file. If I do that, it throws an error when adding jokers into the new rarity pool that it can't find the pool. When I open the game up again after that crash, it works fine again.

zealous glen
#

Wait didn’t Steamodded have custom rarity support? I don’t remember

wintry solar
zealous glen
solemn coral
#

It looks like it has this, which isn't quite a custom rarity but it's definetely close enough for my purposes

wintry solar
#

yeah your way looks like it would work

solemn coral
#

Since my way is only working 99% of the time, and I don't want to try debugging it if there's an easier and better supported way that will work 100% of the time, I'm going to just replace this with the set_card_type_badge function

solid salmon
#

has anyone ever made a joker that can turn into a random joker?

fallen tendon
#

You could just make it create a new joker and then dissolve

solid salmon
#

i have never heard about dissolve

solid salmon
#

I'm trying to make a joker that creates a random joker (like judgement) but better

solemn coral
#

Here's my code for one of my jokers. It destroys itself and creates a random rare joker after playing a certain number of Hearts

#
calculate = function(self, card, context)
    if context.individual
    and context.other_card:is_suit("Hearts")
    and context.cardarea == G.play then
        card.ability.extra.heartsLeft = card.ability.extra.heartsLeft - 1
        if card.ability.extra.heartsLeft == 0 then
            card_eval_status_text(card, 'extra', nil, nil, nil, {message = "+1 Joker!"})
            destroyCard(card)
            G.E_MANAGER:add_event(Event({func = function()
                local newCard = create_card('Joker', G.jokers, nil, 2, nil, nil, nil, 'strongHeart')
                newCard:add_to_deck()
                G.jokers:emplace(newCard)
                return true end }))
            return {}
        end
        if card.ability.extra.heartsLeft > 0 then
            return { 
                extra = {
                    message = card.ability.extra.heartsLeft.." left",
                },
                card = card
            }
        end
    end
end
solid salmon
#

imma remove hearts

#

oh i see

solemn coral
#

Yeah you can just remove the reference to hearts, the inner part where it destroys itself and gives a new joker is the important part

#

Oooh actually I forgot that destroyCard(card) is a custom function I built

#
function destroyCard(card)
    G.E_MANAGER:add_event(Event({
        func = function()
            play_sound('tarot1')
            card.T.r = -0.2
            card:juice_up(0.3, 0.4)
            card.states.drag.is = true
            card.children.center.pinch.x = true
            G.E_MANAGER:add_event(Event({trigger = 'after', delay = 0.3, blockable = false,
                func = function()
                        G.jokers:remove_card(card)
                        card:remove()
                        card = nil
                    return true; end})) 
            return true
        end
    })) 
end
solid salmon
#

do i just add this to my code?

solemn coral
#

Yep, that should work.

solid salmon
#

thanks for the function

#

I'll credit you

solemn coral
#

Good luck!

crisp coral
frosty dock
#

Fun fact: v = nil is useless

zealous glen
#

Just in case a Joker is extra determined

crisp coral
#

just in case...

frosty dock
#

all it does is get rid of your local reference to the object

#

it doesn't actually kill the table

solid salmon
#

parchment engineer isn't 2 uncommon?

solemn coral
#

For some reason the code uses rarity-1 instead of rarity

#

So 0 is common, 1 is uncommon, and 2 is rare

frosty dock
#

it doesn't, it's a chance roll result

#

anything below 0.7 is common

solemn coral
#

OOooh okay I misunderstood

#

Yay for false positives I guess!

frosty dock
#

at least 0.7 but below 0.95 is uncommon, and 0.95 or above is rare

#

not sure how you'd get 1 being uncommon, but that case doesn't work

solid salmon
#

so i change the G.jokers value to 0.95

crisp coral
solemn coral
#

I guess I saw 0 was common, tried 2 as rare and that worked, and incorrectly extrapolated to 1 = uncommon

crisp coral
#

it doesn't roll if you put in a rarity

solemn coral
#

Never actually put that theory to the test

frosty dock
#

steamodded pool stuff should patch this to use rarity keys instead

solid salmon
#

so the number is the chance?

frosty dock
#

otherwise it generates a number from 0 to 1 and determine the rarity the same way

crisp coral
#

oh. huh.

#

you're right

solid salmon
#

Please make a list of how it works for me to use as future reference

solemn coral
#

Just use these three values I think:
0 - Common
0.7 - Uncommon
1 - Rare

#

Should be easy enough to remember

solid salmon
#

ok

#

what if i wanted to have two of those values?

shell tangle
# solemn coral

Reak quick, was looking for this through the base game and steamodded's source code, but couldn't find anything about it. The only place I haven't checked is through the steamodded .tomls, but there's a chance I completely missed it somewhere.

frosty dock
#

it's > last I checked

crisp coral
#

yup it's >

zealous glen
#

You said at least 0.7

frosty dock
#

not at my PC rn, I had it backwards

zealous glen
#

@solemn coral 0.7 might not work

solemn coral
#

Ah okay then

#

My bad, use 0.8 then

frosty dock
#

I usually look through lovely dumps instead of source files when I'm searching something

solid salmon
#
            card_eval_status_text(card, 'extra', nil, nil, nil, {message = "+2 Jokers!"})
            destroyCard(card)
            G.E_MANAGER:add_event(Event({func = function()
                local newCard = create_card('Joker', G.jokers, nil, 1, nil, nil, 'strongHeart')
                newCard:add_to_deck()
                G.jokers:emplace(newCard)
                return true end }))```
#

I removed all of the heart stuff

#

And adjusted it

crisp coral
#

💀

#

please learn lua

frosty dock
#

I can't deal with this

#

I've been thinking about literally writing some sort of "read this first" for questions I'm tired of answering

solid salmon
#

At this point I think i need it

crisp coral
#

also you have visual studio code so install the Lua extension

solid salmon
#

I did

frosty dock
#

at this point what it will tell you is "learn lua"

crisp coral
#

you must've disabled the syntax checking or something

solid salmon
#

nope

#

also wanna see how much stuff that I might to add to the mod

crisp coral
#

no docs on SMODS.Challenge yet right

frosty dock
#

no, but that one shouldn't be too much work

solid salmon
#

guys wanna see how much suggestions a few people made for my mod?

frosty dock
#

no

shell timber
#

"you do the programming, i'll do the ideas"

solid salmon
#

I was given ideas alright

#

100's

crisp coral
#

no i will not program for your mod

solid salmon
#

Im the opposite

shell timber
#

wow

#

it's almost as if the thing i said

solid salmon
#

No seriously look how much ideas they given Red Joker
Blue Joker
Yellow Joker
Green Joker
Black Joker
Magic Joker
Nebula Joker
Ghost Joker
Abandoned Joker
Checkered Joker
Zodiac Joker
Painted Joker
Anaglyph Joker
Plasma Joker
Erratic Joker

shell timber
#

i do not care.

#

i am sorry

solid salmon
#

ok

regal shoal
#

I may need tips on how to handle something that has been bothering me since the beginning of the developement of my mod.
I add 150 ranks, where should I make the changes so there is only one Jkr short ?

crisp coral
#

we had 60 suits, now get prepared for 150 ranks

frosty dock
#

uhhhh

#

there probably needs to be a better system for individual playing cards

crisp coral
#

definitely lol

solid salmon
#

now we have a total of 9000 cards in our decks

zealous glen
regal shoal
#

I also don't need to have them at the beginning of a game in a Deck. So that makes total sense if they're only created by trigger

crisp coral
#

wait does this mean the challenge doesn't get prepended with the mod prefix

regal shoal
shell timber
#

there's a reference at the top for a reason

zealous glen
#

But maybe it will help anyways

#

@night pagoda how did you hide suits?

frosty dock
night pagoda
regal shoal
night pagoda
#

I think ranks are counted in the same place, so yeah

solid salmon
#

})) <-- Syntax error

solid salmon
#

oh shoot

#

I forgot that im making epics too

crisp coral
#

aure

#

aure.

#

why the fuck.

#

why the fuck is it in card.lua.

royal ether
#

why does get_current_pool even use chances instead of just the rarity key

solid salmon
#

why is })) a syntax error

royal ether
#

it isnt, youre having a syntax error somewhere else

solid salmon
royal ether
#

please just take a screenshot man

#

i cant read half the text here

solid salmon
royal ether
#

that is STILL not a screenshot

fallen tendon
#

Use prt scrn

regal shoal
#

You probably have an useless ')'

fallen tendon
#

Easiest shortcut ever

solid salmon
#

Nope

#

I think

#

Lemme screenshot

fallen tendon
#

Also use windows shift s

mellow sable
#

You can’t like copy and paste it?

#

At least

fallen tendon
#

Dont just take a photo using a phone

#

You cannot see anything

royal ether
#

snipping tool is window's only useful app

#

please use it

stray warren
#

The best tool

regal shoal
#

You're missing a 'end' after the return

mellow sable
#

Move one of the ends to there

crisp coral
#

oh nice challenge unlocks works properly... if the challenge.toml worked properly

regal shoal
#

And because it's a function in G.E_MANAGER you probably need to do return true end

solid salmon
#

I'm trying but I'm not getting images

crisp coral
#

it's in your clipboard, paste it

solid salmon
#

buh

#

wait lemme take a smaller one

royal ether
#

yea mjst is right

#

it has to be return true end}))

solid salmon
#

damn i'm dumb

#

also how can i make it give more than one card?

regal shoal
#

Also, I dunno how kind lua is, but having a missing parameter after a coma in "create_card" isn't something you should do

mellow sable
#

Why does the message say +2 Jokers when that’s not what the concept does 😭

solid salmon
#

Im stupid

mellow sable
#

Also why are you forcing a rare/epic joker

solid salmon
#

do you want it to be a rare

#

or just a random rarity?

mellow sable
#

Random

solid salmon
#

ok

mellow sable
#

That was my idea

#

Maybe you could make it uncommon or higher but it just spawning a random rare (epic with Cryptid) is kinda stupid

#

But this is the stupid mod

#

So it’s up to you

solid salmon
#

imma stick to your version

regal shoal
#

And you may want to hover errors that shows up in VSCode and try to learn what you're doing incorrectly to make your code cleaner and working !

mellow sable
#

What you should do to implement is modify add_to_deck to replace the Joker when it is created

#

_card = create_card('Joker', G.jokers, nil, nil, nil, nil, nil, 'cry_vermillion_virus_gen')
                G.jokers.cards[idx]:remove_from_deck()
                _card:add_to_deck()
                _card:start_materialize()
                G.jokers.cards[idx] = _card
                _card:set_card_area(G.jokers)
                G.jokers:set_ranks()
                G.jokers:align_cards()
solid salmon
#

i had a stroke

mellow sable
#

Here is a similar section of code from Cryptid, only difference is you’re replacing card instead of G.jokers.cards[idx] and you should use a different name for the RNG (instead of cry_vermillion_virus_gen)

regal shoal
#

How does a '.toml' is called ?

#

Does it needs to be at the root of the mod ?

royal ether
#

either root or in the lovely folder i believe

mellow sable
#

Either in Mods/Mod/lovely.toml or Mods/Mod/lovely/*.toml

#

Where Mod is your mod name

regal shoal
#

Ty !

mellow sable
#

Cryptid uses both if you want to see an example

#

yw!

solid salmon
#

so you want me to replace the card code with yours

mellow sable
#

Basically

#

You don’t need to use calculate though, it should be in the add_to_deck function

solid salmon
#

ok

#

but replace

mellow sable
#
add_to_deck = function(self, card, from_debuff)

end
#

In this function

mellow sable
#

Also you don’t need to check the context

solid salmon
#

remove context

mellow sable
#

Just do the card eval status text and use this code

#

gtg now

solid salmon
#

ok

crisp coral
#

bye math

solid salmon
#

that was helpful

#

just one more simple assist please

#

how do i close the {

regal shoal
#

Does the modifications you're doing in a ".toml" file appear in the lovely/dump/ folder ? Because if it does, I'm clearly doing something wrong

crisp coral
#

i'll let you figure it out

regal shoal
crisp coral
#

unless you specify not to dump_lua

regal shoal
#

I do not

#
dump_lua = true

As clear as it can be

crisp coral
#

lol, just in case

royal ether
#

might be a regex pattern issue then

crisp coral
#

can you show your patch?

regal shoal
#

Yes !

zealous glen
#

Did you specify the folder the file is in?

regal shoal
#
[[patches]]
[patches.pattern]
target = 'main.lua'
pattern = "local rank_name_mapping = {}"
position = 'after'
match_indent = true
payload = '''
local mjst_joker_id = nil
'''

That's only one of the four

zealous glen
#

Also the pattern needs to match the whole line

crisp coral
#

oh hm

regal shoal
zealous glen
crisp coral
#

this one doesn't work because that code you're trying to patch comes from Steamodded's lovely patch

regal shoal
#

Do I need to change the priority then ?

#
[manifest]
version = "1.0.0"
dump_lua = true
priority = 0
crisp coral
#

try adding overwrite = true?

#

i don't know too much about lovely

zealous glen
#

I’m not sure you can patch a patch

regal shoal
#

Ok I'll try that and see

solid salmon
#

Problem solved

royal ether
#

maybe just try patching a line thats in the same area but not in a smods patch

#

unless the entire thing is a smods patch

regal shoal
#

I'll try changing the priority

royal ether
#

i see

obsidian notch
#

Having a bit of trouble updating my mod to steamodded 1.0. Reassigning the atlas of the planet works, but the renamed loc_txt is showing up blank

#

I feel like I'm missing something obvious

crisp coral
obsidian notch
#

Looks like this.

crisp coral
#

you need to add the description most likely

#

copy it over from the localization file

obsidian notch
#

Ah, I see, I'll give that a shot.

outer hedge
#

will this work to add a deck with a enternal madness and riff-raff?

    object_type = "Back",
    name = "Insanity Deck",
    key = "insanity",
    config = {
        jokers = {
            {id = 'j_madness', eternal = true},
            {id = 'j_riff_raff', eternal = true}
        }
    },
    pos = {x = 0, y = 0},
    loc_txt = {
        name = "Insanity Deck",
        text = {
            "Start with an eternal {C:attention}Madness Joker{} and eternal {C:attention}Riff-Raff{}"
        }
    },
    atlas = "budget_decks"
}

local deck_sprites = {
    object_type = "Atlas",
    key = "budget_decks",
    
    path = "decks.png",
    px = 71,
    py = 95
}```
regal shoal
#

Ok just for information, I found my mistake,
my mod is in "Balatro/Mods/Modpack/MyMod/main.lua" and Steamodded doesn't seems to look from a relative path so my "lovely.toml" in "Balatro/Mods/Modpack/MyMod/lovely/lovely.toml" wasn't called

#

Now my mod is in "Balatro/Mods/MyMod" and it's working fine

crisp coral
#

oh yeah that's a Lovely quirk

regal shoal
#

Ty for help, Now i'll try to see if I achieve to apply my patch on a patch :/

night pagoda
#

trying to make fluorescent shader attempt 3

#

some jokers got eaten (shader is too hungry)

solemn coral
#

Having some difficulty trying to set up a booster pack

table.insert(stuffToAdd, {
    object_type = "Center",
    prefix = 'p',
    key = 'gatitoPack',
    name = "Gatito Pack",
    weight = 3000,
    kind = "Gatito",
    cost = 1,
    discovered = true,
    alerted = true,
    set = "Booster",
    atlas = "jokers",
    config = {extra = 4, choose = 1},
    loc_text = {
        name = "Gatito Pack",
        text = {
            "Choose {C:attention}1{} of up to",
            "{C:attention}4{C:joker} Gatito{} cards"
        }
    }
})```
#

I feel like I've gotten this somewhat right, but every time I mouse over the pack, it gives me an attempted to index a nil value in the localize function.

outer hedge
#
    key = "insanity",
    name = "Insanity Deck",
    loc_txt = {
        name = "Insanity Deck",
        text = {
            "Start with an eternal","and negative {C:attention}Madness Joker{}","and an eternal","and negative {C:attention}Riff-Raff{}"
        }
    },
    pos = {x = 0, y = 0},
    discovered = true,
    unlocked = true,
    config = {
        consumables = {},
        starting_jokers = {
            {key = "Madness", eternal = true, negative = true},
            {key = "Riff-Raff", eternal = true, negative = true},
        }
    },
    atlas = "budget_decks"
}

SMODS.Atlas {
    key = "budget_decks",
    path = "decks.png",
    px = 71,
    py = 95
}```
obsidian notch
#

only thing I can't quite crack is changing the labels (ie "Dwarf Planet", "Planet?"), but that can wait.

zealous glen
obsidian notch
solid salmon
#

Look at these fusion jokers from Marie

obsidian notch
#

It's possible you can still directly access loc_text.name in code, but ig using a localization file is cleaner.

zealous glen
#

I think you can but it's recommended to do it inside a specific function

obsidian notch
#

process_loc_text perhaps yeah

outer hedge
zealous glen
#

look at vanilla for the right keys

outer hedge
# zealous glen wrong keys probably

i used the keys from the card.lua file and they're still not added

            {key = 'Madness', eternal = true, negative = true},
            {key = 'Riff-raff', eternal = true, negative = true},
        }```
zealous glen
#

Those are names

#

I find it easier to peruse the localization files

outer hedge
zealous glen
#

probably

outer hedge
#

still didn't work

regal shoal
#

Success ! (It's not sorted anymore but that's an easy fix)

long gust
#

Why are they in that order

zealous glen
#

pairs?

fair inlet
#

Buffon packs đŸ€”

regal shoal
#

I added 150 ranks and made it just one in the UI but by doing so I've destroyed stuff

regal shoal
fair inlet
#

all good

royal ether
#

nice!

regal shoal
#

I haven't changed the preview and it's what it looked like before :

#

And it was laggy af

night pagoda
#

fluorescent edition is a fun one gameplay-wise

royal ether
#

cool.....

night pagoda
#

Cannot!

mellow sable
#

Woah

night pagoda
wintry solar
solid salmon
#

.

#

i'll try to figure it out myself

solid salmon
#

how do i make rng manipulation

sharp light
#

If I want to start modding this game (having 0 prior knowledge to modding) where would I begin to learn?

fallen tendon
#

Learn lua

#

Then learn steamodded

#

Then reference other mods and the games source code (very important) to code your jokers and other stuff

sharp light
#

Awesome thanks!

unkempt ridge
#

Trying to start out simple, how do we add a joker that gives flat +mult and a joker that gives flat +chips?

#

Using 1.0.0 Steamodded

fallen tendon
fallen tendon
unkempt ridge
#

trying to wrap my head around this in card.lua
so for base joker it pulls from loc_vars whichhh I'm assuming is the same vars found in game.lua?
meanwhile mods from others (TWEWY, Cryptid, Bettmas) have all sorts of different ways they add jokers...
What's all this about SMODS-

#

fwiw I have very little lua knowledge and basic coding-

mellow sable
#

Cryptid is not really the best example as I use my own wrapper around the Steamodded API to enable/disable items when loaded

#

Are you using Steamodded 0.9.8 or 1.0.0?

unkempt ridge
#

Steamodded 1.0.0 over here

#

Idea is to make different tiered jokers, like an uncommon sly joker or a common stuntsman. Throw em into the pool and see what happens-

mellow sable
near ivy
# night pagoda

flourescent is very cool, but it might be better if the darkened bits were made transparent

narrow pollen
#

i had a concept
Name: Metal Fool's Cap
Effect: All played 6 and 4 cards become Steel when scored.

unkempt ridge
#

welp it loads to title screen now so we're getting somewhere-
now to find out how to actually make it work

stray warren
#

No monospace hurts my brain

edgy reef
#

The font is peak wdym

unkempt ridge
#

font dont matter jus if the joker works
and it doesnt still so-

stray warren
#

I like the font, just not for code

unkempt ridge
sly forge
#

that's good- I was just asking in case you were completely new to coding. Try looking at SDM0's stuff, each joker there is added directly

#

that should get you started. code should look like just SMODS.Joker{...}

unkempt ridge
#

Where's SDM0's stuff?
We sort of are figuring the SMODS.Joker thing out, we just don't know how to make it actually appear in the collection

stray warren
#

if you register the jokers, they should appear in the collection automatically

sly forge
#

to be precise: SMODS.Joker{...} doesn't just define the joker, it automatically adds the joker into the game

sly forge
#

can link SDM0

unkempt ridge
#

HE EXISTS

sly forge
unkempt ridge
sly forge
tepid egret
#

btw when is the steamodded alpha going to be a release, ive had multiple people complain about how its confusing when i told them to download my mod

#

bcoz the readme is shite

fast badge
#

soon

#

Aure just wants to finish the docs, mostly

tepid egret
#

cool

#

i realise my message was a bit rude, didnt mean to be pushy, appreciate the work everyone does here <3

fast badge
#

All good ^^

frosty dock
#

also just ironing things out and adding things we can't do down the line because they're breaking changes, such as most recently the update to pools

fast badge
#

đŸ€“â˜đŸ»

maiden phoenix
zealous glen
#

Does anyone know how bosses are determined? I made a patch to force get_new_boss to give me Showdown Blinds but after the first two it stopped working

#

That might be because I rerolled the boss

#

But I started a new run and it didn’t work either

#

Also I think the ante 1 boss is determined separately

crisp coral
#

rerolling shouldn't affect boss rotation?

queen scroll
#

hey does anyone know how to cause a game over at any state during the game, not just at the end of a round?

brisk quartz
#

if you sell it you instantly get a game over

queen scroll
#

ok cool lemme check

#

oh easy works perfectly

#

thanks!

zealous glen
#

Oops I pinged

crisp coral
crisp coral
zealous glen
#

Wait, I think I understand. I always add the showdown bosses to the pool, but I didn’t remove normal bosses from the pool.

#

I think that’s what I did now that I thought about it. I’ll check later

tepid egret
#

has anybody here encountered this? is this caused by setting incorrect resolution? it doesnt happen to me but for somebody else its fucked

royal ether
#

you need 1px transparent border

#

around your voucher sprite

#

i believe thats the issue

#

it happens when pixel smoothing is on? i think?

tepid egret
#

aha! thanks a lot

cosmic kernel
#

Anyone have any idea where I can find the function randomizing the main menu card ? I want it to display a random joker on every launch.
I can't find it in the source code !
thanks a lot

regal wolf
#

Look at Brainstorm mod older versions

rough furnace
#

Does anyone know off the top of their head if I can find what card area a card is in without going through every card area and checking if the card is in it?

regal wolf
#

I alter the card on main menu in there

royal ether
#

yea its usually card.area

rough furnace
#

Oh

#

I may not be smart

royal ether
#

i think there can technically be edge cases where a card is in an area, but card.area is a different area

#

but those should really only be happening in modded card areas that are incorrectly implemented

#

(because cardarea:emplace(card) doesnt set card.area to the cardarea you just emplaced to)

#

wait

#

it does nvm

crisp coral
#

lmao

royal ether
#

ok i think i just misremembered oops xdd

rough furnace
#

Okay

#

Yeah I just hard coded the copy for Debug plus based off card type but this means things like shop cards go to their respective slots, and then some things like boosters don't work, and then I was thinking playing cards in shop might crash the game so I was thinking maybe there's a better way to get the area

royal ether
#

does anyone know how the particle system works

#

i just wanna make a square that moves from one point to another

crisp coral
#

the particle system is something i've never touched

royal ether
#

oh gog...

crisp coral
#

you're up first

rough furnace
#

If it's anything like the ui system, my condolences

royal ether
#

my end goal is a square that moves on an arc... oh go.g...

#

i have to learn math ...

rough furnace
#

Sin wave

crisp coral
wild gyro
#

what

royal ether
#

reference to a banger

crisp coral
#

execution

#

đŸ”„

wild gyro
#

i'm mildly concerned

rough furnace
wild gyro
#

i always have been, just thought that now was as good a time as any to mention it

solid salmon
#

I need the basics on how to make enhancements

rough furnace
#

There was an example one somewhere

#

Maybe steamodded 1.0 has an api for it now?

fallen tendon
#

It does

#

SMODS.Enhancement

#

You can find the params by looking in core/game_object.lua in steamodded

#

And then ctrl f for enhancement

royal ether
#

chat does alpha=1 mean its transparent or opaque

#

actually lemme just test it

#

alright according to my scientific method, alpha=1 is transparent, and alpha=0 is transparent

#

(i think im doing something wrong)

rough furnace
#

Try alpha 0.5

royal ether
#

also transparent

#

i think im just not defining something correctly

rough furnace
#

I've have concluded that it's always transparent

royal ether
#

true!

solid salmon
#

The thing is how do I stop cards from being changeable (rank+suit)?

fallen tendon
#

Patch the functions that change rank and suit?

fallen tendon
#

Not sure where it is

royal ether
#

i just realized im the use case for bounding rects, holy moly

fallen tendon
#

Just like stop it from working if your desired condition is met with an if statement

royal ether
solid salmon
#

Let me just tell you that I have no idea what's happening

royal ether
#

there are not one, not two, not three, but FOUR red squiggly lines

solid salmon
#

YES I KNOW THAT

royal ether
#

there are also two red curly brackets

solid salmon
#

I haven't put in the function yet

royal ether
#

ok

#

you can figure this out man i believe in you

solid salmon
#

how do i fix the squiggly lines?

#

I used the same stuff as a joker and apparently there's no problem with it

#

i gotta change the text

#

yeah so inside the games code where could i find the red seal?

royal ether
#

yippee! green square! dunno why the bounding rect is incorrect tho

crisp coral
#

GREEN SQUARE!!!

solid salmon
#

GREEN SQUARE!!!

solid salmon
limpid flint
#

Uh oh

solid salmon
#

I didn't ping

fallen tendon
#

Most things in the game are those two

royal ether
#

red seal MIGHT be in state_events.lua

#

which is kinda complicated

solid salmon
#

MAN

royal ether
#

nvm theres a calculate_seals function in card.lua

crisp coral
#

Card:calculate_seal(context)

solid salmon
#

But im making an enhancement

crisp coral
#

then why did you ask for seal

#

lol

solid salmon
#

i just remebered that red seal isn't the only thing that can retrigger

fallen tendon
#

Yeah, an enhancement can prob trigger

#

I believe the enhancement api lets you hook onto eval_card if im not mistaken

royal ether
#

oh my god i have to do vector math

crisp coral
#

LMAO

#

o7

fallen tendon
#

Poor you

fallen tendon
#

The enhancement api lets you add your enhancement to it

solid salmon
#

do i add it like eval_card_function

fallen tendon
#

No

#

Its a calculate like the jokers

#

Also the calculate seal is just a subfunction of eval card so all the things done there should work for enhancements

quasi kettle
#

is there a way to modify the amount of chips that a card scores once? (To get a 10 to score as 5 but not have it be permanent)

#

my current solution isnt really elegant since you see two separate chip messages

solid salmon
fallen tendon
#

Its not self,card,context though

#

Its self,context,effect

solid salmon
#

ok

#

next is if...then right?

fallen tendon
#

No

#

Just the red seal effect

#

For the immutability effect, that one is quite a bit harder though

#

You would have to do a lovley patch to set_base in card.lua

#

A bit if then that takes up the whole function that only lets it play out if the card isnt laminated

solid salmon
#

ok

#

this is what i got out of the red seal function tho

#

also this

fallen tendon
#

That is uhhhh not it

fallen tendon
#

The return

solid salmon
#

oh

fallen tendon
#

Just use the entire return

solid salmon
#

ok

#

is this right

fallen tendon
#

Yeah

#

Now for the lovey patch suffering

solid salmon
#

excuse me

#

im done

#

now how do i patch it PROPERLY

fallen tendon
#

Look at the toml files of mods

#

They have the oath of the file where the patching is being done

#

The pattern, which is used to identify the patch region

#

The position, which is before, after, or at (replace)

#

And then the code you are adding

solid salmon
#

good god

fallen tendon
#

Just look at toml files for the formatting

#

Also # starts a comment

solid salmon
#

ok

fallen tendon
#

The toml must be called lovely.toml or in a folder called lovely

#

Id reccomend the latter as its easier to organize

solid salmon
#

I found betmmas

#

but ot's a full on yap session

#

that's how long it is

fallen tendon
#

Cryptid also has toml files

solid salmon
#

i don't have it

fallen tendon
#

Theres more but they are more concise

fallen tendon
solid salmon
#

ok

#

i found cryptid

crisp coral
# solid salmon

holy shit open the game's source code in visual studio code please

wintry solar
#

It’s probably easier to wait for enhancement calculation to be implemented properly

royal ether
crisp coral
#

holy shit...

solid salmon
#

i stole a patch

#

i shouldn't let marie cook

frosty dock
#

that's cursed

crisp coral
#

maybe because it's posted in their lua file LMAO

gilded blaze
#

bruh

fallen tendon
#

Also you arent patching eval_card

#

You are patching set_base

#

And making it not trigger of the card is laminated

royal ether
#

my dumb ass just searched up "find hypotenuse from 2 sides" (the answer is pythagoras) (4th grade math)

solid salmon
fallen tendon
#

Ok, make the actual patch now

solid salmon
#

apparently mathisfun said that the thing isn't supposed to be a patch

#

he said it was supposed to be something like this

#

v

royal ether
solid salmon
royal ether
#

yippee!

solid salmon
royal ether
#

sorry ignore that

#

:3

#

i was frustrated because of math

#

(i thought math.arctan would only return positive numbers but it was doing negative sometimes)

#

now i have to figure out how to move things in an arc... oh gog...

fallen tendon
#

Its kinda similar to a patch but different

solid salmon
#

ok

fallen tendon
#

Just replace all the placeholders

solid salmon
#

what

fallen tendon
#

Theres a ton of placeholder values

solid salmon
#

oh

#

xyz

fallen tendon
#

You have to replace them with information from the functious you are overriding

#

Also class.function

#

And class:function

#

Then you have to basically rewrite the function

#

Well not exactly

#

I think theres a technique where you can add your code at the start or end of the function

wintry solar
#

Yes

#

It depends where you call the original

fallen tendon
#

By saving the function to a variable before the override and then inserting it inside the override

fallen tendon
#

You could probably stop the function from happening by putting a return before the original function

fallen tendon
zealous glen
#

or you can just override the original

solid salmon
#

one at a time please

wintry solar
#

You are a saint, alex

solid salmon
unborn nexus
royal ether
unborn nexus
#

alright, thanks for the help

solid salmon
#

Elaborate on hooking

#

(via example)

fallen tendon
#

Imagine you want to stuff some code at the end of eval_card

solid salmon
#

like how i want it to retrigger but ranks and suits cannot be changed

fallen tendon
#

You would do

local temp_variable = Card.eval_card
function Card:eval_card(card, context, effect)
   some code
   return temp_variable
end
#

Well thos kind puts it at the beginning lol

#

But its fine

#

Thats what youre going for

#

What you want to do with your hooks is to end it prematurely with a return if the card is laminated

fallen tendon
royal ether
#

its return temp_variable(self, card, context, effect), but yea

fallen tendon
#

Cant look at the source code

royal ether
#

all g

fallen tendon
#

Seal hooks into set_seal

fallen tendon
#

No

#

You are ADDING CODE

#

this is directly inserting your code into the base games code to obtain desired functionality

solid salmon
#

so I have to make it a patch?

fallen tendon
#

Patches give you more functionality

#

You can insert anywhere

#

But hooks are good for the start or end of a function

#

You need the start here

solid salmon
#

ok

#

start with a hook

fallen tendon
#

Just change the functions to the functions that you need

#

And change the arguments to match

#

Then add the code

solid salmon
#

eval card is the one that's in the game right?

fallen tendon
#

Yeah

#

BUT YOU ARENT HOOKING IT

#

HOOK SET_BASE

#

CHANGE_SUIT

#

AND SET_SEAL

#

please

solid salmon
#

I would do that if I understood what is a "hook"

solid salmon
frosty dock
#

basically you replace a function with something else while calling the original function somewhere inside

solid salmon
#

what do I write to replace it

frosty dock
#

this means adding code before or after the function and/or modifying the return value

fallen tendon
solid salmon
#

alright I get it

fallen tendon
#

Ok

#

Now for what do you write

#

Use your head

#

Is there some property of a card that can tell me its edition?

solid salmon
#

wait

wintry solar
#

Card.edition.type

solid salmon
#

I need to breathe for a moment

#

Im back

#

as for the actual enhancement itself

#

how's it looking

wintry solar
#

It looks like you have no idea how to use an api 👍

fallen tendon
#

Oh no

#

Also the entirety of the text is on one line

solid salmon
fallen tendon
#

Get rid of = SMODS.Center:extend

solid salmon
#

ok

#

next?

wintry solar
#

Honestly my suggestion is to go and read a load of code and understand it before trying your own

fallen tendon
#

Please seperate your text into multiple lines

fallen tendon
#

Put a comma after each one (except for the last one)

wintry solar
#

If you need people to spell out every single step you don’t have a good enough base understanding to work from

solid salmon
#

imma check out how gold made their enhancments

#

welp that was a waste of time

fallen tendon
#

I think sdm’s stuff has some examples of hooks

#

MAKE SURE YOU USE THE 1.0.0 BRANCH

rough furnace
royal ether
#

balamod's console

rough furnace
#

Oh Intresting

#

I've been thinking about making a console

#

Good to know someone made one already

royal ether
#

balamod console is highkey the best reason to use it

#

makes development so much easier

frosty dock
#

time to steal take inspiration from that

rough furnace
#

Does it let you run code?

#

I also wanted to do that

#

I probably would've made a console by now if it wasn't for lovely's

solid salmon
frosty dock
#

no, these are API functions

solid salmon
#

where do they keep the hooks

royal ether
#

but its usually for debug anyways so it doesnt really matter

#

i mean, technically you can write more lines if you use semicolons

fallen tendon
solid salmon
#

that's what i was trying

fallen tendon
#

The code is not gonna be in a table

#

Find a pattern that looks similar in the top scope

solid salmon
#

i think i found it

royal ether
#

im pretty sure those are just normal functions rather than hooks

solid salmon
#

AAAAAAAAAAAAAAAAAAAAAAAA

fallen tendon
#

Ill give you a hint

#

Hooks are sinetimes called overrides

solid salmon
#

i think i know where it is

mellow sable
#

What I was showing you before is basically a hook

solid salmon
#

ok

#

I can feel my will to mod drain

#

WHY IS IT RED?

fallen tendon
#

Your if statement is missing a then and end

#

Laminated is a string

#

Make sure its in the top scope pleaeeeease

#

Arguments need to be edited

#

First function needs arguments and the others need arguments that are from the source function

#

Also uhhhh you arent patching eval card

#

YOU ARE PATCHING SET_BASE CHANGE_SUIT AND SET_SEAL

wintry solar
#

Alex you are sounding less like a saint now

fallen tendon
#

Im sorry

#

I just have no patience

#

Anymore

#

He has depleted my saintliness

solid salmon
#

For the sake of everyones sanity

#

imma stop

mellow sable
#

AI gen goku you should look up a Lua tutorial

#

And learn the syntax

#

And if you get red lines you should listen to them

wintry solar
#

Have you done any coding before?

solid salmon
#

the jokers

#

but besides that nope

wintry solar
#

At all?

hallow forge
#

does steamodded support custom enhancements now?

solid salmon
#

nope

wintry solar
dim steeple
#

Time to learn some lua bro, you're effectively asking people to make your mod for you using step by step pictures

wintry solar
solid salmon
#

ok

hallow forge
#

does that include seals

wintry solar
#

Seals are not enhancements

fallen tendon
#

Not yet

wintry solar
#

But I’m pretty sure seals are already in too

hallow forge
#

oh

wintry solar
#

I’m not sure what functionality is there

#

But you can create them for the collection at least

hallow forge
#

can you apply them to cards?

wintry solar
#

Probably, I’ve not tried though

hallow forge
#

that's like pretty crucial

fallen tendon
#

I think so

hallow forge
#

k ty

unkempt ridge
#

alright so our lil brain cant figure out how SMODS.Atlas works, but we know there's a key, size, path, etc...
Do we gotta define a local as SMODS.Atlas {blahblahblah} then, put that as the pos/key in the Joker? Or

zealous glen
#

It’s calculated as multiples of px and py

#

Increasing x moves right and increasing y moves down

unkempt ridge
#

K6BD PFP
Based

#

Yeah so pos in the joker def would refer to the base sprite sheet, so how would we get it to refer to our sprite instead? We suspect using the Atlas

zealous glen
zealous glen
#

Check out some mod like Cryptid or Myst’s to see the format, I don’t remember exactly where you need to add your prefix and where you don’t

wintry solar
#

atlas = modprefix_atlaskey iirc

unkempt ridge
zealous glen
#

I have some ideas for them but not many

unkempt ridge
#

finally he exists

unkempt ridge
#

Tryna think of how we'd configure this. Basically makes cards act as wild cards? Got the smeared joker source code on the right, at least what we've found

stray warren
#

Just a question; Why are you putting their rarity in the name when it has a badge for that?

unkempt ridge
#

iunno just cuz

#

rn dont have graphics so

abstract venture
#

does anyone know a mod including a xchips joker for me to cross reference?

#

cant figure out how to multiply chips

regal wolf
#

Well how do you add chips. Then just add chips*mult.

abstract venture
#

oh good point 💀

#

just thought there was a built in thing for it

stray warren
#

How do you add a Mod Icon in steamodded 1.0.0? Like what's the register function?

solemn coral
#

I think you just register a regular atlas with key = "modicon"

solid salmon
#

I'm sorry if what I am about to ask is stupid but

#

when i put ease hands are the values able to be negative?

mellow sable
#

Yes

solemn coral
#

For a lot of simple programming questions like that, the simplest way to get an answer is usually just to try it and see what happens

solid salmon
#

yeah i did

#

and i got this

#

to calarify

solemn coral
#

Ah, okay

solid salmon
#

this is the joker

#

in question

crisp coral
#

it's ease_discard

solemn coral
#

That looks like it crashed for a different reason (you typed ease_discards instead of ease_discard)

crisp coral
#

not ease_discards

solid salmon
#

oh

#

damn

mellow sable
#

<@&1133519078540185692>

#

🔹

solid salmon
mellow sable
#

ty mods

mellow sable
solid salmon
#

oh

mellow sable
#

Had to get the ban hammer out

solid salmon
#

the 50$ thing

mellow sable
#

It was a fake Steam link

crisp coral
#

nice embed

#

LMAO

solid salmon
#

Thank god i didn't click the link

mellow sable
#

But no embed

#

Looked like a genuine gift link, led to something nefarious

solid salmon
#

is ease_joker_slots a thing

solemn coral
#

Wait why does Discord allow you do even do that?

#

I literally just took a cybersecurity class that talked about how risky those types of links are to use

mellow sable
#

Good for markdown

#

And they do warn you before clicking

stray warren
#

it shows a popup for links like that with the real address