#💻・modding-dev

1 messages · Page 93 of 1

wintry solar
#

you're using the wrong context

stiff locust
#

what would be the right context

wintry solar
#

oh wait I cant read nvm

stiff locust
#

i need it to give mult during joker_main

#

i based the code on gros michel2 from the steamodded example mod

#

this like is g.scoring_hand[i] = g.play.cards[i] iirc which is the effect that makes it so every played card is scored

#

there's zero possible way it could be splash

#

I'm 99% sure this issue is being caused by banana tree

wintry solar
#

was that screenshot from the lua dump?

stiff locust
#

yes

#

and the highlighted line is 1445

#

reproduced it on red deck with no sleeve on red stake

#

it has to be banana tree

wintry solar
#

you've got an extra end before your return

stiff locust
#

huh

wintry solar
#

so you're returning this in EVERY context

stiff locust
#

oh

wintry solar
#

if you had proper indentation it'd be obvious

stiff locust
#

??

#

OH

#

I see

#

oh my god

wintry solar
#

also why do you track how many cards have been splashed in two variables?

stiff locust
#

that might be a logic error

wintry solar
#

I don't see the need for your remaining variable

zealous glen
#

And once again the day was saved thanks to the Powerpuff Modders

stiff locust
#

uhh

#

hold on

#

oh

#

it crashed when i played a splashed card

#

but this crash it different i can fix this one :D

#

i can't fix this one i don't understand it

#

crashing on 475 which is this one and it says it's a nil value??

#

well it says "attempt to index field extra (a nil value)"

#

but i defined the value properly and it works in the joker description

wintry solar
#

you redefine card in your loop

stiff locust
#

oh

wintry solar
#

to a playing card in the full hand

stiff locust
#

yeah that makes sense

#

it was trying to change the playing card's extra field

wintry solar
#

yup

stiff locust
#

it works now

#

i think i want to change one more thing about it though (before i test if the pool flag is working)

#

currently on the hand it goes extinct

#

it goes extinct before giving mult

#

i want it to give mult first, then die

#

but you can't execute code after a return can you

nocturne garnet
wintry solar
#

the destruction needs to be in context.after

stiff locust
#

gotcha gotcha

nocturne garnet
wintry solar
nocturne garnet
#

yeah

wintry solar
#

cool cool

nocturne garnet
#

i just forgot that it returns multiple things

stiff locust
#

the pool flag worked okay

tepid sky
#

how tf do i make a blueprint?! as a smods joker

#

nvm

#

i got it

#

i took some insparation from cryptid

nocturne garnet
#

why does it not undisable wtfff

pine plover
#

when I started with this deck, it crashes

proven lava
#

my modded jokers show up as incompatible with jokers like blueprint and brainstorm but they work just fine, is there a way i can make them show as compatible?

nocturne garnet
#

that looks like steamodded 0.9.8

pine plover
wintry solar
#

nobody will help you with 0.9.8 code

#

it's been depreciated for many months

tepid sky
pine plover
tepid sky
#

question, how do i check for the amount of jokers you have?

stiff locust
#

and the joker limit is G.jokers.config.card_limit i think

tepid sky
#

like the amount of slots?

stiff locust
#

joker slots yeah

tepid sky
#

nice

stiff locust
#

#G.jokers.cards is how many you have cause the # is length

#

and it's a thing with all your jokers in it

tepid sky
#

thanks!

proven lava
#

what do i use to update the amount of money during a blind?

#

like business card or to do list

crisp coral
#

ease_dollars

proven lava
#

that works but its not quite what i had in mind, im using this for a joker and theres no indication for it being caused by the joker

wintry solar
#

you can throw a card_eval_status_text in for a visual message on the joker too

proven lava
#

thank you

dapper crown
#

Where do i start modding

#

0 experience

#

0 skills

tepid sky
#

or you can first learn coding and come back 🤷‍♂️

nocturne garnet
#

gotta love self advertisement

tepid sky
#

so true

nocturne garnet
tepid sky
#

lol

stiff locust
nocturne garnet
#

one day ill be cryptid.....

#

right?

stiff locust
#

one day i'll make good enough art 😭 anyway how do I force deselect cards

#

figured it out

frosty dock
#

CardArea:unhighlight_all()

rough furnace
#

Does this break that one boss with the card must be highlighted?

stiff locust
#

this extra card selection stuff is all really out of my territory

#

i don't know how to fix it so i think i'll just leave it

#

selling this specific joker to deselect this specific card from this specific boss blind is very specific that i think its chill

#

it's essentially the same as "all cards debuffed until 1 joker sold" so /shrug

young dew
#

i'm having a weird error and i don't know how to solve it

rough furnace
#

as a sanity check, can you verifty file integrity in steam?

young dew
#

i figured out which part of the code provoked the crash

#

but thanks anyways 👍

nocturne garnet
#

chat how the fuck does the fish work

#

nvm im stupid

#

how do i get a drawn card tho

stiff locust
zealous glen
mystic river
#

okay so how do we make a deck add playing cards to the deck

mystic river
#

specifically, at the beginning of a run

#

for that matter, how do you do things at the beginning of a run in general

#

i somehow just now remembered that sixsuits does exactly what i'm trying to do and i can just look at that
i've been trying to think of a mod that already did the thing for days <.<

elder vapor
#

how can i check to see if a card is a playing card?

#

ok got that figured out, do cards from the playing card booster packs have card.playing_card?

tepid sky
#

i know its not going to work

#

but imma try anyways

#

just like expected, didn't work

#

just retriggered the first joker a phew times

wintry solar
#

you never change the card.ability.extra.queue in your retrigger block

tepid sky
#

what?

wintry solar
#

when you enter this calculate function in the context you want (context.retrigger_joker_check) the queue is set to 1, and you return before oyu ever change it

tepid sky
#

hmm

#

so i need to put the queue +1 before the return?

wintry solar
#

you just always return after checking the first card

#

it's a logic error

tepid sky
#

so.. put the return at the end of the code with like a:

#

wait no, i don't make any sense

wintry solar
#

don't return in the else block

tepid sky
#

rn got this, keeps crashing the game (cuz like balatro stopeed working .exe)

wintry solar
#

again, you're only changing the queue value when you get a match and return

#

so this is infinitely repeating if the context.other_card isn't your first joker

tepid sky
#

ooh so i should put the repeat above the context.retrigger_joker_check line and add queue + 1 right under it

wintry solar
#

what are you trying to do?

tepid sky
#

just retrigger all jokers

wintry solar
#

look at cryptid's retrigger stuff, I'm sure there'll be something in there that does this

tepid sky
#

oh ye canvas

zealous glen
#

@wintry solar I have a question about Enhancements. In the documentation, you say config can hold default values that are calculated automatically, but both in the calculate example and in Ortalab you manually define {extra = {x_mult = …}} and calculate it

wintry solar
#

