#đŸ’»ăƒ»modding-dev

1 messages · Page 511 of 1

rocky plaza
#

@charred widget is it working or are you still crashing?

modern kindle
ocean sinew
#

how would I retransform it into tables values If talisman is enabled?

#

It works fine with Cryptid probably because Cryptid does something like that

#

but I want it to work without Cryptid installed too

modern kindle
#

that is what the note tells you

ocean sinew
#

oh got it

#

so the transform_operations should do return to_big(val) instead?

#

I'mma try that and give result

clear ocean
#

are these good

charred widget
clear ocean
charred widget
#

also @rocky plaza i'd love if you could help me code something

rocky plaza
charred widget
#

so right now this joker creates 1 negative death card each time a hand is played

#

and i want it to gain +0.1x mult for every death card you have

rocky plaza
#

in loc_txt["text"], put [3] = "Gains {X:mult,C:white}X0.1{} Mult for every"
and [4] = "{C:tarot}Death{} held in consumable slots"

#

hold on

#

so this code will count the number of deaths in consumable slots

local death_count = 0
  if G.consumeables then
      for _, c in ipairs(G.consumeables.cards) do
          if c.config.center.key == "c_death" then
              death_count = death_count + 1
          end
      end
  end
charred widget
#

alright thanks, where should i put it?

rocky plaza
long sun
#

i'm back ^^; i still need to figure out how to save something to the profile

rocky plaza
#

lemme know if anything is confusing

charred widget
#

tysm!!!!

clear ocean
#
    calculate = function(self, card, context)
        if context.before and context.main_eval then
            local text, _ = G.FUNCS.get_poker_hand_info(G.hand.highlighted)
            return {
                level_up = true,
                level_up_hand = text
            }
        end
    end,
normal crest
#

context.scoring_name

clear ocean
#

same error after adding it as additional argument in the if statement unless that's not what you meant

normal crest
#

context.scoring_name is the name of the scored hand

clear ocean
#

oh

normal crest
#

no card is highlighted in G.hand during context.before

clear ocean
#

so level_up_hand = context.scoring_name?

normal crest
#

try it, remove the call to get_poker_hand_info tho

clear ocean
#

yeah according to vscode it doesn't get used

proven adder
#

what could I put under a tarot's can_use that would check if the player has a certain joker?

long sun
#

