#💻・modding-dev

1 messages · Page 74 of 1

mental nacelle
#

this is what it looks like now

function Card:set_edition(edition, immediate, silent)
    local run = true
    if edition then
    if (edition == "e_foil" or edition.foil) and G.GAME.modifiers.no_foil_jokers and self.ability.set == "Joker" then
        self:juice_up(0.5)
        run = false
    end
    if run then
        return set_edition_ref(self, edition, immediate, silent)
    end
end
end```
#

juice up is just there to show when it happens

#

(even if it returns a crash for juice_up, it's detected a foil card)

#

checked using a ton of buffoon tags and a foil tag, i am not able to get a foil joker in any way
thank you so much for your help Larswijn

tepid crow
#

I probably should've looked at steamodded's overwrites earlier lol

long roost
#

In that case I'll see if I can add in a clause for a Talisman-compatible implementation of Stirling's Approximation

tepid crow
#

Never heard of it before, but Talisman might support all the operations I see on wikipedia

#

so that might work yeah

mental nacelle
#

definitely works

#

using a Foil tag, the faceless joker stays editionless (price changes but that's easily preventable)

tepid crow
#

shouldn't you prevent the foil tag at that point? 🤔

mental nacelle
#

yeah, the challenge would have foil tags disabled

#

just wanted to be rigorous with the testing

#

added the other mod i'm working on and got foil jokers
(i was in a normal red deck run)

#

this isnt a problem with the code its just 2:30am

long roost
#

Alright, the comparison I'm using to split the cases doesn't seem to be functioning properly, when I play a hand with 4 base mult I end up with 23.5 rather than the expected 24

local function fact (n)
  if n == 0 then n = 1
  else
    for i = 2, n-1 do
      n = i*n
   end
  end
  return n
end

local function stirling (n)
  if n < Big:new(171) then
    return fact(to_number(n))
  else
    return n^n * 1/(math.exp(1)^n) * math.sqrt(2*math.pi*n)
  end
end
tepid crow
#

you can just do if type(n) == "number" then

#

at least, I'm assuming that'll work

long roost
#

I'll test that out, the 171 is so that the factorial result itself doesn't exceed the integer limit (171! > 2^1024)

tepid crow
#

ugh unless even e.g. 1 is a fancy little table

long roost
tepid crow
#

yeah, makes sense actually

mental nacelle
#

would the id for a modded edition be "e_(prefix)_(name)"?

tepid crow
#

weird, I don't see why n < Big:new(171) wouldn't work

long roost
mellow sable
#

to_big()?

topaz sun
#

Can someone help me figure out why this code is crashing the game? I've been scratching my head for half an hour now. It' probably gonna be something simple and I'm gonna look real stoopid, but I must know. It started crashing after i added the return{ } that I had forgotten in the context.joker_main part

    key = "whitepony",
    name = "White Pony",
    atlas = 'maggitsjokeratlas',
    pos = {
        x = 0,
        y = 1,
    },
    rarity = 2,
    cost = 6,
    unlocked = true,
    discovered = true,
    eternal_compat = true,
    perishable_compat = true,
    blueprint_compat = true,
    config = {
        extra = { mult = 3, mult_gain = 2 }        
    },
    loc_txt = {
        name = "White Pony",
        text = {"{C:mult}+#1#{} Mult",
                "Doubles each Ante"}
    },
    loc_vars = function(self, info_queue, card)
        return {
            vars = {card.ability.extra.mult, card.ability.extra.mult_gain}
        }
    end,
    calculate = function(self, card, context)
        if context.joker_main then
            return {
                mult_mod = card.ability.extra.mult
                message = localize { type = 'variable', key = 'a_mult', vars = { card.ability.extra.mult } }
            }
        end
        if context.end_of_round and not context.blueprint and not context.repetition and G.GAME.blind.boss then
            card.ability.extra.mult = card.ability.extra.mult * card.ability.extra.mult_gain
            return {
                message = 'Upgraded!',
                colour = G.C.MULT,
                card = card
            }
        end
    end
}```
ebon blade
#

main chunk of file 'maggitsmod.lua' at line 17 (from mod with id maggitsmod)

check line 17 you mightve forgot a ; or smthn

topaz sun
ebon blade
#

also i suggest deleting that since there may or may not be personal info in it, i thought you would send the balatro crash log not the lovely

#

can you send the full code? not just the joker itself, because you mightve forgot something in the header, or the atlas

topaz sun
#

Thanks for the heads up

ebon blade
#

yeah dw

#

np

ebon blade
#

can you try putting the assets folder in the joker folder then launching the game?

topaz sun
#

will do

ebon blade
#

does it run now?

topaz sun
#

yup, crash

ebon blade
#

oh

#

does it say anything different?

topaz sun
#

same stuff

#

it's something to do with the whitepony.lua file

ebon blade
#

1 sec lemme have a look at smthn

#

for reference from my stuff

topaz sun
#

whenever I add this return{} part, it starts crashing

ebon blade
#

does the joker white pony appear without it?

topaz sun
#

I think I removed lines 31 and 34 it in the file for the sake of not crashing

topaz sun
topaz sun
ebon blade
#

no, without the return

topaz sun
#

oh, it does

#

but it doesnt work, no mult added

ebon blade
#

i see

#

whats card = card supposed to do?

opal spade
#

within return its supposed to be info for stuff like retriggers, but it's not needed in most contexts

topaz sun
#

That's what I understood, but I may be wrong

ebon blade
#

im trying stuff brb

topaz sun
#

aight

ebon blade
#

calculate = function(self, card, context)
if context.joker_main then
return{
message = localize { type = 'variable', key = 'a_mult', vars = { card.ability.extra.mult } }
mult_mod = card.ability.extra.mult
}
end
worked, i just added return to calculate, the game doesnt crash on launch and the joker appears

#

@topaz sun

topaz sun
#

This stuff is irrational, I swear

#

Imma reboot my pc

ebon blade
#

good idea, cause i just checked the original code and it works anyway

topaz sun
#

Nothing happened

#

same crash

ebon blade
#

can you show me the mods folder?

topaz sun
ebon blade
#

can you open maggitsmod?

#

i mean the folder

topaz sun
ebon blade
#

try removing all other content mods?

#

idk at this point

topaz sun
#

I'm baffled, I tell ya

ebon blade
#

im flummexd, it completely works for me even with out the stupid change i suggested

ebon blade
#

because thats the resource i use and it fully works

#

maybe one of the files in your mods folder is corrupted or smthn