I never use the default stuff

zealous glen
#

Well, but it's there, so I would like to understand how it works

#

The documentation wasn't clear to me

wintry solar
#

afaik you can simply put config = {xmult = 2}, and it'll work

zealous glen
#

But I guess if I define x_mult inside config, then I don't need calculate unless the Enhancement does something else?

wintry solar
#

I believe so

zealous glen
#

Something like this (WIP)

wintry solar
#

looks good, give it a try

elder vapor
#

is there any way to remove the yellow squiggly line under every global variable 😭

zealous glen
wintry solar
#

yeah I don't know why the name plates have a title in the collection

edgy reef
#

It's something to do with Enhancement API using SMODS.Center's generate_ui function, which forced the name to show up even when they shouldn't.

zealous glen
#

I didn't even notice the name plate on the bottom

#

I was talking about the white one on top

zealous glen
#

Are contexts for cards in the deck or discard pile evaluated?

wintry solar
#

no

#

maybe the default stuff doesn't work?

zealous glen
#

It starts at 1 so it should only work after you defeat a Boss

#

But if it doesn't look everywhere then I guess nothing got upgraded

wintry solar
#

you'd have to patch your own upgrade evaluation in

zealous glen
#

I just realized I wrote something stupid

#

Lemme fix the code and try again

#

But I guess I will need to end up patching anyways

wintry solar
#

you will

zealous glen
#

Also I don't think the description automatically updates to show the default bonuses?

wintry solar
#

what do you mean?

zealous glen
#

Also the default value does work

wintry solar
#

you need to add it in the description yourself

#

it's not a bonus value like hiker

zealous glen
#

I thought Bonus and Hiker shared a variable

#

Or maybe they just have the same name

#

But are in different tables

#

@wintry solar how do I change the name plate color?

#

White on white is hard to read

wintry solar
#

that name plate shouldn't be there

wintry solar
#

errrm, any vscode experts know why my explorer button is showing my git stuff and I can't browse my project?

rough furnace
#

send screenshot

wintry solar
#

I have no idea how this has happened

rough furnace
#

did you accidently drag the tabs into the thing?

wintry solar
#

seems so

#

yeah got them back now

zenith rover
#

Ok so it seems Lovely won't work on apple arcade macOS

#

Only modifying files directly will work

restive laurel
#

Hii, im planning on making a reskin mod of the game with my assets n whatnot, but I dont know a lot abt the modding stuff here, is there any kinda beginners guide or somewhere i could get started on coding wise? Art's literally all done already

rough furnace
#

Steamodded has a wiki but it's kind of incomplete in some areas. https://github.com/Steamopollys/Steamodded/wiki/01.-Getting-started If you want to just replace all the sprites take a look at this example mod https://github.com/Steamopollys/Steamodded/tree/main/example_mods/Mods/NegateTexturePack and also take a peek at https://discord.com/channels/1116389027176787968/1300851004186820690

GitHub

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

GitHub

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

restive laurel
#

ohh alrighty!! thank you v much :D

gritty valley
#

How would I detect if both the small and big blind are skipped?

rough furnace
#

There's an object you can check somewhere

#

I forget what

#

But probably somewhere in G.GAME

meager aspen
#

anyone know where I can find a blank template for jokers to draw my own textures for them?

#

Made a shitty copy of one incase anybody needs

gritty valley
#

Where does the game trigger the fire effect for score

meager aspen
hot drift
#

How would I detect whenever money is earned? I want to make a joker that gains 1 chip for every $1 you earn

hybrid iris
#

you could try making a new context by hooking into the ease_dollar function thing?

mystic river
#

i should probably figure out localization files at some point
i don't understand how these things work

mystic river
# mystic river i somehow just now remembered that sixsuits does exactly what i'm trying to do a...

what we did works as far as we can tell but it involved deleting some of the code we had lifted from bunco

    in_pool = function(self, args)
        if args and args.initial_deck then
            return false
        end
        return exotic_in_pool()
    end