next(SMODS.find_card('[YOUR JOKER'S KEY HERE]'))

proven adder
#

thanks

long sun
#

so for example, for Mail-In Rebate, it's:
next(SMODS.find_card('j_mail'))

#

and this value needs to be returned

proven adder
#

so something like this?

        return true```
long sun
#

you can just return that value directly, no need for the if statement

#

but ya

proven adder
#

oh ok ty

long sun
#

npnp!

clear ocean
#
    calculate = function(self, card, context)
        if context.setting_blind then
            G.E_MANAGER:add_event(Event({
                func = function()
                    SMODS.add_card {
                        set = 'Joker',
                        rarity = {1, 2, 3},
                        edition = 'e_negative',
                        key_append = 'vremade_riff_raff'
                    }
                    return true
                end
            }))
            return {
                message = localize('k_plus_joker'),
                colour = G.C.BLUE,
            }
        end
    end

any way to have the rarity from one to three, as according to vscode rarity cannot be set by a table

cursive gazelle
#

Would really appreciate some help on this one

clear ocean
#

everything else works and currently, it gives me just rare jokers

cursive gazelle
#

You can use pseudorandom

#

Or math.random()

normal crest
cursive gazelle
normal crest
#

might have to do pseudorandom_element({"Common", "Uncommon", "Rare"}, "seed")

clear ocean
#

i'll try the numbers first

normal crest
#

It'll probably give you rare jokers every time

clear ocean
#

it still does

#

the element one works 👍

distant junco
#

yo, im trying to set up the lua lsp as seen here https://github.com/nh6574/VanillaRemade/wiki#how-do-i-start-making-balatro-mods

and i made the .luarc.json with this

{
  "workspace.library": ["C:\Users\osgha\AppData\Roaming\Balatro\Mods\smods-1.0.0-beta-0711a", "C:\Users\osgha\AppData\Roaming\Balatro\Mods\lovely\dump"]
}

and its giving me this error

GitHub

Contribute to nh6574/VanillaRemade development by creating an account on GitHub.

modern kindle
#

hi srock

clear ocean
#

hi dilly

normal crest
#

hi dilly

modern kindle
#

hello ken

cursive gazelle
normal crest
#

Uh

#

Whenever you put \ make it \\

distant junco
#

oh ok

#

odd

#

like this?

distant junco
normal crest
#

My bad

distant junco
#

its alright

#

mistakes happen

copper thorn
#

poeple ! i need help ! why isn't my code updating the sprite ? (actually it's ThunderEdges code)

vestal magnet
#

but i specified it in the loc_txt???

rocky plaza
#

for context, i put crash = 1/0 to see if update() would run

copper thorn
cursive gazelle
#

If you want

normal crest
copper thorn
copper thorn
normal crest
rocky plaza
copper thorn
#

or am i already lost

rocky plaza
#

... can u send me the mod in dms?

cursive gazelle
#

@red flower can i get some help on this one

#

No one better to ask than the joyous spring

modern kindle
#

Can't just ping the guy when he ain't here
Gotta wait for him to be here

wispy sparrow
#

so i want my joker to play a sound effect once you obtain it, but it's not playing at all and i have no idea why

cursive gazelle
#

He’s online so i figured there’s no issue on pinging him

#

I tried not to

#

But i couldn’t find any help anywhere else sadly

long sun
#

i figured out saving things to the profile ^u^

normal crest
cursive gazelle
#

Cards don’t flip + no button color

primal robin
#

Who is this people who don't use monospace font in programming, crazy

normal crest
#

For the color

cursive gazelle
#

And the flip

cursive gazelle
#

And your SMODS.sound

wispy sparrow
normal crest
cursive gazelle
cursive gazelle
wispy sparrow
normal crest
cursive gazelle
#

Nope

#

I’ll try 1 sec

normal crest
cursive gazelle
#

Wait lmao

#

I didnt even notice the calculate

#

Tunnel vision

wispy sparrow
split saddle
#

How do you pick a random Joker from your held ones?

#

like in the crimson heart boss

#

I saw that it has a crimson_heart_chosen function but couldn't find the origin, but that maybe has the answer

cursive gazelle
#

G.jokers.cards

#

Or G.jokers

rocky plaza
#

oops

cursive gazelle
#

Isn’t math.random inconvenient

split saddle
#

what about pseudorandom?

split saddle
rocky plaza
#

oh does SMODS have a random func?

cursive gazelle
#

@normal crest thanks i got it working

#

Much love

cursive gazelle
rocky plaza
#

oh

#

pseudorandom("selection", 1, 5) i think according to how the function is defined would do it?

#

i mean is there really any significant reason to use pseudorandom over math.random?

#

oh i guess maybe seeded runs?

#

ah

split saddle
#

wait, there's a little bit of a problem

#

what if the joker selects itself?

#

how do you exclude it from the random pool

#

i know about the hacky solution of looping over the rng but that is most certainly not it XD

rocky plaza
#
local selected_joker = nil
if G.jokers and G.jokers.cards and #G.jokers.cards >= 1 then
  local pool = {}
  for i = 1, #G.jokers.cards do
    if G.jokers.cards[i] ~= card then
      pool[#pool + 1] = i
    end
  end
  selected_joker = G.jokers.cards[pool[pseudorandom("insert description of source here", 1, #pool)]]
end
#

yeah just get a pool of all the indices of jokers that are not itself

#

then pick a random element from that pool of indices

#

avoids the hacky solution that is technically not guaranteed to terminate

split saddle
#

cool, thanks 👍

frosty rampart
thorn furnace
#

How would I go about testing out a certain stake

#

(Under the assumption I haven't unlocked it yet)

rocky plaza
thorn furnace
#

testing the stake itself to make sure it works

#

It's more I just don't wanna have to beat like 10 stakes

frosty rampart
#

switch to a second profile and unlock all

thorn furnace
#

o

#

how do i unlock all

frosty rampart
#

profiles are in the very bottom left of the main menu, switch to a fresh profile and there should be an "unlock all" button. if there isn't, you should reset that profile first

shell timber
#

its on the profile screen once you've made it

thorn furnace
#

oh wow it's the profile I was supposed to use for modding before forgetting I had it and using my main

rocky plaza
thorn furnace
#

this is bothersome

rocky plaza
#

ah yes invisible stake, my favorite stake to play on

thorn furnace
#

oh

#

I completely forgot there was supposed to be a stake there

chrome widget
#

Is there an easy way to turn a known reference to a table into its string key? I.E. I want to get a card's area, however, rather than getting the reference to G.jokers or G.consumables, I want to get the string 'jokers' or 'consumeables' which could be used to index the global table. Is there a simpler way to do that that doesn't involve just iterating through the global table and getting the key when the table reference matches?

modern kindle
#

hi winter

chrome widget
#

Hi Dilly!!

modern kindle
#

how are you

chrome widget
#

doing decent ish?

modern kindle
#

why the ish

chrome widget
#

ehh just not my best day I guess. Most days aren't my best days but I don't have any strong, significant feeling about today

modern kindle
#

well, i hope you know youre awesome and epic

rocky plaza
normal crest
chrome widget
normal crest
#

Otherwise, you can create a table when the run starts/loads that contains references to each existing cardarea, and loop through that table rather than G

#

Assuming no mod creates cardareas after a run starts

chrome widget
#

Too risky an assumption to make

#

I don't have to worry too much since this is something that seemingly will only ever need to run once when it needs to

#

(I'm doing an SMODS pr to update the save_with_action function that's kind of underbaked in vanilla)

normal crest
#

Not worth the hassle if it's only ever gonna run once

chrome widget
#

Yeah

#

Anyway all of this is for a niche as fuck use case where I have a challenge that saves after you use any consumeable, which the base game actively avoids

rocky plaza
#

ok, quick question
is there a way to manipulate the on-screen position of a joker with code?

plucky zenith
chrome widget
#

so

#

....did you read the thing you replied to or.......

plucky zenith
#

Ahh, I guess I missed the last part of it, yes.

chrome widget
#

anyway

distant junco
#

is it possible to alter the amount of chips cards score?

#

without using the perma_bones

chrome widget
#

You can directly change card.base.nominal if you need, but it'll reset the next time Card:set_base() or related helper functions are called to the rank default

faint yacht
#

Or hook Card:get_chip_bonus().

chrome widget
#

I ended up doing both for a blind effect that makes chips score 0 base chips for the blind duration

frosty rampart
distant junco
#

basically i want cards to score a random amount of chips. i know how to do the random amount but i just dont know how to put it together.

rocky plaza
chrome widget
#
function Card:get_chip_bonus()
    if (-- condition whenever this should apply vs default behavior) then
        local old_nom = self.base.nominal
        self.base.nominal = -- put whatever your random generation is here
        local ret = ref_card_bonus(self)
        self.base.nominal = old_nom
        return ret
    end

    return ref_card_bonus(self)
end```
#

That said the description you showed doesn't reflect this

#

It says earning chips before your hand scores, which wouldn't be per card. Is this something completely different?

distant junco
chrome widget
#

No, this is a function hook. It goes wherever it can be loaded for your mod

distant junco
chrome widget
#

If that's what you want, make sure whatever causes this effect is phrased as each card scores +n base chips or w/e

split saddle
#

how do you make a random select joker start with a joker selected?

#

like how rebate does it but for jokers

#

the problem is that rebate's thing does it every round and mine should be every hand, so just copying the rebate function won't help

split saddle
rocky plaza
#

unless this joker cant appear if u dont have a joker

split saddle
#

'none' or something like that

#

this is in the collection btw

rare torrent
#

how could i make this enchancement give money based on the amount of chips this card scored? ```local diamond = SMODS.Enhancement{
key = "diamond",

loc_txt = {
    name = "Diamond",
    text = {
        "Gives {C:money}Money{} equal to the",
        "amount of {C:chips}Chips{} this card scores"
    }
},

atlas = "diamond",

config = {
    p_dollars = 1,
}

}```

sonic cedar
#

@daring fern I pushed a commit with the current safe_set_ability setup and patch. Maybe it'll be easier to work through and figure out the problem if you can see it directly?

Get back to me when you can ofc

split saddle
#

try p_dollars = card.ability.nominal + card.ability.perma_bonus although idk what is the pointer to the card inside of that context

rocky plaza
#

oh

#

i guess mail in rebate is the same kinda reset

#

hm

#

fundamentally the random selection should work the same no matter where u put it

split saddle
#

idea: implement my own reset_game_globals() that is called every hand instead

#

that sounds like a chore though

rocky plaza
#

another lazy fix is to do the random selection when bought

#

as well

#

but u dont get foresight on which joker its copying

#

also u can do a check to see if the selected joker is nil and return "None"

split saddle
rocky plaza
#

yeah

split saddle
rocky plaza
split saddle
#

haven't seen it in the shop, but presumably yes

#

it only crashes when trying to choose a joker for the first time, since it tries to get the name and all the other stuff but gets nil back

rocky plaza
#

hmm which line of code is causing the crash? is the crash-causing line in your mod?

cursive gazelle
#

How can i add an effect to every deck ingame ?

split saddle
rocky plaza
#

huh

#

theres a bug in the selection code then

split saddle
#

it's kind of weird

#

because the actual variable gets updated the line before that

#

so i'm a little confused as to why it's throwing back nil

rocky plaza
#

nvm

normal crest
split saddle
rocky plaza
split saddle
#

tested it with more jokers and it did work so that's most likely the culprit

rocky plaza
#

yeah u need to have a nil check then

cursive gazelle
#

I’ve added a flip and a flip all button based on how many cards highlighted, problem is i want to make it into an enhancement now and idk how to code it to update LOL

split saddle
#

or rather, don't run that part if there are no jokers

#

that sounds more efficient probably

rocky plaza
#

so like
get random joker
see if it is nil
if it is nil then return early
else
do everything else

snow breach
#
Thread error (Thread: 0x0209b3f97040)

engine/sound_manager.lua:62: Could not read Ogg bitstream
stack traceback:
[C]: in function 'newDecoder'
engine/sound_manager.lua:62: in function 'PLAY_SOUND'
engine/sound_manager.lua:197: in main chunk

Additional Context:
Balatro Version: 1.0.1o-FULL
Modded Version: 1.0.0~BETA-0706c-STEAMODDED
LÖVE Version: 11.5.0
Lovely Version: 0.8.0
Platform: Windows
Steamodded Mods:
    1: Talisman by MathIsFun_, Mathguy24, jenwalter666, cg-223 [ID: Talisman, Version: 2.2.0c, Uses Lovely]
        Break Infinity: omeganum
    2: Galdur by Eremel_ [ID: galdur, Priority: -10000, Version: 1.2, Uses Lovely]
    3: Mod of Theseus by Mothball [ID: Mod_of_Theseus, Version: 0.0.3-alpha]
    4: Handy by SleepyG11 [ID: Handy, Version: 1.4.1a, Uses Lovely]
    5: DebugPlus by WilsontheWolf [ID: DebugPlus, Version: 1.5.0~dev, Uses Lovely]
    6: Blueprint by stupxd aka stupid, Jonathan [ID: blueprint, Priority: 69, Version: 3.2, Uses Lovely]
Lovely Mods:
    1: Trance

Stack Traceback
===============
(3) LÖVE function at file 'boot.lua:352' (best guess)
Local variables:
 errhand = Lua function '(LÖVE Function)' (defined at line 579 of chunk [lovely debugplus.console "debugplus/console.lua"])
 handler = Lua function '(LÖVE Function)' (defined at line 579 of chunk [lovely debugplus.console "debugplus/console.lua"])
(4) upvalue C function 'error'
(5) LÖVE function at file 'callbacks.lua:181' (best guess)
Local variables:
 t = Thread: 0x0209b3f97040
 err = string: "engine/sound_manager.lua:62: Could not read Ogg bitstream\
stack traceback:\
\9[C]: in function 'newDecoder'\
\9engine/sound_manager.lua:62: in function 'PLAY_SOUND'\
\9engine/sound_manager.lua:197: in main chunk"
(6) Lua function '?' at file 'main.lua:926' (best guess)
Local variables:
 _n = nil
 _a = nil
 _b = nil
 _c = nil
 _d = nil
 _e = nil
 _f = nil
 touched = nil
 (for generator) = C function: 0x2c3f7438
 (for state) = nil
 (for control) = string: "threaderror"
 name = string: "threaderror"
 a = Thread: 0x0209b3f97040
 b = string: "engine/sound_manager.lua:62: Could not read Ogg bitstream\
stack traceback:\
\9[C]: in function 'newDecoder'\
\9engine/sound_manager.lua:62: in function 'PLAY_SOUND'\
\9engine/sound_manager.lua:197: in main chunk"
 c = nil
 d = nil
 e = nil
 f = nil
(7) global C function 'xpcall'
(8) LÖVE function at file 'boot.lua:377' (best guess)
Local variables:
 func = Lua function '?' (defined at line 909 of chunk main.lua)
 inerror = boolean: true
 deferErrhand = Lua function '(LÖVE Function)' (defined at line 348 of chunk [love "boot.lua"])
 earlyinit = Lua function '(LÖVE Function)' (defined at line 355 of chunk [love "boot.lua"])

Any ideas?

#

I was hoping that would turn into a text file, oof

rapid stag
#

bump

cursive gazelle
#

I think handy has plenty

cursive gazelle
#

Finally

#

I made it work

#

💔 it took one line

rocky plaza
snow breach
split saddle
rocky plaza
#

hm?

split saddle
#

the solution was there the whole time

#

it was 1 before

rocky plaza
#

ah

#

well that would guarantee there is a joker to copy

split saddle
rocky plaza
#

i think we would still need to account for when you have 2 of these and only two of these

rocky plaza
snow breach
#

We may have got it working

rocky plaza
#

oh

snow breach
#

Nope

rocky plaza
#

different crash message or the same one?

snow breach
#

randomHit() is a function that pulls a random hit sound effect from our files

rocky plaza
#

so ur sure that randomHit() returns a string like "strong1"

snow breach
rocky plaza
#

also is that the only sound that doesnt work or do all custom sounds not work

snow breach
#

It works

rocky plaza
#

so its not crashing anymore?

snow breach
#

Yup

rocky plaza
#

huh

#

im curious as to what u changed

rotund sable
#

Hello chat o/

split saddle
#

idk i just linked to what @cursive gazelle said ||(sorry for ping xd)||

rocky plaza
# rapid stag

real quick, what are you trying to do with the keybind?

trail tide
#

How do i destroy all played face cards after scoring? I'm new to modding balatro so I feel i will be asking a lot of questions here

rocky plaza
#

Card:is_face() checks if a card is a face card

#

SMODS.destroy_cards(cards) destroys the given cards

split saddle
#

How do you do a mod config option?

cursive gazelle
split saddle
#

is it like the UI stuff? oof

normal crest
#

very shrimple

#

create a config.lua file in which you return a table, like return { my_setting = true }

#

then you can access it in the code by doing SMODS.current_mod.config.my_setting (if during loading stage) or SMODS.Mods.your_mod_id.config.my_setting (outside of loading)

#

many people make a global variable that's just their mod id to access it more easily

#

like CardSleeves = SMODS.current_mod during loading

#

then you'd do CardSleeves.config.my_setting

#

for the ui you can do

SMODS.current_mod.config_tab = function()
  return {
    n = G.UIT.ROOT,
    nodes = {
      create_toggle {
        label = "hi",
        ref_table = YourGlobalVariable.config,
        ref_value = 'my_setting'
      }
    }
  }
end

assuming you went with the global variable way

versed swan
#

How do you make something run only immediately after the game finishes loading?

split saddle
normal crest
#

ui looks scary cus there are a lot of config values to make it look good

#

the ui code I sent won't look good I imagine

#

but at least it's simple to understand

split saddle
normal crest
#

label is the text that would be shown next to the toggle
YourGlobalVariable refers to doing YourGlobalVariable = SMODS.current_mod near the top of your main file
'my_setting' is the key of a setting returned from config.lua

#

also there are other ui elements for configs, not just toggles for booleans, i'm not familiar with the others tho

rare torrent
split saddle
#

idk then. i was kinda just guessing bc i haven't done anything with enhancements

normal crest
rare torrent
normal crest
#

when the card with the enhancement scores?

rare torrent
#

yeah

normal crest
#
calculate = function(self, card, context)
    if context.main_scoring and context.cardarea == G.play and not SMODS.has_no_rank(card) then
        return { dollars = card.base.nominal } 
    end
end

should be smt like this, without your config

rare torrent
#

that works perfectly, thank you!

split saddle
#

return {dollars = card.base.nominal + card.ability.perma_bonus}

normal crest
#

if you want that, replace card.base.nominal with card:get_chip_bonus()

modern kindle
#

i made a dastardly misread there which made me do a violent double take

modern kindle
#

lets walk through it together, what else could start with 'hi' and end with 'er' that someone who only glanced could see

modern kindle
#

i was just sitting ehre listening to music and playing and then glanced over cause i saw a message appear and saw that lmao

modern kindle
#

so true

cursive gazelle
#

Can you help me rephrase this

#

“This card can see beyond what you can see “

slim ferry
#

what is that even SUPPOSED to mean

cursive gazelle
#

Working on something

rocky plaza
cursive gazelle
#

I’m not sure what effect i should associate with them

#

My ideas aren’t organized yet

velvet verge
#

Hi, today I installed the Balatro Mod Manager and it keeps loading mods all the time. Why could that be?

#

I've already reinstalled it 3 times

cursive gazelle
#

I wish i was good at art as i am in coding

rocky plaza
cursive gazelle
#

The cards

split saddle
#

i was told a while ago that quantum enhancements are broken, is that still the case?

rocky plaza
#

joker cards, tarot cards, spectrals, or a new kind of consumable?

split saddle
#

don't work

cursive gazelle
#

I can technically either make a shader and make it an enhancement or make it an enhancement (which i already did for testing )

normal crest
cursive gazelle
normal crest
#

where did you hear this

modern kindle
#

yea as far as ive known they havent been broken

split saddle
#

someone told me this here

rocky plaza
split saddle
#

but it was a bit long ago already

cursive gazelle
#

“This card perceives what lies beyond your vision.”

#

I feel like this is a little vague

rocky plaza
#

otherwise it feels like flavor text

cursive gazelle
#

Anyways i’ll post a video of the mechanics tomorrow since its mind night i might aswell post a documentation on how to add buttons to cards and hook functions to them

split saddle
cursive gazelle
#

When it comes to comments

rocky plaza
chrome widget
#

Absolutely don't do that, it will cause an infinite loop and crash the game

maiden phoenix
chrome widget
#

It's likely you just never set it to be enabled yeah

split saddle
#

where do you do that?

chrome widget
#

SMODS.optional_features.quantum_enhancements = true

#

I just put it at the top of my main file

rocky plaza
#

hold on what exactly does quantum_enhancements do?

split saddle
#

it should be on by default....

maiden phoenix
#

It makes enhancements count as others

maiden phoenix
#

The more cards you have the laggier it gets for some

cursive gazelle
maiden phoenix
#

(or that was fixed idk)

split saddle
#

in this case, gold and stone

chrome widget
maiden phoenix
rocky plaza
maiden phoenix
#

You could make a Joker do that, but it doesn't impact vanilla Jokers

chrome widget
#

No

rocky plaza
#

what do u mean by temporary enhancements

chrome widget
#

That's how it works under the hood

maiden phoenix
#

It's mostly used for jokers that goes "Steel cards counts as Gold cards"

#

for example

rocky plaza
#

oooohhhhhh

#

ok i get it

chrome widget
#

With quantum enhancements enabled, whenever enhancements would score, it sends a context to all valid receivers (context.check_enhancement) which can then send back keys of enhancements for the current card to also be counted as. Then, during the scoring step, it saves the card's actual enhancement and values, then temporarily uses set_ability with each of the provided keys, scores it as that new enhancement, and then returns the original enhancement and values

#

So cards do not have permanent values set by their quantum enhancements. The others only exist as long as they're needed for scoring, then removed

rocky plaza
#

is there documentation available for quantum enhancements that i can read?

split saddle
chrome widget
#

It's on the wiki, in the current calculate functions page. It has a thing for check_enhancements though a better version of it is on the way

split saddle
#

why did it record like that :(

rocky plaza
#

real quick, how would i use context.check_enhancement to treat all played mult cards as bonus cards for instance?

maiden phoenix
cursive gazelle
rocky plaza
#

ah

maiden phoenix
cursive gazelle
#

Since you can’t have multiple enhancements

#

At the same time

maiden phoenix
slim ferry
#

you can with quantum enhancements

maiden phoenix
#

It's what we've been talking about for the last 5 mins lol

cursive gazelle
#

You can do anything if you can spare the time and effort

slim ferry
#

what??

hidden sable
slim ferry
hidden sable
faint yacht
#

Literally the backbone of this deck.

cursive gazelle
slim ferry
#

yeah??

cursive gazelle
#

Is it documented?

slim ferry
#

yeah that was JUST sent

wintry solar
#

what is reading

slim ferry
#

balatro fans cant read..

primal robin
#

who is reading

wintry solar
#

I wish I had eyes

cursive gazelle
red flower
#

no?

maiden phoenix
slim ferry
cursive gazelle
rocky plaza
# wintry solar

is this page accessible from the steamodded wiki? i cant find a link to the page in the imagr

red flower
#

it's eremels secret docs he doesn't want to share because he's hoarding all the information to himself

#

/j

slim ferry
#

secret stash

maiden phoenix
#

You have to pay him 25€

cursive gazelle
#

Gatekeeping the smods docs

modern kindle
#

woah its N and eremel

#

hi besties

wintry solar
#

smods wiki 2025

red flower
#

hi dilly i just finished stray

modern kindle
#

how was it

red flower
#

being a cat is very stressful

modern kindle
#

would you become a cat after now experiencing its life

red flower
#

it was very cool i really liked it

modern kindle
#

lmfao

#

ill have to buy you another game now since you beat that one

red flower
#

that shit seems scary

rare torrent
#

how do i make tooltips like these appear?

red flower
#

info_queue, it's in the localization docs

modern kindle
#

im surprised you beat it so soon, is it a short game?

red flower
#

yeah i think it's like 5 hours

#

there's an achievement for beating it in 2

modern kindle
#

zamn

#

you didnt even do true cat behavior and sleep for more than one hour

maiden phoenix
red flower
#

annapurna games are nice

#

i like when games are 6 hours at most

#

now i need to start a 70 hour rpg

modern kindle
#

i just like games idrc about length most times as long as its engaging

red flower
#

you say that because you havent played hundred line

modern kindle
#

i could consume you

maiden phoenix
#

vore?

red flower
#

im a spectral

modern kindle
#

no in the friendly way

rocky plaza
#

đŸ€š

maiden phoenix
#

How do you consume someone in the friendly way?

modern kindle
#

carefully

rocky plaza
maiden phoenix
modern kindle
rare torrent
red flower
#

im leaving e33 until i finish all the final fantasies

rocky plaza
#

looks right

rare torrent
#

it's crashing tho

modern kindle
red flower
#

syntax error, you wrote the code wrong

#

i like my japanese anime games

cursive gazelle
red flower
#

i said all

#

there's like 50 something in my list where i exclude only mobile and chocobo games

wintry solar
#

have you played to the moon, n?

red flower
#

im waiting for the fftactics remake to continue

red flower
oak meadow
#

when i try to use Cryptlib it doesnt work
it crashes when i start a run
is this just something with the mod

slim ferry
#

yeah cryptlib seems to be broken rn

oak meadow
#

d a r n

#

guess ill just use cryptid because i need exotics

red flower
#

😭

modern kindle
#

who on earth could that be from

red flower
#

we'll never know

modern kindle
red flower
#

thank you 😭

modern kindle
#

i got u deluxe also

#

so dont forget about whatever bonuses they talk about in some options or whatever

red flower
#

im going to cry

modern kindle
#

when it drops

#

toma hasnt even played the game i got them yet i dont think

#

crying in the club

red flower
#

thank you for the birthday gift

modern kindle
#

u will get many more but u are welcome

cursive gazelle
#

Very wholesome modding chat

modern kindle
#

N has been a nice pal for awhile in here it feels like

at least since ive been in here
and i like seein him and consider us buddy pal friends so why not treat him

verbal ermine
#

sorry this is unrelated but how should i go about adding a standard card with an enhancement to any area?

#

i'm seeing alot of different ways so i'm a tad confused

cursive gazelle
#

Smods.add_card

#

Or create_card

#

Check wiki for details

verbal ermine
#

i'll see if i can find anything else on create card

daring fern
modern kindle
#

hi smt

#

how are you my pal

verbal ermine
#

ah wait the documentation was in Booster pack

#

thank you regardless somethingcom

maiden phoenix
modern kindle
#

N reached a whole 4 years old today

red flower
#

i was going to repeat that as a funny haha but im worried about discord banning me

modern kindle
#

lmfao

#

thats my real gift, getting you banned

maiden phoenix
#

Free from discord hell

verbal ermine
maiden phoenix
#

set is the category the card belongs to, like "Tarot" or "Planet"

cursive gazelle
#

How can i test if context.other_card has an enhancement?

daring fern
mental nacelle
#

is there a context for after a consumable is used?

cursive gazelle
maiden phoenix
#

context.consumeable is the card used

chrome widget
#

Added a force save for consumables for the purposes of a challenge. Now it records consumables as an action the same way that opening booster packs does so you can't save scum them

verbal ermine
modern kindle
mental nacelle
#

i'm trying to rewrite jokers that debuff every card in a suit but the debuff doesn't appear to work after a consumable is used

maiden phoenix
normal crest
maiden phoenix
#

You can find all set easily in game.lua

daring fern
slim ferry
#

you can do enhanced to get one with a random enhancement or just "playing card" to roll an enhancement or not based on the default standard pack enhancement rate

cursive gazelle
verbal ermine
#

ahh alright tysm ! writing this down for future

#

i am recieving this error and i don't exactly understand why

normal crest
#

your enhancement key is wrong

#

should be m_modprefix_key

thorn furnace
#

I've noticed something a bit strange with one of my scripts
For some reason, when the context triggers for the Joker, it triggers the effects twice
The context is just skip_blind
Should i be adding a second context

cursive gazelle
#

Sadly

daring fern
maiden phoenix
cursive gazelle
#
        if context.individual and cardarea==G.play and SMODS.has_enhancement(context.other_card,"m_aao_p_flip_card") == true then
            return {
                xmult = 2
            }    
        end
    end,```
normal crest
cursive gazelle
#

i see

normal crest
#

also == true is unnecessary

cursive gazelle
#

I know i added it just because it didn’t work first time

thorn furnace
wintry solar
#

what's your code?

cursive gazelle
#

Works

#

Thanks

thorn furnace
#

Very spaghetti
Hold on

#

It doesn't use context the way you normally do because it has specifics to it

for action_name, action_list in pairs(ALLOY.actions) do
  for _, entry in ipairs(action_list) do
    local ok = true
    for _, clause in ipairs(entry.context) do
      if type(clause) == "string" then
        if not context[clause] then
          ok = false
          break
        end
      elseif type(clause) == "table" then
        if context[clause.key] ~= clause.value then
          ok = false
          break
        end
      else
        print("[ALLOY] Invalid context clause:", tostring(clause))
      end
    end
                
    if not ok then
      goto continue_entry
    end
                
    if action_name == "health_drain" then ALLOY.ease_health(entry.value)
    elseif action_name == "shield_drain" then ALLOY.ease_shield(entry.value)
    elseif action_name == "dot" then ALLOY.ease_damage(entry.value)
    end
                
    print(context)
        
    ::continue_entry::
  end
end
cursive gazelle
#

Is there a way to remove the xmult display ?

cursive gazelle
daring fern
verbal ermine
thorn furnace
daring fern
red flower
#

<@&1133519078540185692>

normal crest
#

hi mods

#

have a great day

livid scroll
#

đŸ”«

cursive gazelle
#

Goodnight modding dev

exotic hedge
#

Bro what

#

How did you get it so fast

cursive gazelle
#

Too late

exotic hedge
#

What even was it

red flower
#

mrbeast

cursive gazelle
#

Mrbeast promo code

#

What a nice guy

red flower
livid scroll
#

mrbeast scam

livid scroll
keen karma
#

What does can_repeat_soul mean?

keen karma
red flower
#

it allows soul-type cards to repeat without showman iirc

keen karma
#

Ah

red flower
modern kindle
red flower
#

no thats a webp

modern kindle
#

oh

keen karma
red flower
#

well you should

keen karma
#

Yeah, I should.

cursive gazelle
#

Make a project and test everything in the wiki

distant junco
#

Is it possible to check if a card has a perma bonus

keen karma
#

Anyway, how would I go about giving a card a percent chance to appear in place of The Soul, and nowhere else?

red flower
distant junco
#

Wait no I read that wrong

#

Lol

verbal ermine
red flower
thorn furnace
slim ferry
#

why would you need a cardarea check in skip_blind

daring fern
thorn furnace
#

idk

slim ferry
#

wierd

verbal ermine
keen karma
slim ferry
#

its just that it doesnt use the vanillaremade card modifiers when applying modifiers

#

because apparently it confused people when trying to apply vanilla stuff to cards

red flower
#

yeah, i will clarify that on the wiki tho

modern kindle
#

gosh get the wiki done by yesterday already

thorn furnace
#

didnt even kno u needed that here but it works

red flower
maiden phoenix
inner cobalt
thorn furnace
#

my stakes are now even harder

inner cobalt
#

makes your code EVIL

#

(it doesn’t work anymore)

thorn furnace
rapid stag
#

bump

cursive gazelle
red flower
rapid stag
#

alright, so question

#

let's say i have a locked joker that appears in collections.
if i open up collections to the page where that joker is, if i do SMODS.find_card() with that joker's key, will that return the joker?

red flower
#

no, i dont think so

rapid stag
#

or does it only look at the run cardareas

red flower
#

im pretty sure its only cardareas

rapid stag
#

hmmm. so how can i tell if a specific locked card object is present either on the main menu or in collections

red flower
#

what's the goal

rapid stag
#

i want to have something that's unlocked by pressing alt + f4 with it onscreen (whether via it appearing on main menu or looking at it in collections)

i have capturing the alt + f4 worked out in theory, but i'm stumped on how to determine whether the object in question is present

red flower
#

you can do the unlock in that card's update function

#

that's always run if it's on screen

#

i dont know if it reaches there before the game closes tho

cursive gazelle
#

Isn’t closing the game an event

#

Its a bit tricky to find an easy solution

rapid stag
verbal ermine
#

what's proper syntax for setting prefix under an enhancement? i'm finding very little on it

cursive gazelle
#

m_?

rapid stag
#

hm? cirLost enhancement prefix is m_
modded enhancements are m_<mod prefix>_

#

i feel like we need a bit more context for this

verbal ermine
rapid stag
#

oh, when you use SMODS.Enhancement, the prefixes are automatically added

cursive gazelle
#

For none modded
m_prefix
For modded
m_mod prefix_enhencementkey

#

Prefixes are automatically done you don’t need to set them up

rapid stag
#

so as written there, the item's prefix in-game will be m_<your mod prefix>_bubble

verbal ermine
rapid stag
#

oop cirDerp

cursive gazelle
slim ferry
cursive gazelle
#

Make sure its a string tho

slim ferry
#

the prefixes are automatically added in the enhancement def though

verbal ermine
#

i'll report back in that case, tysm for ya'lls help

#

srry for the confusion

cursive gazelle
#

Np

rapid stag
#

if you have debugplus, you can check this for yourself - with what you've shown, you could launch balatro and do eval G.P_CENTERS.m_<your mod prefix>_bubble and it should return your enhancement

rapid stag
#

idk if alt f4 calls it though

cursive gazelle
#

I think love has it

#

Event.quit() should have alt+f4 integrated not just the “X” in window ui and quit button

vast bough
#

what is the default pixel size for boosters because mine look blurry, is it just the standard card size (91x75)

rapid stag
#

although even if i hook quit, how do i distinguish between alt f4 and quitting any other way

rapid stag
#

would that be where the keybind comes in

vast bough
#

also how would i go about generating boosters mid game, idk if debug plus can do this but it seems like it cant and i need to spawn them in

normal crest
#

it's made bigger ingame

vast bough
slim ferry
#

wdym

cursive gazelle
#

Look for
key down alt
Key down f4

rapid stag
#

love.keyboard.isDown()?

verbal ermine
cursive gazelle
#

Check for keyboard input capturing in love 2d documentation

rapid stag
#

yeah, i'm looking at it

cursive gazelle
#

Good luck

#

Problem is will it even be saved ?

red flower
#

i hooked love.event.quit and it got called when quitting from the menu but not alt+f4

cursive gazelle
#

Strange
Since the game closes when you press alt f4

red flower
#

it might be some other OS api stuff

rapid stag
#

now, my thoughts are at doing something likelua love.keyboard.isDown{ 'lalt', 'ralt' } and love.keyboard.isDown{ 'f4' }in the card's update func

red flower
#

love.quit does get called

modern kindle
#

you could prob prevent it by returning true on it as well cant you

red flower
red flower
rapid stag
red flower
#

no, in-game

rapid stag
#

ah

red flower
#

but it means it can find the card at least so you should be able to do what you want

vast bough
red flower
#

ye

red flower
cursive gazelle
#

Would their achievement be saved tho

modern kindle
#

cant you just delay the quit to save

red flower
cursive gazelle
#

I see

red flower
cursive gazelle
rapid stag
#

i can't just set a var in mod config inside the quit hook and hope it saves that way?

red flower
#

let us know how it goes :3

rapid stag
maiden phoenix
#

I hate UI

#

I have a joker mechanism, but the description crashes on the second hover

red flower
#

why the second one 😭

maiden phoenix
red flower
#

are you showing a card

#

or something like that

maiden phoenix
#

I think it's because I'm not saving the metadata, but if I do save it, continuing the run will remove the mechanism

maiden phoenix
red flower
#

i mean in the description

maiden phoenix
#

No

#

I'm trying to get a joker's desc into a multibox

#

I think generate_UIBox is adding something the game doesn't like after the first exec

red flower
#

oh then it might be what i thought

#

i think the uibox gets destroyed after unhovering

#

you need to recreate it every time

maiden phoenix
#

Interesting, how do I tie it to a card tho? Since I do all the generating during a consumable use

red flower
#

cant you save the key on the card or something

#

thats what i do for my transfer ability mechanic

maiden phoenix
#

true maybe, I'll try 👍

#

Wait you can generate an UIBox from the key alone?

#

Or like do you want me to do it from G.P_CENTERS? (if it exists but I doubt)

red flower
#

you would probably need to make a new card to do it like you're doing

maiden phoenix
#

Creating a card just to show a desc then remove it?

red flower
#

yeah

#

i dont know enough about what you're doing haha
let me show you how i do mine which might be better

#

something like this, basically I generate the description box from the center

#

i did some changes because i dont actually use the main joker description

rapid stag
rapid stag
#

anyone know how to force the mod config to save

#

wait

#

what if i put the quit call in an event cirDerp

manic rune
#

p sure theres a function to save mod config

sturdy compass
#

Anybody know of any examples of custom card areas implementing negative edition functionality?

cursive gazelle
#

I don’t think there’s room to add more Cardareas

manic rune
sturdy compass
manic rune
#

odd, i had the opposite issue lmfao

#

wanted negative editions to not increase the area's card limit

sturdy compass
#

Huh

plain ember
cursive gazelle
#

You got fans N

maiden phoenix
sturdy compass
#

Just now noticed that

red flower
manic rune
red flower
manic rune
#

oh does negative edition not just increase card limit of card.area??

sturdy compass
#

I think it boils down to my emplace hook but I'm not sure why

red flower
#

no, it's hardcoded i think

manic rune
#

sob

#

can we have a patch for this one :3

nimble gyro
#

question for yall: making a joker that gains XMult when a king of spades or clubs is played. Weird bug where if blueprint/brainstorm is copying it, it gains twice the mult its supposed to. Wrote a bit to check if the xmult increase has already been applied but that'll stop it gaining with retriggers like hanging chad or if more than one was played in that hand, anyone have any other ideas to solve?

red flower
#

if not context.blueprint

normal crest
#

that is certainly one of the codes of all time

#

you don't need to check that context exists, within context.repetition context.other_card always exists too

#

and it will always be a Card object, so you don't need to check that it's a table, or has the get_id function or has a suit

nimble gyro
#

ok thanks. first mod so still figuring stuff out

red flower
#

card = self is not crashing?

normal crest
#

cus context.previously_triggered is not a thing

#

nvm

red flower
#

oh yeah

normal crest
#

it says not, didn't see that

#

still, that's just always true

maiden phoenix
#

What does the colour crash mean again in UI?

faint yacht
#

local is_clubs_or_spades = card:is_suit('Clubs') or card:is_suit('Spades') to simplify and not need local is_wild_card_effect.

unborn bay
red flower
unborn bay
#

someone should update the calccontext lsp docs

red flower
#

i dont use either because i disable blueprint:3

floral flame
#

Hey thank you so much for your help. I figured out the issue and it was totally my fault.
I neglected to test the parts piece-by-piece and it turns out that Malverk wasn't installed correctly. I fixed that up and all of a sudden, everything started working as expected.

maiden phoenix
#

Huh lmfao

normal crest
#

funny alignment

maiden phoenix
#

I'm trying stuff up but I should look at desc_from_rows again

#

Never made my own UI nodes before

sturdy compass
red flower
#

yeah

clear ocean
#
poll_question_text

What do you prefer?

victor_answer_votes

1

total_votes

1

victor_answer_id

2

victor_answer_text

Jokers' Galore

oak meadow
#

is there a way to check how many cards discarded when you do something on context.discard

red flower
#

#context.full_hand

manic rune
oak meadow
#

do i have to have a return with card = card in it to save a value into the card

plain ember
#

Evening evening, Is there a way to make a joker spin like when a card gets affected by a tarot card? please

manic rune
#

-# actually anyone can do it, it just sounds annoying for it to not do that

plain ember
#

thx! but does it has any arguments?

red flower
#

no

plain ember
#

And there's a way to make it spin faster?

oak meadow
#

some of the examples in smods have
return
{
(stuff for the message thing below the joker)
card = card
}

red flower
red flower
#

you never need card = whatever

manic rune
oak meadow
#

ok ty

normal crest
#

the smods examples of jokers should just be changed to point towards vanilla remade at this point

nimble gyro
red flower
#

it does

nimble gyro
#

sweet thanks

red flower
#

or any other blueprint like

red flower
oak meadow
#

its True... though

maiden phoenix
sturdy compass
#

Ugh I hate making invasive patches like that
At least it works now

sonic musk
#

hi, how do you guys do glass visuals?

daring fern
sonic musk
#

im trynna understand how to make this visual

#

the

#

see through

junior loom
daring fern
plucky zenith
#

I'm trying to track and understand the functionality of Boosters when they're opened through close. I see the UI being created using something like G.booster_pack = UIBox {...} The cards are put into a cardArea of G.pack_cards. And I see how if you skip the booster then G.FUNCS.skip_booster runs a calculate context that you can hook into and then calls G.FUNCS.end_consumeable(e) which seems to remove the UI - G.booster_pack:remove()

What I can't seem to find is how the UI is removed if cards are actually chosen? I'm trying to do something when a booster closes.

oak meadow
#
if my_pos and G.jokers.cards[my_pos + 1] and not SMODS.is_eternal(G.jokers.cards[my_pos + 1], card) and not G.jokers.cards[my_pos + 1].getting_sliced then
                local sliced_card = G.jokers.cards[my_pos + 1]
                sliced_card.getting_sliced = true -- Make sure to do this on destruction effects
                G.GAME.joker_buffer = G.GAME.joker_buffer - 1
                G.E_MANAGER:add_event(Event({
                    func = function()
                        G.GAME.joker_buffer = 0
                        card.ability.extra.mult = card.ability.extra.mult + sliced_card.sell_cost * 2
                        card:juice_up(0.8, 0.8)
                        sliced_card:start_dissolve({ HEX("57ecab") }, nil, 1.6)
                        play_sound('slice1', 0.96 + math.random() * 0.08)
                        return true
                    end
                }))
end

would inserting this into my code cause it to work like ceremonial dagger (im just confused because i dont know how add_event works and i wanna make sure (assuming we have all the variables required and stuffszsd))

red flower
#

if this is just the code from vremade then yes

oak meadow
#

ok yeah it pretty much is but i changed the position of the end to not make the message happen

#

ty

versed swan
#

How do you change blind to a specified one in DebugPlus?

red flower
#

Press 3 over the blind in the collection while in the blind select screen

versed swan
#

oh, sweet, thanks

rocky plaza
#

hey, is there a way to directly manipulate the onscreen position of a joker?

oak meadow
#

return { vars = { card.ability.extra.xchips, card.ability.extra.xmult, card.ability.extra.xmultup, card.ability.extra.route, ((card.ability.extra.route == 0 and 'Neutral') or card.ability.extra.route == 1 and 'Pacifist') or card.ability.extra.route == 2 and 'Genocide' } }
this line is in my local vars
what is casuing this crash

rocky plaza
oak meadow
#

yes

#

that line is 388

#

error happens when i hover over joker

normal crest
#

what's the entire loc_vars function

oak meadow
#

ok specifically: it happens on card.ability.extra.xchips
i think it happens on all of them tbh but thats the first one

#

loc_vars = function(self, card, contexts)
return {
vars = {
card.ability.extra.xchips,
card.ability.extra.xmult,
card.ability.extra.xmultup,
card.ability.extra.route,
((card.ability.extra.route == 0 and 'Neutral') or card.ability.extra.route == 1 and 'Pacifist') or
card.ability.extra.route == 2 and 'Genocide'
}
}
end

rocky plaza
#

oh

oak meadow
#

wait

normal crest
#

(self, info_queue, card)

oak meadow
#

i used calculate

normal crest
#

are the parameters

oak meadow
#

common instance of me being stupid and thats the problem:

#

i have no idea what im doing wrong
idk man
if context.discard and card.ability.extra.route == 0 then -- gets here print('in genocide set') if my_pos and G.jokers.cards[my_pos + 1] and not SMODS.is_eternal(G.jokers.cards[my_pos + 1], card) and not G.jokers.cards[my_pos + 1].getting_sliced then print('in kill script') local sliced_card = G.jokers.cards[my_pos + 1] sliced_card.getting_sliced = true -- Make sure to do this on destruction effects print('route:') card.ability.extra.route = 2 print(card.ability.extra.route) G.GAME.joker_buffer = G.GAME.joker_buffer - 1 G.E_MANAGER:add_event(Event({ func = function() print('in xmult edit') G.GAME.joker_buffer = 0 card.ability.extra.xmult = card.ability.extra.xmult + #context.full_hand * card.ability.extra.xmultup print('xmult:') print(card.ability.extra.xmult) card:juice_up(0.8, 0.8) sliced_card:start_dissolve({ HEX("57ecab") }, nil, 1.6) play_sound('slice1', 0.96 + math.random() * 0.08) return true end })) end end
why doesnt it go into the card killing script (there is a card to the right of it which can be killed)

normal crest
#

where'd you define my_pos

oak meadow
#

ah

#

just another thing i need to STEEL HEHEHEHE from ceremonial dagger

turbid maple
#

There's no easy way to modify the return table of another Joker from a Joker effect right

#

This is lovely territory

turbid maple
#

Do I just modify other_ret

daring fern
turbid maple
#

yippee it works

#

was there a change the last time I asked someone said no

manic rune
#

its always been like that afaik

turbid maple
#

I do end up needing to patch because I have to interact with shit triggering at the cashout screen

#

gaah!

manic rune
#

:3

oak meadow
#

i have a joker that changes a value (doesnt let blueprint do it) then uses it in the very same if statement as the next if statement (its weird)
i also have another if statement
my problem is that blueprint isn't working if i havent already set that value outside
if i swap the two if statements, will that fix it? or do i need to do smth else

#

this is probably very confusing im gonna send some code for it

            if card.ability.extra.route == 0 and not context.blueprint then
                card.ability.extra.route = 1
            end
            if card.ability.extra.route == 1 then
                return {
                    xchips = 2,
                    xmult = card.ability.extra.xmult
                }
            end
            if card.ability.extra.route == 2 then
                return {
                    xmult = card.ability.extra.xmult
                }
            end
        end
neat leaf
#

Can I have a text input in my Config section? I'm working on a debugging mod and I want to allow the user to customize the filename pattern.

If so, does anyone know of any mods that do this?

iron burrow
#

Hey does anyone know how to run balatro programatically with proton on linux?

#
#!/usr/bin/env bash

export STEAM_COMPAT_DATA_PATH="$HOME/.steam/steam/steamapps/compatdata/2379780"
export STEAM_COMPAT_CLIENT_INSTALL_PATH="$HOME/.steam/steam/steamapps/compatdata"

"$HOME/.steam/steam/steamapps/common/Proton 9.0 (Beta)/proton" run "$HOME/.steam/steam/steamapps/compatdata/2379780/pfx/drive_c/users/steamuser/AppData/Roaming/Balatro"

I am trying to start it up from the terminal with proton but it fails to start. I assume the balatro.exe directory is incorrect?

short girder
#

folks, is there a context for using a certain consumable type?

rocky plaza
short girder
#

gotcha

#

one last thing: is it possible to manage arrays inside SMODS.(type) using dot syntax? (like creating a table and referencing a specific field of it in calculate later)

rocky plaza
#

so like card.config.center.pos would get the table for its position in the atlas

short girder
#

oh gotcha

clear ocean
#
poll_question_text

Add a limit to the memory card joker

victor_answer_votes

2

total_votes

3

victor_answer_id

2

victor_answer_text

No.

ivory citrus
#

Hello, how i can do a sprite of a legendary joker

lament agate
#

i was trying my best to not use that word in my mod and here it is 😭

rough furnace
rough furnace
modern kindle
#

woah is that john debug

rough furnace
#

no

ivory citrus
rough furnace
#

no on the joker

#

like pos

glad osprey
ivory citrus
glad osprey
manic rune
# ivory citrus Like this?

soul sprite is on the same atlas, you dont need to define anything else except for key, path, px and py

ivory citrus
#

It's for a Chilean YouTuber

glad osprey
#

also ngl you should really rename the joker

clear ocean
manic rune
#

but anyways, your joker should have both pos and soul_pos

glad osprey
#

pos for the bg, soul for the fg

high sinew
#

Not sure if modify_hand function is the one for blinds if you want after scoring for cards/jokers is there a diff function?

manic rune
#

what r u trying to do

ivory citrus
manic rune
#

why are there two paths

#

😭

#

why r there two atlases

#

you only need one

glad osprey
#

also really change the jokers name

ivory citrus
true jasper
ivory citrus
manic rune
#

i third that

high sinew
ivory citrus
#

How will you recognize the two?

loud pewter
manic rune
glad osprey
#

omg do tou have every joker in a different image

manic rune
glad osprey
#

you are beyond saving

true jasper
true jasper
ivory citrus
glad osprey
#

you misunderstand the purpose of an atlas

#

its meant to be a big image of alot of different smaller images

true jasper
ivory citrus
#

like this?

manic rune
#

yes

true jasper
glad osprey
#

yes 😭

manic rune
#

hi dil

ivory citrus
#

but if I need to put in a new joker

modern kindle
#

hi bepper the bepser

glad osprey
manic rune
#

or do what nxkoo is doing and have like, a gazillion small atlases

ivory citrus
#

Don't yell at me, I know I'm stupid.

manic rune
#

super inefficient but kind of works

true jasper
modern kindle
#

i mean not even kinda works, it does work

manic rune
#

shrug

modern kindle
#

its just not as smooth

glad osprey
#

it does

#

but like

#

don't do it

manic rune
#

yeah, no reason to do that at all

#

asides from you being lazy as hell

#

to bother compiling all the sprites into one image

#

which should only take like 30s top

glad osprey
#

really the only reason to have separate atlas is if they have different sprite sizes or if its like jokers compared to tarots

modern kindle
glad osprey
#

no we spend it all the second we get it

ivory citrus
#

i hate this sistem

#

i hate coding

glad osprey
#

then dont do it

manic rune
#

we all hate coding sometimes

modern kindle
#

it isnt so bad, you grow use to it

manic rune
#

:3

ivory citrus
modern kindle
#

i think discouraging someone isnt the way to go here really

#

everyone starts somewhere

ivory citrus
glad osprey
#

even the twink agrees

manic rune
#

twinkoo

lament agate
#

im a living example of the broken condom and went hell on the documentation

manic rune
#

i wholly agree

glad osprey
#

I Holy agree

true jasper
#

I‎ ‎ ‎ ‎ ‎ ‎ ‎ ‎ ‎ ‎ ‎ ‎ ‎ ‎ ‎ agree

faint yacht
#

I e

manic rune
#

Ă«

lament agate
manic rune
#

we collecting every somethingcom's letter reactions with this one

glad osprey
manic rune
#

fuck em pokedex, gotta find them allℱ

rough furnace
manic rune
#

you are one of the rare exceptions wilson

#

:3

glad osprey
#

as am i

#

I hate coding all the time

rough furnace
#

there are 2 types of people

manic rune
#

those who know how to shader and those who dont

faint yacht
#

-# there are people

true jasper
lament agate
high sinew
#

Can modify hand for blinds only apps before jokers and cards calculation?