brisk rose
# topaz sun

Ayyy that looks like you're using my modpack as a base

#

(I can mostly tell because of my semi-custom yosbr implementation)

ebon blade
#

hi coonie, your competent, can you take over this case?

brisk rose
#

I don't even code, lol

#

Not sure how I'm competent

ebon blade
#

i see you here all the time

#

i mightve made a connection

#

sorry for the assumption?

brisk rose
#

Yeah I try to help when I can

opal spade
#

I should make a mod that ppl would actually use in modpacks (other than no peeking; I should update no peeking to make it less stupid using my newly acquired knowledge)

brisk rose
ebon blade
#

i mean the mod works for me but not for @topaz sun , which is super funny since he made it

opal spade
brisk rose
ebon blade
#

nope

brisk rose
#

Or Lovely versions?

ebon blade
#

might be

topaz sun
#

I downloaded the 7z, edited the code to add return{} and now it works

ebon blade
topaz sun
#

I cant

#

even begin to understand this

opal spade
ebon blade
brisk rose
ebon blade
#

it should work regardless

opal spade
ebon blade
#

ask him

brisk rose
topaz sun
#

That's why I needed to add it

ebon blade
#

no, the one i added

opal spade
#

@topaz sun is there info in the logs

ebon blade
ebon blade
opal spade
#

🤔

topaz sun
opal spade
#

something within whitepony doesn't add up

topaz sun
ebon blade
#

and now it doesnt?

opal spade
#

a quick way to see what is comment out the load line and paste the joker into the main file

topaz sun
ebon blade
#

WOO

topaz sun
#

to try and solve this mistery

brisk rose
#

Got that gift horse's mouth right the hell open and lookin in it with a flash light :p

#

/j

#

the fact the joker is white pony isn't lost on me

ebon blade
#

oh btw, fyi, in vs code different values have different colors right? so in a joker of mine that works (high contrast theme in vs code) mult_mod = card.ability.extra.mult,
message = localize { type = 'variable', key = 'a_mult', vars = { card.ability.extra.mult } } message and mult_mod are blue, and in @topaz sun white pony (same theme on vs code obv)
message = localize { type = 'variable', key = 'a_mult', vars = { card.ability.extra.mult } }
mult_mod = card.ability.extra.mult
mult_mod and message are yellow/orange

#

idk if this means anything

#

but just to point out the facts

#

for refrence
whitepony

brisk rose
#

I think that's just because it's wrapped in a return

ebon blade
#

yup

#

that was the reason

topaz sun
#

wrong ping

ebon blade
#

vs code is pretty much a golorified text editor

#

which is why i like it

topaz sun
#

I'm a complete noob lol, my only experience is from making simple programs for a minecraft mod called computercraft

#

which coincidentally, were in lua

ebon blade
#

hey, thats more than me

opal spade
ebon blade
#

i just clump patterns and say, here is the problem?. no? aww dnagit

ebon blade
topaz sun
#

The mistery so far: Here I am coding my little mod. I forget that exact return, so the joker doesnt add mult. So, I go back and add the return, comma in the right place and everything, and boom crash. So then I ask for help here. I remove the return from the code to send it "crash-free" to tyuugy. He then proceeds to add the same return in th same place and it somehow works for him as intended. I then download the zip I sent here, add the return I had previously deleted and it now works.

ebon blade
#

i swear this always happens to people im helping with tech, irl, everytime one of my friends has an issue with tech i say have you tried x, they say yeah i tried, i say try again then it works

#

mgik

topaz sun
#

I was shocked, in disbelief and relieved all at once when it worked lol

ebon blade
#

lmao

topaz sun
gaunt thistle
#

iirc I spitballed an idea to make this work a while back. shouldn't be hard and I might have time to work on it today / tomorrow

topaz sun
#

No way

opal spade
topaz sun
#

Yup, that's it. lmaooooooooo

opal spade
#

I am the fixer of bugs

#