this is from the old suit code
the question is: what does args and args.initial_deck actually check?
(in case it matters, the current version is:

in_pool = function(self, args)
        if G.GAME.starting_params.treat_Deck then
            return true
        end
        return exotic_in_pool()
    end```
and treat_Deck is set to true by the deck that adds the suit)
#

we played through a run and didn't find any unexpected behavior

hot drift
real sun
#

bro i get this

meager aspen
#

Nevermind figured it out

elder vapor
#

how can i add custom challenge rules? ex. no planet cards

crystal willow
#

Does anyone have tips for learning how to code new jokers in? I’m having trouble getting started 😭

stiff locust
#

example mod with vanilla jokers recreated in smods format

#

refer to it for things like probabilities, incrementing a value, end of round and mid round money, etc

#

i learned about this recently its very helpful

#

it'll give you code structure for things

molten ice
# mystic river what we did works as far as we can tell but it involved deleting some of the cod...

maybe a bit late since you already got it working but still

the question is: what does args and args.initial_deck actually check?
it checks if args is not nil (so, in_pool is called with argument), and in_pool check is called by SMODS with the argument initial_deck = true when the playing cards first populated by the deck in general

For Bunco's code case - otherwise (like in shops, standard packs, Grim, etc), it fell out of that block and return the result of exotic_in_pool() function instead, where additional suit can spawn when exotic suit system is active (played spectrum hand once)
You might want to change that part of your code as well if you aren't tying it to Bunco's exotic suit

crystal willow
mystic river
mellow sable
nocturne garnet
nocturne garnet
weak depot
#

hey, how would i make it so press_play's effect doesn't trigger if the hand is debuffed (and thus it doesn't crash the game from having a hand with no cards scored)?

SMODS.Blind {
    name = 'The Fracture',
    key = 'bs_fra',
    atlas = 'frabossatl',
    dollars = 5,
    mult = 1,
    boss = { min = 1, max = 10 },
    loc_txt = {
        name = 'The Fracture',
        text = {'Destroy first scored card',
                'Must have 2+ scoring cards'}
    },
    discovered = true,
    boss_colour = HEX('672A62'),

    debuff_hand = function (self, cards, hand, handname, check)
        if #cards < 2 then
            return true
        else
            return false
        end
        return false

    end,
    press_play = function (self)
        G.E_MANAGER:add_event(Event({func = function() G.play.cards[1]:start_dissolve(); return true end })) 
        return true
    end
}
gritty valley
#

Where are the valid hands stored? Like all hands that have been unlocked for that run?

placid frigate
#

Hey, I'm trying to have my Joker destroy played hearts cards and add it to Xmult, I tried putting this into my .lau file, but when I hover over it in-game, it crashes.

#

this is the error message

placid frigate
#
  key = "P5JokerMod",
  path = "p5card.png",
  px = 71,
  py = 95,
}

    SMODS.Joker {
  key = 'P5JokerMod',
  loc_txt = {
    name = 'Phantom theif',
    text = {
      "NOW {X:mult,C:white} X#1# {100} Mult WILL: destroys playes {C:hearts}Heart{} cards and adds {X:mult,C:white} X#1# {} Mult "
    }
  },
  config = { extra = { Xmult = 100, Xmult_gain = 1 } },
  loc_vars = function(self, info_queue, card)
    return { vars = { card.ability.extra.Xmult, card.ablity.extra.Xmult_gain } }
  end,
  rarity = 1,
  atlas = 'P5JokerMod',
  pos = { x = 0, y = 0 },
  cost = 2,
  calculate = function(self, card, context)
    if context.joker_main then
      return {
        Xmult_mod = card.ability.extra.Xmult,
        message = localize { type = 'variable', key = 'a_xmult', vars = { card.ability.extra.Xmult } }
      }
    end
  end
}```
#

it might be the text because I haven't changed it to the new one

#

wasn't it

placid frigate
wintry solar
#

You have a typo in loc vars

#

ablity instead of ability

placid frigate
#

god damn it

#

thank you

#

I also thought card.ablity.extra.Xmult_gain was it because I don't think a card existed with that

placid frigate
# stiff locust persona mod? 👀

Yes, it’s based off Joker from Persona 5.The idea for it is to have him destroy played heart cards (stealing your hearts) and adding them to xmult (like vampire)

stiff locust
#

makes sense

placid frigate
#

If you have any insight feel free to share

#

I would also like to make a challenge where you have a deck full of hearts and star off with the Joker

stiff locust
#

i'm more experienced with 4 than 5

restive laurel
shell tangle
# restive laurel I managed to get everythin goin and put the texture pack in game (not using Malv...

You could either take ownership with SMODS.Joker:take_ownership('joker_key',{code here}), I think loc_txt.name = 'whatever' might work, if not, just do loc_txt = {} and then grab the description and name from the localization files and throw them in.

Alternatively, you can do function SMODS.current_mod.process_loc_text() followed by SMODS.process_loc_text(G.localization.descriptions.Joker.joker_key, "name", "NameReplacement"), but it's a bit overkill for just switching joker names, but it's useful if you want to change the name of anything else, say an effect that gets triggered, like if you wanted to change Gros Michel's extinct for some reason.

stiff locust
#

does SMODS.Mods["<mod here>"] search by mod name, mod ID, folder name or something else

restive laurel
shell tangle
stiff locust
#

but none of those three have worked

shell tangle
#

What are you trying to do?

stiff locust
#

check if a mod, in this case, SDM_0's stuff, is loaded

shell tangle
#

There's something about dependencies somewhere, I assume you mean for compatibility reasons, give me a second to find an example,

stiff locust
#

yeah for this I can't have them marked as dependencies because that disables the mod if the dependency isn't found

#

i did also increase the priority to even higher than cryptid in case loading after/before the mod caused it and that didn't work

shell tangle
#

I'm pretty sure there's a SMODS specific line to check for it, but, I can't remember where I saw it,

shell tangle
stiff locust
#

none worked

shell tangle
#

Maybe try setting it to a lower priority as well.

stiff locust
#

the priority of this mod is like e308 is that not enough to load after

shell tangle
#

Probably, I'll download SDM0 specifically and see if I can find it.

#

After a lot of testing, I've realized, it's a lot easier to check a mod when you have it installed - I was testing in my dev copy of the executable, and, installed it into my normal copy, so, obviously, it wasn't finding anything. Still, though, this worked perfectly fine for me.

stiff locust
#

hhuh

#

well then i'm lost

#

maybe i just need to update steamodded

#

i'll try that before anything else

shell tangle
#

Possibly, and if it still doesn't work, maybe either directly copy and paste your code or send a screenshot?

wintry solar
#

That’ll also match when the mod isn’t loaded but is installed

#

You need to do the can load stuff

young dew
#

does someone know how to add text in description of modded ranks?

stiff locust
young dew
#

i implemented that, it's working very well

stiff locust
#

why would you want a second wildcard 😭

young dew
#

for reasons

#

but i don't know how to add text

restive laurel
#

Also, does the current version of steammodded not have a way to replace the seals and the soul sprites? (The ones in the enhancements picture) Looking at the API, it seems to talk abt jokers n consumables, but not seals or the floating soul sprite

proven lava
#

i'm trying to apply Xmult when a certain rank is scored but its not working

#

the return works if its activated with context.joker_main but thats when the joker is triggered

#

nvm i got it working

#

whats the context if i want to check each scoring card before they are scored? like how vampire clears all the enhancements before the cards are scored

maiden phoenix
#

context.before

#

you could also checks vampire's code see which context it uses

proven lava
#

thank you

#

will do that in the future

#

actually where can i find the source code for jokers in the game?

cold peak
#

If you open the .exe as a zip/archive using something like 7zip or winrar you can access all the source code

proven lava
#

thank you

nocturne garnet
nocturne garnet
#

guys i might start using lovely patches

#

wish me luck yall im boutta explode this pc

nocturne garnet
wintry solar
#

How are you trying to make a sprite

mystic river
#

one, it's probably easier to use steamodded for atlases than lovely
and two, did you make a double-size copy for the 2x assets

GitHub

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

elder vapor
#

trying to make it so the values of a joker increases when a blind is defeated but its upgrading multiple times

nocturne garnet
nocturne garnet
#
G.ASSET_ATLAS['littleguy'] = {} --line 7514
            G.ASSET_ATLAS['littleguy'].name = 'littleguy'
            local filename = 'littleguy.png'
            G.ASSET_ATLAS['littleguy'].image = love.graphics.newImage(jimbomod.path.."assets/"..G.SETTINGS.GRAPHICS.texture_scaling.."x/"..filename, {mipmaps = true, dpiscale = G.SETTINGS.GRAPHICS.texture_scaling}) --line 7517
            G.ASSET_ATLAS['littleguy'].px = 177
            G.ASSET_ATLAS['littleguy'].py = 100``` but i do not know how to make it load a sprite
nocturne garnet
wintry solar
#

why aren't you using SMODS.Atlas?

placid frigate
#

would I need to make a new game object for having my joker take played hearts cards and delete them?

weak depot
placid frigate
weak depot
#

for trying to delete cards? no that's for multiplicative mult scaling jokers (eg. hologram)

placid frigate
#

oh ok

#

so I would put G.play.cards[x]:start_dissolve() in loc_vars = function(self, info_queue, card)
return { vars =

placid frigate
weak depot
#

also you would replace x in there with the preferred card

placid frigate
#

the preferred card being the joker's key

orchid thunder
#

what am i doing wrong

#

im trying to change blind size

weak depot
#

i presume you have talisman enabled?

orchid thunder
nocturne garnet
orchid thunder
nocturne garnet
orchid thunder
#

but what if its a big num

nocturne garnet
#

G.GAME.blind.chips = to_big(G.GAME.blind.chips) * to_big(0.95)

nocturne garnet
#

you wouldnt be changing the blind's chips, you would be changing the result of to_big(blind's chips)

weak depot
weak depot
proven lava
#

i have a :start_dissovolve() event in context.after but its activates before the cards have been scored

#

the message appears at the right time but the card is destroyed pretty much as soon as the hand is played

rough furnace
#

Neee to add it to an event so it doesn't disolve until the last queued event is run

proven lava
#

i'll have to look into how to create an event but thank you

proven lava
#

have ran into another issue, when the round ends and the cards return to the deck it comes back up to 52 despite there only being 51 in there

#

1 sec

rough furnace
#

hmmm possibly ghost card

#

I'm not sure what causes them

proven lava
#

this has also caused this

rough furnace
#

yeah thats a ghost card

proven lava
#

will have a look at how the cards in game do this sort of thing

zealous glen
#

game's haunted

proven lava
proven lava
#

ok i'm now using context.destroying_card instead of context.after which stops ghost cards from being created

#

however after destroying the intended card it then destroys the entire hand

#

i think it chains off of each other

orchid thunder
#

how do i make a G.Game value

shell tangle
orchid thunder
#

yeah thanks

orchid thunder
crystal willow
#

having trouble with this, is anyone able to tell me why this is happening?

cerulean rose
#

how do i add eternal to info queue

royal seal
elder vapor
gritty valley
#

How would I pull a random tarot card

#

Where's the array I need to call pseudorandom_element on

#

Nvm realized I can just use the way emperor does it

cerulean rose
jade finch
#

Hi friends! Im new to balatro modding and want to try my hand at making a custom deck with textures.

I know to open the archive and edit the 8bit decks, but i dont have the actual dimensions for when a suit is counted as a new texture. Would anyone happen to know that ratio? like is it 500 x 500? etc.

#

I guess in short, im looking the pixel dimensions for the idividual cards, and not the entire sprite sheet

cerulean rose
#

71x95

jade finch
#

Thank you!

placid frigate
#

It’s there a place that says all functions and where to put theme in your code?

nocturne garnet
placid frigate
elder vapor
placid frigate
#

Let me check it out and I’ll see thanks

placid frigate
#

how would I implement a card for every played heart card it destroys it and adds to a mult (like vampire

gritty valley
placid frigate
stiff locust
# placid frigate how would I implement a card for every played heart card it destroys it and add...
calculate = function(self,card,context)
---context.after is after the hand is scored
---not context.blueprint means this part cannot be copied by Blueprint
  if context.after and not context.blueprint then
  ---loops through every card in played hand
    for index, card2 in ipairs(context.full_hand) do
      ---check for hearts suit, card2 is the value in the current loop
      if card2:is_suit("Hearts") then
        ---destroy the card
        G.start.dissolve(card2)
        ---increment xmult value by adding increase to the xmult value
        card.ability.extra.xmult = card.ability.extra.xmult + card.ability.extra.increase
       end
    end
  end
  ---return the xmult if it's above 1, this removes unnecessary animations/calculations if the xmult is 1, because no change would be made anyway
  if context.joker_main and card.ability.extra.xmult >= 1 then
    return {
    ---text pops up below the joker to show it's giving xmult
    message = localize{type='variable',key='a_xmult',vars={card.ability.extra.xmult}},
    x_mult = card.ability.extra.xmult,
    ---card = card tells the game the message refers to this joker
    card = card,
    }
  end
end

something like this probably

#

this assumes your joker has config = { extra = { xmult = 1, increase = 0.25 } } where increase is the value it increments by
it should start at xmult 1

#

you do also need to actually return the xmult during joker main though which is really easy

#

edited the message to include that part i'm not sure if it'll work or not i'm just writing from memory

stiff locust
#

because the extra table is saved when the game is reloaded

#

cards in card.lua use self.ability.extra instead of card.ability.extra, if you ever copy code from card.lua you'll usually need to change self to card

#

steamodded stuff /shrug

crystal willow
loud shell
# proven lava

You'd likely wanna add a debounce if you wanna stop the chaining

#

code would likely turn into smth like

if context.destroying_card and not already_destroying then
  already_destroying = true;
  G.E_MANAGER:add_event(Event({
    func = function()
      context.full_hand[#context.full_hand]:start_dissolve();
      already_destroying = false;
      return true;
    end
  });
end
#

which'd then make it so it wont destroy more than the 1 card

cinder briar
#

Is there a way to give myself my custom joker using DebugPlus? Also, are there any common reasons for the message "Failed to connect to the debug server"?

hardy viper
cinder briar
#

tyty!

proven lava
#

helped me find a solution that worked

cinder briar
#

Is there a way to display the +mult value of a playing card? The +mult applies correctly but from checking the code there don't seem to be any display strings

proven lava
#

how would i make it so that a joker can only appear in the shop if a stone card is in their full deck?

#

like stone joker

weary jungle
#

check what stone joker does i guess

proven lava
#

thank you

tepid crow
wooden nexus
#

Hey all

#

Trying to see if this all work with some stuff, but idk how to even test it

#

What mods add new handtypes?

elder vapor
#

where is the config stored for a consumeable card?

#

would it be smth like card.config or card.ability.config

stiff locust
#

it's only card as a prefix because the value is defined as card in function = (self,card,context) (at least I think that's how it works)

#

like on vouchers because it's redeem = function(self), you refer to its own values as self.config.extra

#

if it's in a loop say like for index, value in ipairs(G.consumeables) do (i don't actually know if that's the name for the consumable area or not)
then it would be value.config.extra or value.ability.extra
I don't 100% know any of this but this is my best guess from successfully implementing vouchers

elder vapor
#

so a consumable

stiff locust
#

so then you can do for index, value in ipairs(G.consumeables) do and it'll be value.config.extra try that

elder vapor
#

trying to make it so i can use a gemstone consumable directly from a pack, not going well lol

#

unless i'm really stupid, i should be putting G.pack_cards.highlighted[1] instead of c1 lol

elder vapor
mellow sable
#

balatro in 2024

elder vapor
#

illusion of free choice

#

anyways is there a way to force a set of consumable cards (ex. planet) to not spawn in a challenge?

nocturne garnet
stiff locust
#

chat how do I check the stake sticker of a specific joker

rough furnace
#

Carefully

zenith rover
#

Damn I wish I could play mods with the Apple Arcade Mac version but injecting into it doesn't work

#

You can only modify the lua

languid mirage
mellow sable
#

good guesses

#

disabled/modest/mainline/madness

nocturne garnet
#

how about n

stiff locust
rough furnace
wintry solar
#

There some functions I don’t remember the name of that’ll give you the key of the stake

stiff locust
wintry solar
#

core/overrides.lua in smods

zenith rover
#

Some updates on modding Apple Arcade on macOS. You can pass --game with a path to a custom game folder inside ~/Library/Containers/com.playstack.balatroarcade/ and it will use the lua files from there

rough furnace
#

you can probably just take a normal install of love and see if you can get it to load the game.love, and then put lovely in that one

zenith rover
#

The game folder is uncompressed in the Apple Arcade version

rough furnace
#

oh intresting

zenith rover
#

Issue with Lovely is that isn't it injected with native code?

rough furnace
#

no the issue with it is there no framework for it to find offsets for lua functions

zenith rover
#

?

#

Manual patching works

rough furnace
#

the love engine in the apple arcade version is a bit different that the standlone version and due to this lovely can't get info it needs

zenith rover
#

Ah

#

Right because of FairPlay DRM

rough furnace
#

no

#

I think it's just the iOS version

zenith rover
#

Nope

#

It isn't

rough furnace
#

ok can you check smth then

zenith rover
#

Sure

rough furnace
#

in the apple arade version of the app does Contents/Frameworks/Lua.framework exist?

zenith rover
#

Nope

rough furnace
#

yeah lovely needs that to function

zenith rover
rough furnace
#

not sure how the issue is related to my message'

zenith rover
#

Attempt to index nil field platform

#

Using a different version of love probably won't work because it's modified to support Apple apis

rough furnace
#

Oh I see

zenith rover
#

The iOS and Apple Arcade version on macOS are the same

#

(The same in the sense that the lua code is the same)

#

Well it doesn't matter anymore because I got my steam key from humble

zenith rover
#

Damn the save files are not compatible between steam and Apple Arcade

rough furnace
#

they are probably stored in diffewrent spots

zenith rover
#

What I mean is the files aren't compatible

rough furnace
#

oh really?

zenith rover
#

I tried copying Apple Arcade to steam and nothing

rough furnace
#

could you send them

hardy viper
zenith rover
#

Error loading file: JSON Parse error: Unexpected identifier "nan"

hardy viper
#

there should not be nans in the save

zenith rover
#

There is no meta or profile in the apple arcade save

rough furnace
#

the website can't load all valid save files

#

intresting there is no meta or profile

zenith rover
#

It can load a fresh save

#

From Apple Arcade

#

Oh wait that site is for a saved run

rough furnace
#

the site should be able to open every .jkr file the game makes (other than a few weird ones from the demos)

#

but it's kinda a hacky parser so some things dont work right

zenith rover
#

It can open settings.jkr

rough furnace
#

it can open the save.jkr in 3 as well

zenith rover
#

Yes

#

But not 1

#

WHich has a lot of stuff unlocked

rough furnace
#

this file isn't resposible for what's unlocked or not

zenith rover
#

What file is?

rough furnace
#

uhhh meta.jkr iirc

#

is this a glitched seed?

zenith rover
#

Nope

#

Actuallly maybe

rough furnace
#

I think it is

#

thats funny

zenith rover
#

Yep

#

I vaguely remember it having the other files but only temporarly

rough furnace
#

odd

#

can you copy them while they exist?

zenith rover
#

Oh no

#

I may have wiped my save

rough furnace
#

that would explain why there was no meta or profile

zenith rover
#

Thank goodness I made a backup of my saves

#

The backup did not have meta or profile

rough furnace
#

hmm

#

I wonder why it doesn't

#

where is it storing the profile info?

zenith rover
#

Cloudkit maybe

rough furnace
#

can you launch it offline?

zenith rover
#

Yes

#

That has a SQLIte DB

rough furnace
#

looks like something is in there

#

which profile did you want?

#

hmm it has some kind of header not sure how to tell when the actual file starts

zenith rover
#

1

#

It's a SQLite DB

#

With binary data in it

rough furnace
#

yeah I know

#

but the binary data isn't the raw profile data

zenith rover
#

That showed up on my saves

#

Also I may have actually lost my save data now

#

@rough furnace can I dm you about some things?

#

Oh I didn't lose my saves I was just dumb and was running my modded version that has different save locations

#

Ok so it is using Cloudkit since my modded saves are showing up in ./Preferences/com.playstack.balatroarcade.plist

#

Ok figured where it's saved

#

It's stored in that plist file as binary data

crystal willow
#

Would anyone know the cause of this and how to fix it?

placid frigate
stiff locust
#

and yeah idm

placid frigate
nocturne garnet
#

The two sides

stiff locust
placid frigate
stiff locust
#

a link

placid frigate
#

... I meant a link to what

stiff locust
#

oh right my bad

#

a website

zenith rover
stiff locust
#

its arguments are (_center, index), what do those mean

rough furnace
#

well center would be the cards center (probably card.config.center)

stiff locust
#

i don't know what that means so just
how do I run this for splash

rough furnace
#

looks liek the index is optional

proven lava
#

what do i need to put in :set_ability({}) to actually set the ability?

placid frigate
rough furnace
stiff locust
proven lava
#

i'm trying to add an enhancement to a card

#

ah

stiff locust
#

i need this to be able to run even when you dont have splash

rough furnace
#

you'd have to look up it's center

#

just a sec

#

G.P_CENTERS.j_splash should work

zenith rover
#

I'm going to hack together a save extractor for Apple Arcade macOS version

#

~/Library/Containers/com.playstack.balatroarcade/Data/Library/Preferences/com.playstack.balatroarcade.plist is the path to the save file

proven lava
#

how would i apply an enhancement to a card via a joker? before they are scored like an inverted vampire

#

i have it working for editions but i dont know what to use to enhancements

rough furnace
#

like mida's mask?

proven lava
#

yes

stiff locust
proven lava
#

i should look at how the game does that actually i forgot about mask

stiff locust
#

as an example for steel cards

wintry solar
#

Don’t do that

#

Use Card:set_ability

stiff locust
#

that makes more sense

proven lava
#

putting the set_edition in the event causes it to appear at the right time but the effect doesn't apply to the played hand

tepid crow
# proven lava

:set_ability and :set_edition both have arguments by which they can (optionally) delay the visualization.
For some reason, the argument names and order are completely different, so you doing , nil, true for both messes it up.
Check the basegame code and you'll see what the issue is and how to solve it

tribal ocean
#

Where did all of you get your start with modding? I'm trying to finally get around to making my mods, but figuring out where to start is a nightmare

faint yacht
#

A simple Joker. Steamodded has example mods for you to work with.

rough furnace
#
GitHub

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

GitHub

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

tribal ocean
#

Thank you!

#

Already huge place to start, though I wanna ask: how possible is it to modify existing content?

rough furnace
#

yep

proven lava
rough furnace
#

most objects can be taken over using steamodded and if you want to modify stuff further you can use lovely or overwrite functions

tribal ocean
#

Alright, alright, neat. I suppose it'd be fastest to post the planned patch notes for my mod before I go any further and see how possible everything is

rough furnace
#

lets just say pretty much anything is possible, as logn as you have enough time and deitcation

tribal ocean
#

This is what I'm planning so far, though I haven't updated joker pricings, which are probably going to change.

wintry solar
#

I don't think you can delay edition application in the same way you can enhancement

proven lava
tribal ocean
#

I predict the trickiest thing to do will be to indicate which spectral card will be created with Sixth Sense and Seance in the joker description

rough furnace
# tribal ocean https://docs.google.com/document/d/1WebkwV_19CaxLMSkVsYb56IjVliTzQs8BoLlY099Zr4/...

Just went through the jokers:

Joker: probably need a lovely patch
Marble: Probably just take ownership reimplement calculate_joker
Loyalty Card: Probably just take ownership reimplement calculate_joker
Misprint: I think take ownership and change config works
Sixth Sense: This may be a bit trickier, but for the most part, just reimplement calculate_joker + loc_vars.
Seance: Same as above
Ancient: I think this would need a lovely patch.
Certificate: See Sixth Sense
Throwback: I think take ownership and change config works
Rough Gemstone: I think take ownership and change config works
Glass Joker: Probably needs a lovely patch to keep track when any glass shatters + calculate_joker change
Matador: Probably just a lovely patch(?)
Chicot: Probably a lot of lovely patches. Maybe could take ownership of blinds. WOuld need mods to add support```
#

the rest ```
Nebula: I think just take ownershop and change a config (not too familar with decks)
Antimatter: Probably needs a lovely patch. Make sure to account for antimatter not unlocked
Ouija: This might need a lovely patch. Debuffing is weird
Hex: Same as above
Wild card: Lovely patch
Blue Seal: Take ownership reiplement whatever methods seals use
Etheral Tag: Take ownership and reiplement (I think tags can do thata)

orchid thunder
rough furnace
#

any chance you spawned the card before it had the config option set?

orchid thunder
rough furnace
#

daisy_discount isn't defined

orchid thunder
#

its = 1

rough furnace
#

where is it set?

orchid thunder
wintry solar
#

thats not G.GAME.daisy_discount

rough furnace
#

and does that match anything?

#

also did you make a new game after adding the patch?

orchid thunder
#

yeah

orchid thunder
wintry solar
#

well the one you're trying to use is

orchid thunder
#

its not patching?

wintry solar
#

did you start a new game?

orchid thunder
#

yeah il try again

wintry solar
#

oh

#

yo need a comma at the end of your patch payload

orchid thunder
#

hat am i doing wrong

cerulean rose
#

how do i check if a card has a valid rank (ex. doesn't have stone or another enhancement that disables rank)

mystic river
#

stone gives cards a negative id number
if other mods make cards rankless they'll probably copy that

#

(if your mod makes cards rankless you can just check for whatever you do :p )

cerulean rose
#

smods apparently has a field no_rank on enhancements

orchid thunder
#

IM GOING TO FUCKING LOSE MY MIND MY PATHC IS NOT PATCHING

cerulean rose
#

check the lua dump

orchid thunder
#

its not patching

cerulean rose
#

there might be another mod patching at the same spot that could affect your mod's ability to match its pattern

#

check the place where you expect the patch to be

orchid thunder
#

its unchanged

rough furnace
orchid thunder
#

but ima cry ina ball in teh cornner

edgy reef
#

Enhancements can have a no_rank variable in their config so you can check for that and cover modded enhancements with no rank

tepid crow
orchid thunder
#

how is this failing there is nothign wrong with my patch

[manifest]
version = "1.0.0"
dump_lua = true
priority = 0

[[patches]]
[patches.pattern]
target = 'game.lua'
pattern = '''discount_percent = 0,'''
position = 'after'
payload = '''
daisy_discount = 1,
'''
match_indent = true

[[patches]]
[patches.pattern]
target = 'card.lua'
pattern = '''self.cost = math.max(1, math.floor((self.base_cost + self.extra_cost + 0.5)*(100-G.GAME.discount_percent)/100))'''
position = 'after'
payload = '''self.cost = self.cost / daisy_discount'''
match_indent = true


tepid crow
#

(to read the value, not to set it)

cerulean rose
orchid thunder
#

il try that

proven lava
edgy reef
#

no_rank is in card.config.center, not card.ability. But from the look of it this should work.

proven lava
#

i think editions and abilities are just treated differently

cerulean rose
edgy reef
#

yea

orchid thunder
#

same crash

#

i fucging hate modding now

tepid crow
orchid thunder
#

when i get the joker i think i see te problem

#

nope nvm

orchid thunder
#

and idk why

tepid crow
#

well that might explain it haha

orchid thunder
tepid crow
tepid crow
orchid thunder
#

What

#

The

#

Fuck

#

idk what to do

tepid crow
orchid thunder
tepid crow
#

😩

#

you spelled lovely wrong

orchid thunder
#

Omfg

proven lava
tepid crow
tepid crow
proven lava
#

alright

#

thanks again

orchid thunder
#

how can i check when a joker si gettin added or destroyed

crystal willow
#

Still having trouble with this, idk whats wrong with it 😭

zealous glen
#

Try updating Steamodded

crystal willow
weary jungle
#

i should mod

#

i just remembered why i put off modding

uncut knot
#

Hi guys, is there a getting started modding for balatro guide?

shell tangle
crystal willow
#

That was supposed to be self, idk why it got changed back 😭

#

That didnt fix it though 😔

shell tangle
# uncut knot Hi guys, is there a getting started modding for balatro guide?
GitHub

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

GitHub

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

shell tangle
crystal willow
#

Same error

edgy reef
#

This isn't tied to the code you screenshotted tho

#

This is from the loader

#

This is well before the mod file is loaded

shell tangle
#

What's your header?

crystal willow
edgy reef
#

Specifically, some mod failed to load

crystal willow
shell tangle
#

Mod author needs to be in [] brackets.

edgy reef
#

And said failure has mod.load_issues.dependencies set to nil instead of a table

crystal willow
edgy reef
#

I don't know, I haven't seen an error like this

#

Does the mod load by json by any chance?

#

I see some mod with prefix "ExtraCredit" but it doesn't show up on crash log

#

I found it!

#

Whatever mod is loading through json cannot find it's main_file

shell tangle
#

Also, looking at the line numbers, it's missing --- STEAMODDED HEADER as the very first line.

#

That seems like something that'd cause it to not load rather than a crash, but, there's been weirder things.

edgy reef
#

Nah, this wouldn't be it

#

I just recreated the above crash myself.

quiet frost
nocturne garnet
#

that sprite is so offcenter

#

also how the hell does {V:1} color stuff work

wintry solar
#

you pass the colours through in loc vars

#

return {vars = {X, Y, colour = {colour1, colour2}}} iirc

gritty valley
#

I would probably just embed the color data in the strings for each suit no?

shell tangle
wintry solar
#

that's what I said?

gritty valley
#

Yeah it’s essentially the same thing just dif var names

shell tangle
#

Colour only reads 1 object, which has to be a variable that changes, I'm pretty sure, so the colour2 wouldn't get used. But I might be wrong.

wintry solar
#

it reads however many you pass, you just use V:1 V:2 etc.

shell tangle
#

Makes sense, thought you were passing both to V:1. My fault.

wintry solar
#

no worries!

hybrid iris
#

do lovely patches work if they're not in the first folder?

shell tangle
#

Don't think they do, but it might've been changed since I tried it which was quite a while ago - But, it either checks for lovely.toml or a folder called lovely and reads all .toml files inside of it - useful for organizing a mod, not as useful if you're trying to group your mods up into specific folders.

hybrid iris
#

ahhh gotcha

zealous glen
north gale
#

is there any one looking for a modeler

hardy viper
#

i hear that the 2d in love2d stands for 3 dimensional

elder vapor
#

is there a way to add a joker to the soul?

zealous glen
#

A Legendary Joker?

elder vapor
#

yeah

zealous glen
#

Add a Legendary Joker

elder vapor
#

done

#

i already tried spawning it from soul but after the base 5 it started returning the default joker

mystic river
#

how does one go about making a soul-alike that summons from a specific card pool? i looked at #1292971421349445785's poke balls and #1219749193204371456's gateway, but i couldn't really work out what they were doing
-# (actually maybe spaghetti would be a better model, I'll look at that one when i get a bit)

mystic river
# elder vapor i already tried spawning it from soul but after the base 5 it started returning ...

as for this i'm reasonably sure that being legendary is the only condition for the soul to be able to summon a legendary; i'll double check but i recall being able to summon lucky in my mod without doing anything special (e: yes confirmed, the soul can summon this cat)

GitHub

A mod for Balatro that adds a bunch of things I found amusing. - wingedcatgirl/MintysSillyMod

tepid sky
#

how i make a animation atlas? i cannot look it up since the wiki is outdated

#

i assume its the same as a normal atlas but with frames?

wintry solar
#

the wiki has stuff for animation atlases

tepid sky
#

oh then i was looking at the sprites

#

mb

#

thanks!

north gale
#

no response since, i mean i need a modeler for a model pls

mystic river
#

this game is 2d, it doesn't use models

crisp coral
#

let them cook

zealous glen
mystic river
#

yes true
how do i construct that pool?
i already know what jokers i want to put in it

nocturne garnet
#

undeniable combo

nocturne garnet
# mystic river how does one go about making a soul-alike that summons from a specific card pool...

basically, the create_card function has this big ass thing in the start of it
so basically:

if not forced_key and soulable and (not G.GAME.banned_keys['c_soul']) then
  if (_type == 'CardType' or _type == 'Spectral') and not (G.GAME.used_jokers['c_thecardkey'] and not next(find_joker("Showman")))  then 
            if pseudorandom('soul_'.._type..G.GAME.round_resets.ante) > 0.997 then
                forced_key = 'c_thecardkey'
            end
        end
end
crystal willow
tepid sky
mystic river
#

hm
it looks the same as how i did it in my mod, too
what's 777.png look like?

tepid sky
mystic river
#

that looks fine enough
where is it located in your mod's file structure, and does it have both a 1x and 2x version?

tepid sky
#

ye it does

wooden nexus
tepid sky
#

litterally same problem?

#

with animation atlas?

mystic river
#

certainly looks the same!

tepid sky
#

._.

mystic river
#

minirebel's lovely is outdated but crimson heart's isn't
other than that you have the same versions

mystic river
tepid sky
wintry solar
#

How are you trying to use it?

mystic river
#

my version of steamodded is 1122a
maybe updating will fix it

#

(and if it doesn't, well, you'll still have updated steamodded, which is useful)

tepid sky
#

lol

#

true

tepid sky
wintry solar
#

I don’t remember if the game can handle animated jokers by default

#

I would air on the side of it can’t

tepid sky
mystic river
#

oof

tepid sky
wintry solar
#

Aura works around it by updating the position every frame

#

I’d imagine that’s also what math does for his animated jokers in cryptid

tepid sky
#

what about blinds then?

#

they are animated in base game?

#

same with the shop sign

wintry solar
#

They have their own update and draw functions iirc

mystic river
#

hologram is animated but i think it uses a shader
it doesn't have animation frames

wintry solar
#

Hologram isn’t an animated sprite

young dew
#

hologram, legendary jokers and soul card have another texture on top of the card

mystic river
#

legendaries aren't even animated, they just have two layers

young dew
#

yes that's what i'm saying

mystic river
#

hologram does a flickering thing and soul beats

#

that's more than simply having a second layer

young dew
#

oh that

tepid crow
#

that's the shader

mystic river
#

(i use soul_pos for my many placeholders, so i am quite familiar with that function :p )

tepid sky
#

its fine if not possible tho

young dew
#

does someone know how i could add text here

tepid sky
#

i think i just timetraveled

#

vscode went ahead and got rid of my work space 🤦‍♂️

mystic river
#

ouch

tepid sky
#

fuck

#

even tho i saved a backup, that one also went back

nocturne garnet
#

i have a feeling i messed something up

mystic river
#

uh oh!

nocturne garnet
#

i used a spectral card and i crashed

mellow sable
#

Why is there a nil in your spectral pack

nocturne garnet
#

i have like 3 of those special spectrals

#

i forgot about nil though 😭

mellow sable
#

m7

nocturne garnet
#

its like soul and blackhole

#

but like not consumables

tepid sky
#

ig am remaking the jokers i lost and wth? it looks good, i think i had them like before

#

1105 is the row with G.jokers.cards[schemetic - 1]

nocturne garnet
#

chat, is it possible to make a lovely patch about other lovely patches

#

steamodded has this negative thing that allows negative playing cards to give +1 handsize

wooden nexus
#

Simple question: How do i target another item's loc_Var?

#

See, I wanna get the config for investment tag for a card I have

nocturne garnet
#

you dont

#

you kinda have to hardcode it

#

unless its modded

#

(afaik)

hardy viper
wooden nexus
#

okay then what about this

#

no that wouldn't work

#

I was gonna say have a variable that checks a specific config

zealous glen
#

take ownership

tepid sky
#

lol i added a # where it wasn't needed

hardy viper
zealous glen
#

redefine loc_var

wooden nexus
#

I don't wanna just take ownership

#

loc_vars = function(self, info_queue, card)
return{"Investment Tag's config.dollars"}
end,

#

that's all i wanna do basically

zealous glen
#

You can take ownership and redefine loc_var

#

as I said

wooden nexus
#

okay and i don't wanna do that because i don't know anything about it

zealous glen
#

It's like defining a Joker

#

Steamodded uses the vanilla base and only replaces what you tell it to

#

I think there's an option to do it quietly

#

if you don't want to attach a modded badge to it

wooden nexus
#

only reason I was asking was because of Misprint Deck in Cryptid and stuff like that

#

But tbh, not worth my time. Just gonna just put the number in as is.

#

make it Future Me's problem

#

because once again, I don't know anything on what or how ownership works

#

and idk if me doing that will break other mods, which is kinda bad for a lib to do

zealous glen
#

I think you just need to do

SMODS.Joker.take_ownership(`joker`, {
  loc_vars = function(self, info_queue, card)
    return {vars = {…}}
end
},
false)
zealous glen
#

if you don't take ownership, you can break other mods

wooden nexus
#

huh?

wooden nexus
zealous glen
#

If two mods try to change a Joker, and they don't communicate, unexpected things can happen

zealous glen
wooden nexus
#

including tag?

tepid sky
#

lol

zealous glen
zealous glen
wooden nexus
#

ok so how is this gonna help me ?

zealous glen
#

Well, it allows you to redefine the loc_vars function of whatever Tag

wooden nexus
#

but i don't wanna edit the tag

zealous glen
#

You don't edit the Tag, only its loc_vars function

wooden nexus
#

ok I'm not understanding

#

I'm making a consumable to have the description of Investment tag to make it nice to look at

zealous glen
#

Ah, wait

#

You just want the variable from another object?

wooden nexus
#

YES

#

lol

#

I want the variable from Investment tag

#

That way Investment Card and Investment tag have the same number

zealous glen
#

I think I just hardcoded when I tried to do it XD but in theory the object exists somewhere and can be accessed

wooden nexus
#

elseif name_to_check == 'Investment Tag' then loc_vars = {self.config.dollars}

zealous glen
#

Since it's a Tag, I don't think the Tag pool is every emptied, so you can probably iterate over the pool, find the Tag, then retrieve the value

#

Actually you don't need to iterate since you have the key

#

So you just access the object directly from the Tag pool

wooden nexus
#

Hm?

zealous glen
#

Hmm?

wooden nexus
#

I haven't put anything in

#

So for Investment tag having "loc_vars = {self.config.dollars}"

#

I put then...

#

idk

#

I'm having dumb crim moment lol

zealous glen
#

Let me see

wintry solar
#

Why don’t you just calculate it in the loc vars yourself?

wooden nexus
#

I just wanted it to have the effect of the tag in the description

wintry solar
#

Yeah so just do the calculation that the tag would do

wooden nexus
#

What? self.config.dollars?

wintry solar
#

No, however that is calculated

wintry solar
wooden nexus
#

What this then?

#

wait wrong tag

zealous glen
#

I think I found it

#

G.P_TAGS[_tag]

#

That's where Tag prototypes are

#

So you can find the config there

#

Thus G.P_TAGS['tag_investment'].config.dollars should be the variable you want

#

@wooden nexus

wooden nexus
#

I see

#

Lemme try

#

of course i have to change self to whatever it is

zealous glen
#

also format the loc_vars output correctly

wooden nexus
#

yeah... if i can figure that lol

zealous glen
#

It's on the wiki

wooden nexus
#

oh that, yeah

#

gimme a moment

#

Again, I'm slow

wooden nexus
#

lol

#

well the game didn't crash

#

yet

#

Heeey!

#

Thank you!

nocturne garnet
zealous glen
#

Now I've learned how to do this

nocturne garnet
#

thas basically it

zealous glen
#

My Milk gets stronger

wooden nexus
#

Hopefully this will work for the other tags too

#

Because I know I'll need to do it for other tags

wintry solar
nocturne garnet
#

I'm such a great coder

nocturne garnet
wintry solar
#

You can duplicate the patches then in that case

zealous glen
#

do you even need the patches

#

I feel like it would be doable with hooks

nocturne garnet
#

didnt need to do anything interesting really

faint yacht
#

In calculate function of a Joker, if modifying own values, is it better to use self instead of card?

elder vapor
#

card

faint yacht
#

...as I was using, whew.

wintry solar
#

self refers to the framework of the object itself stored in G.P_CENTERS, whilst card is the individual object that you're calculating

faint yacht
#

Was just wanting a "juice up" animation on a Joker when during the Voucher purchase, the card = self part confused me on the wiki.

rough furnace
#

if you look at the games calculate_joker function, self there is equivalnt to what card is in SMODS calculate_joker

#

this is due to differences in what the function belongs to

stiff locust
#

chat i got two new things to do

#

i need to display custom info queue and i need to display multiple info queue

#

can't figure out how to do that

rough furnace
#

display on a card you control or another card?\

wintry solar
#

you can add as much as you want to info queue

rough furnace
#

Also that

stiff locust
rough furnace
#

You should just be able to push it in your loc vars function iirc

stiff locust
#

well I tried that but it didn't really work

rough furnace
rough furnace
stiff locust
#

infolist is a list with a bunch of entries that have name and text fields
from looking at how other jokers do it it made sense that it'd be set up that way
but it doesn't display anything so /shrug

#

yes i closed locvars properly it's just cropped

rough furnace
#

The values your pushing should look something like

stiff locust
#

so i need a key

#

what's that for

#

how does the code know where the key is from

#

my mod doesn't use a separate localisation file so idk

rough furnace
#

The key points to a localization entry

stiff locust
#

i probably should use a separate file for localisation idk if anyone cares enough about my mod to translate it

proven lava
#

whats the internal id of oops all 6's? i cant find it in the source code (i.e: j_vampire)

stiff locust
#

j_oops

rough furnace
proven lava
wintry solar
#

what does your infolist look like?

stiff locust
#

but how would I loop it such that it goes through all of them

#

is that possible

rough furnace
#

Yes

wintry solar
#

loop through a list of keys

frosty dock
#

damn I've been stalling with steamodded quite a lot, we should get beta out

stiff locust
#

what does the set field mean

#

if anything

rough furnace
faint yacht
#

Can the path to a sound contain a subfolder too?

rough furnace
#

try it and see

frosty dock
#

it should

frosty dock
#

i don't even remember if there was something that was yet to be done for that

faint yacht
#

[SMODS _ "core/game_object.lua"]:410: Could not open WAVE
The path is defined as "plus95/Windows 95 menu command.wav" and the path is valid under the sounds folder.

rough furnace
frosty dock
rough furnace
#

was it ever finished?

#

hmmm

#

see if it works without the sub directory

#

and if not the spaces could be throwing it off maybe

#

not sure

frosty dock
#

seems unlikely

faint yacht
#

Moved to root of sounds, still crash. Removed spaces (i.e. Windows95menucommand.wav), nothing.

frosty dock
#

it might not like wav format, I can't recall

#

try converting to ogg

faint yacht
#

That is what I was actually wanting to avoid by using the .wav files directly.

frosty dock
rough furnace
#

for JSON/

stiff locust
#

well that's not good

#

oh wait I think I know what the issue was