(I didn't do anything)

topaz sun
#

Thou art wise, o fixer of algorithms

#

Thanks for the help, guys

#

You guys friggin ROCK

rough furnace
lime trench
#

I'm not entirely certain on how context.destroying_card should be used, but it doesn't seem to destroy the cards. I think it is because I'm trying to get them to be destroyed after it's played (and that's impossible to do after the card has already scored). But I'm not too familiar with how the scoring operations go.

#

I'm pretty sure it is because glass cards trigger right after they score and not during joker scoring

surreal marsh
#

there exist context.cards_destroyed and context.destroying_card

#

it's confusing

#

i guess destroying_card is true for every card played to test if a joker can destroy it

wintry solar
#

Destroying card checks whether a card should be destroyed or not, iirc it just needs to return true

#

Cards destroyed is for effects on cards that have been marked to be destroyed

#

But also, your check for destroying card is inside a different context check

#

So it’s never being hit

lime trench
wintry solar
#

No

lime trench
#

So how would I make sure context.destroying_card triggers when i want it to?

wintry solar
#

All the context has at this step is destroying_card which is the card, and full_hand

#

So something like if context.destroying_card and context.destroying_card:is_face() then return true end

lime trench
#

Ah! Okay!

loud citrus
#

is making a new booster pack the same as making a joker?

lime trench
wintry solar
lime trench
loud citrus
brisk rose
#

Is there a way to write image files to the disk? I want to make a mod that can export all of the modded content in your game into a webpage using notmario's template (mostly just so people can easily browse their collections out of game, but also it'd be cool for Coonie's Mod Pack to be able to list /everything/ it adds. But part of that would have to be grabbing the sprites, and idk if that's even possible

languid mirage
#

you mean individual sprites? yeah it's pretty simple

#

you create new canvas with love2d and draw the sprite on it

then you can save this canvas to set path

brisk rose
languid mirage
#

yeah, you need to know love2d I guess 😭

brisk rose
#

I can read the docs, lol

languid mirage
#

you can use blueprint mod for example

brisk rose
#

What would I iterate through to get the modded joker (and eventually other modded content but I'm starting with jokers) objects?

languid mirage
#

but you'd need to also set canvas quad

#

uhh lemme see

brisk rose
#

for reference, I plan for this to be an smodded mod, but I get if I have to use lovely for some things (like the sprites and stuff)

#

not sure if I would, just saying

languid mirage
#

so looking at the game's source code

you'd need to replace love.graphics.draw(image) with this
from Sprite:draw_self

languid mirage
tidal edge
#

it'd be funny to try this with a cryptid joker

#

(pass the gpt chat link 🥺)

brisk rose
tidal edge
#

the prompt informing it about the website formatting

brisk rose
#

oh it's there, I can copy it if you want so it's text instead of an image

tidal edge
#

def would like it passed in dms

#

looks funny to toy around with 👀

brisk rose
#

I'll put it here because I was about to copy the template anyway to explain what I needed to grab for this mod idea I have

`Take the following lua code and output a list of joker Descriptions in this format:

" {
name: "Joker",
text: [
"{C:mult}+4{} Mult"
],
// image_url: "img/j_joker.png",
rarity: "Common"
}"

This is the skeleton for the relevent parts of the code:
"-- SMODS.Joker:new(name, slug, config, spritePos, loc_txt, rarity, cost, unlocked, discovered, blueprint_compat, eternal_compat, effect, atlas, soul_pos)
local j_example = SMODS.Joker:new('Example Joker', 'example', { mult = 10 }, {x=0,y=0}, {
name = 'Example Joker',
text = { '{C:red}+#1#{} Mult' }
}, 1, 2, true, false, true, true, 'Mult', 'my_mod_jokers')
j_example:register()"

The rarities are 1-4 for common, uncommon, rare, and legendary

The numbers in #these# are indexes to be replaced by the corresoponding value in the config table for each joker

Here is the code, disregard the functions:
`

#

So yeah, how would I iterate over all modded jokers and grab their name, description, and rarity? As well as passing it to the sprite code to get the sprite

#

Additionally I think I'm gonna add a field for what mod that they come from. I can handle the javascript and html on the website template side for that, but not sure how to do it on the mod side

tidal edge
#

wow this little thieving robot is good at doing things for me

frosty dock
#

do i see 0.9.8 code here 💀

brisk rose
frosty dock
#

ah well

brisk rose
#

I don't really have the knowledge to port them myself. At least not the code part of it

#

the definitions are just pattern replacement beyond that really

#

If I do end up doing this mod idea of mine, I should gain some nessacary experience with lua/coding

#

The idea is to take all the mod objects in the game, and generate a webpage with notmario's template

tidal edge
#

im grimming out

gaunt thistle
opal spade
#

is there a way to prevent locked items from drawing the locked shader?

#

testing bypass_lock for archipelago rn

languid mirage
#

probably, did you check card:draw?

opal spade
#

i checked it but i cant find the thing that makes it shine

wary crescent
#

So my Joker creates a random Tarot card, but I want it to generate 2 copies of that same randomly selected tarot card. How should i go about this?

opal spade
opal spade
languid mirage
#

draw_major contains card table

wary crescent
languid mirage
#

so you can check if its area == G.jokers

#

might also try crashing on that spot to see the stack trace

#

also ignore dissolve shader. it only draws base

#

I'm not 100% sure either where does the locked sprite get shader from

wary crescent
#

hmm, where do you add the "copy_card" line of text?

opal spade
opal spade
opal spade
languid mirage
#

ah

#

makes sense cuz I didn't find any unlock related shaders. lol

opal spade
#

now i just need to figure out the thing preventing the usage but i feel like its probably also center.demo (which would be Not Good)

languid mirage
#

why are you using center.demo?

opal spade
#

its a quick and easy method to override the lock message

languid mirage
#

maybe you can find where lock message is being overriden due to center.demo

#

and patch that line to include your custom param

#

that way only the lock message will be gone

#

without other side effects of center.demo

opal spade
#

burndi is adamant about voiding patches but no biggie, the vanilla has a second tag that overrides lock message (center.wip) that doesnt do anything other than override the message

#

although it appears that the use button is still unusable

wintry swallow
#

What if there was transparent joker, unlike invis it make 2 copies of 1 random joker, wdyt?

wintry swallow
#

So you know how invis makes one copy

#

What if it was doubled, and stronger

wary crescent
wintry swallow
#

It has to be sold to make the 2 copies like invis but it has a chance to give that joker foil, holo, poly or negative trait

#

Like a 1 in 5 chance for example

#

What if in the future, the switch and mobile ports had mod support 🤔

opal spade
#

ig something like that

#

you'd need to add extra buffer checks though

wary crescent
wintry swallow
#

Get it?

wary crescent
opal spade
opal spade
#

found a way around it by unlocking and relocking the consumable for the check but i dont rlly like that

rough furnace
#

Also I had some mod breaking it for me so if it doesn't work disable other mods

#

also if at all possible reloading patches when restarting this way would be great

#

(including changes to lovely ignores)

#

Broken stuff (from my memory): the lovely module
logs
Not being reloaded

lime trench
#

(very) rough pass for the Gallows Humor card art, what do ya'll think?

#

It's based off of this one political comic from 1791 that ppl like to use about the french revolution

opal spade
#

the sanity check doesnt work for some cards for some reason but im making progress

orchid thunder
#

How does one make a custom enhancement

#

I don't see anything about it in the steamodded wiki

opal spade
#

it's not on the wiki but it's in the files

orchid thunder
#

Oh ok

opal spade
#

steamodded/core/game_objects.lua

rustic flint
#

how do i check that the hand being played is specifically high card because when i try to do this it doesn't work and just lets any hand activate it

ebon blade
#

I think your using the wrong [] it should be a double {{}}

#

But I'm not sure

rustic flint
#

i'm going off the source code and that's how they do it?

#

but i can try

#

yeah no that doesn't work

#

i think it's because the bracket is an index not an input

opal spade
#

iirc

topaz sun
#

What does "attempt to concatenate global 'money' (a nil value)" mean?

rough furnace
#

it means it tried concatinating a global value called money (which is a nil value) but failed

rustic flint
#

nvm i got it

topaz sun
rustic flint
#

thanks tho

tidal edge
#

how do you check if a face card is being scordd

#

i want something to check if a face card is scored

#

and if it is

#

trigger effect

tepid crow
#

in a joker calculate, presumably?

tidal edge
#

im talking about the code

#

that would check if a face card is being scored

tepid crow
#

oh, you mean the function that checks whether a playing card is a face card or not?

lime trench
#

those just check if a card that is played is scored and a face card

#

if you want the trigger to apply only once to each card, you also add context.individual to it

opal spade
#

thats a strange way to word it

#

in this use case you must specify that its context.individual, or else the code would go off when looking for retriggers

topaz sun
#

the return{} function with the message isn't showing any message in the specified context. Why is that? Do I have to mess around with that eval_status_text thing? (please god no)

loud citrus
#

i think you're missing something, look at this example from one of my jokers

topaz sun
loud citrus
#

i see

#

i'm silly

topaz sun
#

I think you can't use return in this context maybe

topaz sun
#

That makes you not silly

loud citrus
#

this screenshot is from my rebalanced mod, so it's using a vanilla game joker as the base

#

you also wanna think about context and if it's triggering right, i would recommend a way to make the effect trigger on demand to see if it even works

#

like context.discard is my go to for testing

topaz sun
#

The message shows with context.discard

#

wtf

wintry solar
#

not every context handles messages that are returned, just need to check where its being called

#

also worth noting that the game won't save the rcount between reloads here, you need it in the extra table

#

if you need a message to pop up whenever, you can use card_eval_status_text()

topaz sun
#

Thanks

wintry solar
#

it's very straight forward

#

something like card_eval_status_text(card, 'extra', nil, nil, nil, {message = "MONEY", colour = G.C.GOLD}) should work

topaz sun
#

So no need to use G.E_MANAGER:add_event?

#

I was looking through the vanilla jokers and they use that before card_eval_status_text

wintry solar
#

nope

#

the status text function will add the event for you

topaz sun
#

Awesome! Thank you

frosty dock
wintry solar
#

huh

#

til

umbral zodiac
#

how can i make a joker make itself eternal?

orchid thunder
umbral zodiac
#

oh lmao

#

i thought it wouldve been something similar to set_edition but for stickers

orchid thunder
#

well thats what jen uses soo

umbral zodiac
#

if it works

#

why not

rough furnace
#

Stickers are weird in the fact that they aren't mututally exclusive

#

Not sure how the steamodded sticker api works for setting and removing them

umbral zodiac
#

like {eternal = true, rental = true}

rough furnace
#

Well I suspect thunk probably designed it just for pinned and then didn't redesign in when adding new ones

edgy reef
#

You get the sticker config and call set_sticker iirc?

edgy reef
#

Surely next Balatro update adds Pinned texture

#

I still need to do more updating for the sticker, still relies a little bit on vanilla logic

edgy reef
rough furnace
brisk rose
rough furnace
#

Idk haven't touched the steamodded sticker api

edgy reef
#

It just applies them when created (along with adding a var into Pinned so it doesn't screw with card order).

#

Lacks discovery (another thing to add onto the sticker update checklist).

tepid crow
#

otherwise Steamodded wouldn't be able to "find" them

brisk rose
#

It'd be a bit clunky but can't debug-plus just use different methods for vanilla vs modded stickers?

rough furnace
#

Well I'd have to make a new method of interaction

#

Right now each sticker gets its own key on the keyboard

#

I'd have to make some kind of press one key to change and one key to toggle things

#

I've made cursed systems to work with both smods and vanilla dont worry.

brisk rose
#

Maybe pg up pg dwn to scroll through? If the engine captures those keys

#

Wait they're not exclusive

#

Nvm (partially)

rough furnace
#

I might just reuse the 3 keys I already have

#

Maybe I just make a console command

tepid crow
#

so for some reason Balatro's localization strips out any and all spaces (control["X"] and char:gsub("%s+", "") or char) if there's a background colour (the X)

and "fixing" it breaks Balatro's default localization cuz why tf not lol
/rant over

rough furnace
#

I assume it's probably easier to stick in translation tools but idk

#

Could probably get away with just trimming spsced on the beginning and end

tepid crow
#

yeah I assumed it was for readability or something, but helpful for translation might be it too

#

Huh. Stripping spaces at the start/end as last step probably works

mellow sable
loud citrus
#

i'm trying to mod a base game joker but i can't figure out how to prevent a message from appearing

mellow sable
#

Don’t return anything

#

Just return

loud citrus
#

that didn't work :(

#

it reverted it like i never changed anything

#

it's supernova i'm editing by the way

hallow forge
#

Are you trying to edit the code directly?

#

You shouldn’t and can’t do that

loud citrus
topaz sun
#

Do you guys know how to make stickers stick to the correct locations (not floating) in non-conevntionally sized jokers?

loud citrus
hallow forge
#

ah

topaz sun
loud citrus
topaz sun
#

Even if you keep the return but without the message line?

loud citrus
#

yeah

tepid crow
topaz sun
topaz sun
topaz sun
topaz sun
loud citrus
#

tried that, gives no mult like i want but the message still appears

topaz sun
#
  return {
    message = '',
    mult_mod = 0
  }
end```

What about this?
loud citrus
#

same resalt

tepid crow
topaz sun
#

Still, good oportunity to learn some new stuff

topaz sun
loud citrus
#

looking at bunco they replace jokers that already functioned based off return 🐟

tepid crow
#

wouldn't supernova fall-back on it's default behaviour?

#

if you don't return anything?

#

or is it just an empty message pop-up

loud citrus
#

yeah but i should be returning {nothing}

brisk rose
#

Doesn't the output of functions just sit and do nothing if you don't return?

loud citrus
tepid crow
#

yeah that sounds like it's falling back on some sort of behaviour

loud citrus
loud citrus
lusty epoch
#

did you change the name of it

loud citrus
lusty epoch
#

you need to do that to stop the original code from working

loud citrus
#

oh

#

but i sucessfuly changed delayed grat this way

lusty epoch
#

maybe not actually but worth a try

#

I know cryptid's green joker take ownership does

#

it's worth a try

brisk rose
loud citrus
loud citrus
lusty epoch
#

Yeah I’m stuck then

#

Sorry 😔

loud citrus
#

it's okay

#

i was thinking it would be a silver bullet

#

Delayed Gratification didn't even put up a fight lol

tepid crow
tepid crow
loud citrus
#

i've returned nothing, something, nil of something and the game won't give up sending a message, even if it's completely broken lol

brisk rose
opal spade
#

if you want to prevent a vanilla joker from firing off their vanilla effect, just taking ownership and defining a calculate function should suppress vanilla functionality

brisk rose
#

Apparently the vanilla message is still being used

#

From what I can gather

loud citrus
tepid crow
#

Rose has tried (lmk if I missed any rose):

return {message = false, mult_mod = 0}
return {message = '', mult_mod = 0}
return {mult_mod = 0}
return {}
return
[no return]
loud citrus
brisk rose
#

Did you try, fur the context you dug why it to trigger, adding a message = false?

loud citrus
#

yeah

brisk rose
#

Damn

opal spade
# loud citrus

strange, this should already suppress it due to how take ownership works

loud citrus
#

there are many times i've been told the original joker shouldn't work yet it still does

brisk rose
tepid crow
#

I feel like this is more of a "Steamodded™️" moment

brisk rose
#

Lol true probably

tepid crow
#

depends on what the actual cause is gonna be

brisk rose
#

Though idk what's going on behind the scenes

#

Supernova might just be coded abnormally for some reason

loud citrus
#

it's reporting this at all times and that's all it does 😭

#

BUT I CAN CHANGE IT, but removing it isn't an option???????????

brisk rose
#

If I understand it correctly

opal spade
#

you can try lovely patching that line to only go off if you have the option for supernova off

loud citrus
#

i know nothing lovely 💀
i only know basic lua by messing with games

tepid crow
opal spade
#

shouldn't be that hard

brisk rose
brisk rose
#

Yeah that looks normal

tepid crow
#

u good coonie?

#

lmao

brisk rose
#

Phone isn't clearing text box when I send

loud citrus
#

also can we just talk about for a moment that this game is built on if and elseif statements

#

💀

tepid crow
#

most jokers are unique enough to warrant it tbh

#

you do not want to try and directly edit any of the UI code lol, such a pain

brisk rose
tepid crow
#

true, could have a Jokers.showman.calculate = function() ... end

loud citrus
#

so the context lag would be greatly reduced or eliminated

#

because it would become an object check instead of the whole game check

opal spade
loud citrus
#

time to figure out how to forcibly add mult 😭

opal spade
#

what

orchid thunder
#

What did you do to that joker

brisk rose
loud citrus
#

i have no idea what to do anymore

orchid thunder
#

Wait wrong jut

#

How do I do the code box thing

tepid crow
#

use the ` instead for a codeblock

orchid thunder
#

Thanks

opal spade
#

context.blueprint_card or card for blueprint compat

tepid crow
#

```lua
-- code
```

for a multi-line (lua) block

orchid thunder
#
SMODS.eval_this(card, {
                mult_mod = card.ability.extra.mult,
                message = localize({ type = 'variable', 
 key = 'a_mult', vars = {number_format(card.ability.extra.mult)} })
 })
loud citrus
orchid thunder
#

Ok good because I'm don't with code block thing on mobile

#

Done

opal spade
#

blueprint compat

loud citrus
#

now to get rid of the vanilla message 🐟

#

oh right

orchid thunder
#

What are you doing

opal spade
#

also doing it through eval this instead of return might make it incompatible with retrigger jokers, so maybe slap a return true under it

loud citrus
opal spade
loud citrus
#

oh

opal spade
#

blueprint can't replace it

orchid thunder
opal spade
#

you have to manually specify that

loud citrus
opal spade
#

just make the first argument in eval_card context.blueprint_card or card

loud citrus
#

OH! that makes so much more sense

#

works like a charm balatroheart

#

also the better debug mod is a life saver scholar

umbral zodiac
#

genuinely does anyone know what im doing wrong

making this joker is turning me INTO the joker

umbral zodiac
#

yeah

tepid crow
#

talisman makes it so that numbers are actually tables

#

(those table then represent a number)

umbral zodiac
#

thank you Talisman very Uncool

#

i am but a simple redacted i need no tables for numbers

tepid crow
#

only way to get past Lua's integer limit 🤷

umbral zodiac
#

how can i use it as a number

tepid crow
#

(and if Lua was a better redacted language you could overload it)

#

do you want compatibility with talisman in the future?

umbral zodiac
#

yea my mod is a cryptid addon

#

it needs to work with talisman one way or another

tepid crow
#

then you'll need to convert your numbers into talisman's format

#

iirc you can do to_big(number) for it?

umbral zodiac
#

hoping copilot can do the tedious part of that form e

#

do hardcoded values for operations and comparisons need to be converted or nah

tepid crow
#

brother you do not need copilot for it

umbral zodiac
#

if u could paste around text i would do it manually but pasting it and then moving my cursor is like wasting my lifetime

lucid sun
#

does anyone know what im doing wrong here? trying to get glass cards to be given polychrome, preferably after scoring, but atm they are not given anything at all. looked at aqua ghost in world ends with jimbo and thought that would help but cant seem to get it to work

umbral zodiac
limpid flint
#

Because they are stored in tables

umbral zodiac
#

yeah i know

#

im wondering how you are supposed to concat them

tepid crow
umbral zodiac
#

ahh yea its :to_string

rustic flint
#

ok i'm pulling my hair out because of this error, i literally don't know what's wrong with my code i've double checked it like 30 times

    key = "pop",
    loc_txt = {
        name = "Pop Joker",
        text = {
            "If hand played is a",
            "{C:attention}Pair, Three, or Four of a",
            "{C:attention}Kind,{} gain {C:mult}+#1#{} Mult",
            "{C:inactive}(Currently {C:red}+#2#{C:inactive} Mult)"
        }
    },
    rarity = 1,
    pos = { x = 0, y = 0 },
    cost = 4,
    blueprint_compat = true,
    discovered = true,
    config = { extra = { pop_add = 1 } },
    calculate = function (self, card, context)
        if (context.scoring_name == 'Pair' or context.scoring_name == 'Three of a Kind' or context.scoring_name == 'Four of a Kind' or context.scoring_name == 'Five of a Kind') and not context.blueprint then
            card.ability.mult = card.ability.mult + card.ability.extra.pop_add
            return {
                message = localize('k_upgrade_ex'),
                colour = G.C.RED,
                card = card
            }
        elseif context.cardarea == G.jokers then
            return {
                message = localize{type='variable',key='a_mult',vars={card.ability.mult}},
                mult_mod = card.ability.mult
            }
        end
    end,
    loc_vars = function (self, info_queue, card)
        return { vars = { card.ability.extra.pop_add, card.ability.mult } }
    end
}```
tepid crow
umbral zodiac
#

i should be fineee

#

(unless interrupted) what i’m trying to display shouldn’t go past like 10

tepid crow
#

not really relevant

#

it's about which version of talisman the user uses

umbral zodiac
#

oh wait

#

i’m sorry i’m slow as hell 😭😭

tepid crow
#

there's different "methods" of storing the number, talisman supports 3 I think?

umbral zodiac
opal spade
tepid crow
umbral zodiac
#

it might not matter since the numbers i was trying to concat werent too relavent to scoringt

lucid sun
rustic flint
#

why the hell does it think out_mult is nil

#

i literally set it in both the config and the set_ability

orchid thunder
#

i need an example of how a consumable works but in steamodded

#

for exable stone card writtin in steammodded

rustic flint
#

just look at other mods code

orchid thunder
#

whats a goood mod to look at

rustic flint
#

for consumables?

orchid thunder
#

no enhancements

rustic flint
#

ohhhh

#

like custom enhancements?

orchid thunder
#

yes

rustic flint
#

if all else fails there’s an example in cryptid

orchid thunder
#

like stone card for bonus card

orchid thunder
rustic flint
#

hm

#

try golds cards?

rustic flint
orchid thunder
#

why this no work

#

it should be no rank and no suit but insted it has a rank and a suit

loud citrus
#

i have no idea

#

i would say look at how the tower converts?

glad wasp
#

hey, im incredibly new to balatro modding (litterally just started like an hour ago) and I have no clue how to check for suits. the template I'm looking at doesnt go over it, but it does go over checking other things like face cards and specific values by doing this (this is for the number cars specifically): context.other_card:get_id() == 10 could someone tell me how to basically do this but for suit? (i hope someone sees this soon i have to complete this by tomorrow but i also dont wanna be up all night)

loud citrus
#

though it will be very difficult to do anything if you don't know the rules of lua

glad wasp
#

i have done a little bit of lua before

loud citrus
#

okay that's good
the steamodded page has a handful of bare bone mod examples as well

#

also (not plugging i swear!) my mod i've been working "rebaloed" has great examples of coding custom joker effects

#

bunco has a lot of suite based code

#

though also looking at the tarot cards from the base game is perrety good too!

brisk rose
#

Working on a proof of concept for my mod that exports the collection to a webpage. So far I can get a list of vanillia joker keys

#

I know priority inf probably isn't valid, but I doubt that's my problem

#

yeah I removed it and no change

#

I think I need a context or something

#

or maybe the set for smods jokers is different

glad wasp
#

ok so now it seems like i might have issues installing steamodded? I followed the instructions on the github wiki, but its not showing up...

orchid thunder
#

great still has a rank and suit

loud citrus
glad wasp
#

it goes: AppData/Roaming/Balatro/Mods/Steamodded-main

loud citrus
#

huh, inside the folder is it's contents and not a repeated name right?

glad wasp
#

yup, even double checked just now

loud citrus
#

because the last thing i would ask is if you have lovely

glad wasp
#

ah, you have to install that separately?

loud citrus
#

yeah

#

just like steamodded but it's own folder

glad wasp
#

gotcha, im guessing its linked somewhere on the steamodded github?

loud citrus
#

yes

#

also the lastest version of steamodded is the source code

glad wasp
#

omg chrome is blocking the download i hate chrome

opal spade
#

do info_queues support main_end?

brisk rose
#

How do you get the actual localized name and description from a joker's center?

#

this almost works for the name, but some of them are bare keys and other weird stuff

frosty dock
#

localize{type='name_text',set=center.set,key=center.key}) should do iirc

frosty dock
wintry solar
#

You need replace_base_card I believe

brisk rose
frosty dock
#

yeah that's what I mean

#

except why not use v

brisk rose
#

and I'm just figuring this out as I go along

tidal edge
#

trying to detect if a face card is scored; anyone know why this line is crashing my joker when sold

wintry solar
#

Because it runs on the selling card context because you haven’t added a check to make sure you’re in the correct context

brisk rose
#

how do I get the description? I presume it's pretty similar

wintry solar
#

Change type to description iirc

brisk rose
#

tried that, it's blank

wintry solar
#

It’ll be a table

tidal edge
wintry solar
#

You might need to iterate over it and write each line individually

wintry solar
nocturne garnet
#

oh my god why did no one tell me one of my jokers didnt have a calculate function 💀

#

its been here since forever

#

wtf lmfao

tidal edge
#

this is checking if a face card has been scored

#

then doing a thing

frosty dock
#

of this is what I assume it is, you should need if context.cardarea == G.play and context.individual and context.other_card:is_face() then

wintry solar
#

👆

tidal edge
#

ill try it out

#

fuck now its crashing on startup

#

i cant even play

#

if it adds more context this is what it was for

nocturne garnet
#

I ADDED DRINKING TO BALATRO

tidal edge
#

both of these lines of code are causing crashes

#

only because of other_card

#

idk why

frosty dock
#

I'm pretty sure that's correct as is?

tidal edge
#

yeah so idk why it doesnt like it

#

context.other_card is perfectly valid but

#

lemme pulll up the error

brisk rose
tidal edge
#

the jokers.lua file is the one my thing is in btw

#

and heres the line it hates

brisk rose
#

probably just my naive approach being well... naive

#

also doesn't help that I don't really understand "pairs" yet

glad wasp
tidal edge
#

if a card played is a face then

#

apply x mult

#

its still erroring out for no reason

wintry solar
brisk rose
brisk rose
wintry solar
#

That’s an issue with the localise but then

brisk rose
#

wrong reply

brisk rose
loud citrus
brisk rose
#

and you'd have card.ability.extra.x_mult?

umbral zodiac
wintry solar
brisk rose
glad wasp
brisk rose
glad wasp
wintry solar
loud citrus
#

download the latest release

glad wasp
#

ok

#

wait i see the problem now

#

that was the same place i downloaded it

#

but i missed a step in the instaqllation

#

oops

tidal edge
#

its issue is with

#

other card

#

all its telling me is it doesn't like specifically "other_card"

#

idk why

nocturne garnet
#

context.other_card needs to exist

#

what are you trying to do

umbral zodiac
#

yea other_card wont exist in a lot of cases, this will run whenever anything happens

#

selecting a blind, selling a card, opening a tarot pack

glad wasp
#

aaand im getting an error message

wintry solar
nocturne garnet
#

what is it that they're trying to do tho

umbral zodiac
#

at least thats how scary face works

tidal edge
#

i fixed all of it

#

i put aures fix on one oter card

#

but forgot the other one

#

that was ir

#

lol

glad wasp
loud citrus
nocturne garnet
# tidal edge and heres the line it hates
if context.cardarea == G.play and context.individual and context.other_card:is_face() then
  return {
           Xmult_mod = card.ability.extra.Xmult,
           card = card,
           message = localize {
             type = 'variable',
             key = 'a_xmult',
             vars = { card.ability.extra.Xmult }
            },
          }
end
loud citrus
nocturne garnet
#

alright

glad wasp
nocturne garnet
#

any drinking experts know how to draw wine

#

i need some CERTIFIED alcohol addicts here

loud citrus
glad wasp
loud citrus
#

just to be sure :)

glad wasp
#

im still getting the error

glad wasp
loud citrus
#

hmmmm

glad wasp
#

oh wait in the GAME'S folde

#

r

#

i may not be very smart

#

and it still doesnt work

loud citrus
#

that's okay, i made a blunder too

glad wasp
#

still gettin the error :/

loud citrus
#

ah

#

is your folder called Mods?

glad wasp
#

yes

loud citrus
#

with a capital and an s

#

okay

brisk rose
#

but now it's maing the game crash

#

happens whether I loop it or not

wintry solar
#

Hmmm

#

Try just printing the return of localize to see what it’s giving you

nocturne garnet
glad wasp
glad wasp
#

(i am on windows 10 lol)

#

just gotta test it again

loud citrus
#

that makes so much more sense lol

glad wasp
#

yup it works

#

and i think the mod i made works first try too!

loud citrus
#

as i was helping you i was working on my mod...
i need to know what the heck the game thinks pinned is.

glad wasp
#

you mean how the pinned mechanic works? or..?

loud citrus
#

applying it to a joker

opal spade
#

card.pinned = true

loud citrus
opal spade
#

wrong card

#

youre applying pinned to hex

loud citrus
#

yeah i figured

opal spade
#

eligible_card is what you need to pin

loud citrus
#

but i don't know the thing to punt it on the joker

loud citrus
umbral zodiac
#

did i cook or did i burn (ignore text formatting, i didnt bother with it since the entire description changes)

opal spade
#

who let them cook

umbral zodiac
#

nobody 🔥🏠🧑‍🚒

opal spade
#

on a visual front though you could take the right side and split it into a soul_pos

#

so it floats around

umbral zodiac
#

the texture itself is still a placeholder i just cut it in half because i couldnt tell the difference between it and other jokers

#

there was probably an easier way to tell but doesnt matter to me

umbral zodiac
#

thats fair

crisp coral
#

left can definitely be reworded, idk about right

umbral zodiac
#

3rd line of post-eternal is definitely terrible

crisp coral
#

/1 Mult, increases by 0.5 per round up to 5
After 5 rounds, loses Eternal
Sell this card to generate a random Joker

idk how you'd rewrite the rarity scales with round held part

umbral zodiac
#

i dont think i can do any formatting

loud citrus
#

is orange a color i can use in descriptions?

umbral zodiac
umbral zodiac
opal spade
#

how do u do the change

wintry solar
umbral zodiac
#

the bad way

opal spade
umbral zodiac
#

because i felt like not caring about good code

crisp coral
umbral zodiac
#

i make this mod for fun and good code takes less time to be fun

loud citrus
wintry solar
#

You can either add the colours you want to the loc_colours table to use with C:colourname, or you can use V:1 and have a colours list in your loc vars

crisp coral
loud citrus
#

no

opal spade
umbral zodiac
#

i was not aware of the key existing

#

how do i use that for an alternate description

#

*in the loc_txt part

opal spade
#

you need to process loc

crisp coral
#
return {
  vars = {},
  key = "j_joker"
}

probably

umbral zodiac
#

i mean like how do i define a key for the description

wintry solar
#

You should use a localisation file to organise it all

umbral zodiac
#

organized code i hardly know her

loud citrus
umbral zodiac
#

what doesfish mean

opal spade
wintry solar
#

You should have loc files though

umbral zodiac
#

i may do it if i plan to release my mod publically

umbral zodiac
#

actually yea i will if i release it to more than just friends

loud citrus
wintry solar
mental nacelle
#

ive got a mod that is literally only rules for challenges, would a localization file be useful there or should I just leave it all in one

crisp coral
#

🐟

umbral zodiac
#

do i now

wintry solar
umbral zodiac
#

beam the knowledge into me bro

#

telepathy it

mental nacelle
brisk rose
#

I wanna play Reverie and pip my dice

loud citrus
#

the game uses orange for pinned so i thought it would be there lol

opal spade
#

are you sure its orange and not attention

loud citrus
#

placeholder for now 😭

wintry solar
brisk rose
# wintry solar

why did they make global colors different from loc colors? it seems.... confusing at best

crisp coral
#

are you fucking kidding me

wintry solar
#
local text = {}
localize({type = “descriptions”, set = v.set, key = v.key, nodes = text})
for _, t in ipairs(text) dowrite to file
end
#

I think it’s this

umbral zodiac
#

the joker itself may suck but you gotta admit the texture is even worse 🧊 ❄️

brisk rose
#

no crashes though

wintry solar
#

Should be t

#

Can you drop a sendDebugMessage(tprint(text)) before the for loop?

#

Oh hang on

wintry solar
brisk rose
#

I thiiink I tried that, but I will try again

#

because I did see raw_descriptions being used too

glad wasp
#

does anyone know how to make a deck give you a joker off the bat?
ive tried to look for a mod with that but haven't found anything and also im delerios from exhaustion and would prefer a straightforward answer

brisk rose
#

and I tried your new version with raw_descriptions too. no crash, but no output

brisk rose
#

because I did try that

#

didn't find anything in the logs at least

#

if anyone wants to try it themselves, this is the whole file, reverted to the version that doesn't crash

--- STEAMODDED HEADER
--- MOD_NAME: Collection 2 HTML
--- MOD_ID: Collection2HTML
--- PREFIX: collec
--- MOD_AUTHOR: [gaycoonie]
--- MOD_DESCRIPTION: Outputs collection to local webpage
--- BADGE_COLOR: 00CCFF
--- LOADER_VERSION_GEQ: 1.0.0
----------------------------------------------
------------MOD CODE -------------------------

SMODS.Joker.post_inject_class = function(self)

    io.output(assert(io.open("file.txt", "a"))) -- if this is for binary data, use wb on windows

    for card, v in pairs(G.P_CENTERS) do
        if G.P_CENTERS[card].set == "Joker" then
            io.write("{")
            io.write("\n")
            io.write("name:")
            io.write("\"")
            io.write(localize{type='name_text',set=G.P_CENTERS[card].set,key=G.P_CENTERS[card].key})
            io.write("\"")
            io.write("\n")
            io.write("{")     
            io.write("text:")
            io.write("\"")
            local text = {}
            localize({type = “descriptions”, set= v.set, key= v.key, nodes = text})
            for _, t in ipairs(text) do
                io.write(t)
            end
            io.write("\"")
            io.write("}")
            io.write("\n")
            io.write("}")
            io.write("\n")

        end

    end

end






----------------------------------------------
#

(how do you do code blocks?)

loud citrus
#

""

#

copy my message

brisk rose
brisk rose
#

backslash

loud citrus
#

||/||

brisk rose
#

* like this

#

before the character

loud citrus
opal spade
#

<code>

loud citrus
brisk rose
crisp coral
#

can you make a copy of a built-in lua function?

brisk rose
mental nacelle
#

all 3 of my braincells cannot figure out localization files

glad wasp
languid mirage
glad wasp
mental nacelle
#

i've been looking at Bunco for it, they use one

languid mirage
#

are they using localization folder?

#

because that's the only correct way for 1.0.0

#

ok they dont

mental nacelle
#

oh you mean like "localization/en-us.lua"

languid mirage
#

look at like lobotomycorporation

#

yeah

#

also steamodded has localization files

#

tho it's only for UI stuff

#

for jokers and other collection stuff I recommend looking at mods that add those

mental nacelle
#

im gonna look at lobotomycorp

wintry solar
languid mirage
#

cryptid also started adding localization files recently

wintry solar
#

Does this link work

languid mirage
#

I think it's easier to understand when you have whole project in front of you

#

so you can search by keywords and see what goes where

opal spade
wintry solar
#

Because I started badly and carried on

languid mirage
#

["key"] works for non standard keys with symbols like - or spaces or .

opal spade
#

interesting

crisp coral
#

i have now accepted that i just spent an hour trying to work on something that is impossible to do

#

(multiblind)

mental nacelle
#

i am so confused where do they process local text

#

i might be dumb

languid mirage
#

everything in localization folder is processed automatically by steamodded

#

the example you saw in bunco is outdated

mental nacelle
#

that's cool actually

languid mirage
#

yeah, it's very convenient

languid mirage
mental nacelle
#

i had localization down in basic code but this is super convenient actually

#

unrelated but does anyone know how to detect the cards used in the collection book? (specifically the edition ones)

crisp coral
languid mirage
#

uh yea that sounds very hard if you want to keep other mods compatibility

#

in a vacuum that is probably doable

crisp coral
#

don't think i can do it with only lovely+smods either because everything is written for singular blinds

brisk rose
#

after that I just need to figure out rarities, mod names (and preferably badge colors) and images

#

then it's just formatting

brisk rose
wintry solar
#

I’ll take a look later today or tomorrow

brisk rose
#

np :3

nocturne garnet
#

did i cook or nah

nocturne garnet
brisk rose
#

I'm trying the former right now, and everything isn't breaking. It also isn't working though

languid mirage
#

it doesnt really make sense to use lovely for this

#

if you're trying to interact with steamodded objects

brisk rose
#

yeah I thoght so

#

I just wasn't sure if smodded liked to pass code to love2d (showing my ignorance, lol)

#

can I get the sprite from the center object I'm already using or do I need a seperate loop for this?

#

and how do I pass it to the function, and name the file with [key].png?

mental nacelle
#

does anyone know how i'd give a variable to specifically these cards

brisk rose
#

I didn't delete your irrelevent comments, lol

#

and i probably still have blueprint+ specific code

languid mirage
#

dont have time this week to help with it

brisk rose
#

no worries

languid mirage
#

but you're using self. instead of actual sprite

#

you kinda have to know how lua and balatro stuff works to be able to operate with what I said

brisk rose
languid mirage
#

yeah what I said needs to be processed

brisk rose
#

lol

languid mirage
#

you cant just copy and it will magically work

brisk rose
#

I know that, lol

#

I was experimenting before

#

but reverted to make sure it would work in concept

#

but yeah now that I know I'm not doing it completely in the wrong place I'll start messing with it again

#

I knew that part would probably have to be replaced

#

I had it as v.sprite at one point, with v being the joker object

wintry solar
mental nacelle
#

i'm trying to let editions in the collection load when they're disabled by challenge rules

crisp coral
#

why tho

#

that's super niche

mental nacelle
#

hovering over Blurred (from Cryptid) in the collection book crashes when the rule is enabled

#

also none of the shaders load in the collection

#

alternatively is there a way to check if a function was called within a different function?

wintry solar
#

Just check what cardarea they’re in

opal spade
#

collection cardareas have a special tag iirc

mental nacelle
#

i might not be looking in the right place but i cannot find the cardareas for collection

wintry solar
#

It’s something like card.area.collection

mental nacelle
#

i've found G.your_collection[1] = CardArea(...)

#

i'm gonna try to find where cardarea is defined

#

wait i found it

nocturne garnet
mental nacelle
#

self.area.config.collection works for the collection cards outside of a run but inside a run it does not

lucid sun
#

any idea on why this says in nil rather than the number?

opal spade
#

and what's your loc_txt

opal spade
lucid sun
#

loc_vars = function(self, info_queue, card)
and local text is "When {C:attention}Blind{} is selected", "{C:green}#1# in #4#{} chance to create", "a {C:tarot}Judgement{}, {C:tarot}Justice{}", "or {C:tarot}Hanged Man{}", "{C:inactive}(Must have room)"

crisp coral
#

post the entire loc_vars, also #1# in #4# should be #1# in #2#, these correspond to the order of the variables in your loc_vars

lucid sun
#

awesome, thank you both

mental nacelle
brisk rose
#

I think I just don't know where the sprites are in relation to the centers (or if they're even accessable) to pass to love2d to draw

crisp coral
#

if you were following stupxd's code then self should be a Sprite object, no?

brisk rose
#

yes, but I don't know how to get one of those when I'm iterating over G.P_Centers

#

do I have to iterate over something else in a different loop?

crisp coral
#

so assuming you're passing a Sprite object as the image parameter, then it should be

image.atlas.image,
image.sprite
brisk rose
#

that makes sense, I just need to get all the joker sprite objects

languid mirage
#

card.children.center

#

is the only sprite you need

#

uhm I guess

#

card.children.floating_sprite

#

for those with a floating sprite

brisk rose
#

and how do I get the card object? Do I need another loop or is my G.P_Centers loop sufficient?

#

basically should I have done this differently all along? I was following someone else's advice to get where I am with the loop

languid mirage
#

I think you should still be able to do it with G.P_CENTERS, but can't help you with that

brisk rose
#

np

languid mirage
#

maybe take a look at how create_card works

#

so you can go through all centers and create card for each

#

not very efficient but it gets the job done

crisp coral
#

Sprite(0, 0, G.CARD_W, G.CARD_H, G.ASSET_ATLAS[center.atlas], center.pos)

#

makes a sprite

#

wait

opal spade