#đŸ’»ăƒ»modding-dev

1 messages · Page 48 of 1

rough furnace
#

I've never written shit code, I'm just that good.

languid mirage
#

oh no

#

recent steamodded changes broke cartomancer 😭

#

how do I patch this now 😭

rough furnace
#

You should use the SMODS.load_file

#

Idk if that will fix your thing but I did design that for this

languid mirage
#

I am modifying view_deck code

rough furnace
#

Oh wait is this core steamodded stuff?

languid mirage
#

and before I could simply patch main.lua

#

but now Idk

rough furnace
#

I mean there still probably is patches for some stuff in main

#

Otherwise override the functionsℱ

languid mirage
#

I dont like that idea but seems like there's no other choice

rough furnace
#

Idk what your oatch is changing, but overwriting the functions can be pretty non-destructive

#

Also potentially just making a PR to fix whatever

languid mirage
#

I'm changing like 50% of the function logic to hide duplicate cards

#

I didn't want an override because if I override steamodded function I'll have to update it every time steamodded makes changes there, even minor bugfixes

frosty dock
#

ugh

languid mirage
#

which is pain in the ass

languid mirage
mellow sable
languid mirage
#

what path would I use tho

mellow sable
#

Here’s an example

languid mirage
#

that's not going to work

languid mirage
mellow sable
#

Oh

languid mirage
#

yeah...

mellow sable
#

maybe overrides.lua could be reworked to override with a lovely patch

languid mirage
#

then someone wants to patch different smods file balatrojoker

mellow sable
#

Would be cool if Lovely let you patch code with mods

#

Wait I just realized

languid mirage
#

I can see this work if there was a patch to somehow put the module inside zip

mellow sable
#

if the source file is appended to main.lua maybe you can patch there

languid mirage
wintry solar
#

It’s not anymore

#

Hence the issue

rough furnace
#

Yeah I modified lovely one time to print every file it got the opportunity to patch and it never printed any SMODS mods and since were loading internal stuff the same way, I assume it's the same case

languid mirage
#

time to patch overrides on file read

wintry solar
#

Should seals have weights like other items? At the moment they're all given an equal weight and I'm not sure if that's desired

frosty dock
#

i do wonder if there's a way for lovely to patch loaded files at runtime though

zealous glen
#

As long as there’s a 0 weight I think that’s good

#

Do Enhancements besides Stone have 0 weight?

#

Like modded ones?

wintry solar
#

They don't either

zealous glen
#

They should

#

How am I going to make bad Enhancements then

wintry solar
#

Enhancements and Seals as far as I can tell are all given equal weights

zealous glen
#

Stone has 0 weight sometimes

wintry solar
#

where?

frosty dock
#

wait are thread files like sound_manager lovely patchable?

#

or does it not work, like it doesn't for loc files

zealous glen
#

Grim, Familiar, the other one

wintry solar
#

huh that builds the pool manually

#

either way, they should also have weights, right?

zealous glen
frosty dock
#

but not if cryptid overrides them :p

maiden phoenix
#

I love Cryptid as a player
I hate it as a modder

rough furnace
#

Cryptid doesn't even conflict with anything my mod does but I still disable it because it causes the game to take longer to load by quite a bit

narrow pollen
#

i decided to make a sprite for a simple fusion of odd todd and even steven for my "simple fusions" mod...
and then i made another one because i like the first one enough to make it its own thing.
Matt O'Metician (left) and The NumBros. (right)

near ivy
#

huh neat, first one reminds me of a joker i made for ortalab

maiden phoenix
languid mirage
#

-Mom, I want to lovely patch overrides.lua
-No, we have lovely patches at home

Lovely patches at home:

mellow sable
#

LMAO

#

that’s so funny

lament fjord
#

What is that trying to apply patches to

wintry solar
#

ugh, thunk does his seal checks in a different order to how his tables are saved

#

time to find an elegant way to retain vanilla order

languid mirage
#

my mod feature with stackable cards wasn't working with latest steamodded

#

because all steamodded files are no longer appended to main.lua

languid mirage
#

I still cant believe it works đŸ˜č

lament fjord
#

Okay why does it need to reach into there like that

languid mirage
#

because it's either that or I override function that steamodded overrides and update it manually whenever steamodded updates it

lament fjord
#

Is a steamodded PR in order?

languid mirage
#

what for

lament fjord
#

Also just updated Saturn, some of the incompatibilities are gone

languid mirage
#

I can PR this "patching" of steamodded files

#

if it's needed

lament fjord
#

Hmm... what kind of "proper" API could let you do what you want?

wintry solar
#

why does get_current_pool set items that aren't in the pool to "UNAVAILABLE" rather than just not adding them to the pool

#

thunk your ways perplex me

lament fjord
#

I mean not for patching steamodded, but the functionality you want to patch it for

languid mirage
#

there isn't any

#

it's logic that makes 0 sense without my mod

#

maybe if view_deck was split up in 2 parts, then it wont be as much effort for me to update it

frosty dock
#

the whole RNG would change depending on the cards you have

wintry solar
#

ah true

frosty dock
#

instead it takes a separate reroll queue when it hits unavailable

#

anyways

#

how do I actually get SMODS.Sound into the sound manager thread

#

i guess i need to add a request type?

mellow sable
#

Probably

#

And make it figure out how to load it, and also whether to pitch shift it or not

narrow pollen
#

the idea of it was just "hey these jokers have similar theming or seem closely related, why not make jokers that put both effects in one slot?"

maiden phoenix
#

But like what's difference with the currently existing "Fusion Jokers"?

brisk pond
narrow pollen
wintry solar
narrow pollen
maiden phoenix
narrow pollen
#

we both made joker fusion mods

#

that's why i'm renaming mine

wintry solar
#

oh you probably need a set_sprites then

brisk pond
narrow pollen
#

which is not a direction i wanted to take it

wintry solar
#

yeah so card.config isn't saved

brisk pond
#

how can i solve this?

wintry solar
#
set_sprites = function(self, card, front)
    if card.ability then
        card.ability.extra.sprite_pos.x = card.ability.extra.uses_left
        card.children.center:set_sprite_pos(card.ability.extra.sprite_pos)
    end
end,
#

this is how I get it to update

#

when it's reloaded

brisk pond
#

?

narrow pollen
#

ability.extra

#

that's important

wintry solar
#

you'll also need to create the sprite_pos in your config.extra

brisk pond
#

and by modifying card.ability.extra.sprite_pos.x the game changes the sprite for me?

wintry solar
#

if you call card.children.center:set_sprite_pos(card.ability.extra.sprite_pos) yes

brisk pond
#

I tried and the problem remains

wintry solar
#

yup

#

and also you need a set_sprites function on the joker

narrow pollen
# maiden phoenix Didn't Itay made Fusion Jokers?

anyway, yeah. itay made fusion jokers because they were inspired by fused jokers, my more rudimentary mod. i respect the way they took the concept, but i always wanted to keep it simple. it's not an excuse to create a new effect for me; it's just "hey, these jokers work well together; let's make a new card that's both effects in one!"

frosty dock
brisk pond
wintry solar
#

👍

wintry solar
#

Seal weights complete, will look at enhancement weights tomorrow

compact idol
#

How are you supposed to put config variables in a joker's text? Currently I have this code initializing the joker:

local forest = SMODS.Joker:new("Forest", "forest", {extra = {chips = 0, chips_mod = 20, mult = 0, mult_mod = 5}}, {x = 0, y = 0}, {
        name = 'Forest',
        text = {
        "Gains {C:chips}+#2#{} chips per",
        "discard and {C:mult}+#4#{} mult",
        "per hand played. (Currently {C:chips}+#1#{}",
        "chips and {C:mult}+#3#{} mult.",
        "Resets at end of round."}
        }, 1, 5, true, false, false, true, "Scaling Chips Mult", "Biomes")
forest:register()

modeled off of the cryptid and six suits jokers, but ingame it just says +ERROR on the joker's text.

frosty dock
#

you really shouldn't

compact idol
#

I'm using steamodded 1.0.0, did I accidentally do something that only works on 0.9.8?

frosty dock
#

it'll "work" through the compat layer if it's set up like a 0.9.8 mod would be, but I can't recommend it

#

the numbered pages on the wiki are for steamodded 1.0, the others are from 0.9.8 and just aren't removed yet

#

for variables, you need a loc_vars function

compact idol
#

ohhhh I think I see what happened

#

okay ty

restive osprey
#

Stupid mod idea
Michel's deck
Gros michel can not go extinct, can appear multiple times, and appears 2x more often
+1x multiplier for each banana in your joker slot
Cavendish has a 1 in 6 chance to be sold each round
All cards remaining in hand have a 1 in 6 chance to be destroyed each round

#

The card back looks like bananas :3

stray warren
rough furnace
compact idol
#

so apparently a number minus nil in lua makes a table???

#

I was trying to do a simple check if the played hand won the round and it threw a "tried to compare table and number" error

#

apparently the call I used to try and get the required chips was nil

limpid flint
#

That doesn't make sense

tepid crow
compact idol
#

nope, it's making a table that prints out as just nil

#

I've checked type on both arguments, type of result and printed the result

tepid crow
#

if you're sure, you can show it here but I'm pretty sure something is not happening the way you're expecting it to

compact idol
#

I have a grand total of like 30 minutes of experience with lua so I'm def just missing something

#

okay yeah, figured out my stupidity

#

this is still weird tho

#

the type on second argument is table

#

(second argument here is G.GAME.blind.chips)

#

lemme check what the value is

edgy reef
#

That should be a number unless you’re developing this mod with Talisman, no?

compact idol
#

ohhh does talisman mess with it?

#

I left talisman in while developing this so I could make sure I didn't mess with the modloader and no mod would work

tepid crow
#

yes, talisman turns it into a different type that represents a number (which can basically only be table in lua I believe?)

#

something something lua doesn't have "real classes"

edgy reef
#

It makes some game elements a class.

#

Which in Lua is a table

#

I call it “metatable spaghetti”

tepid crow
#

type saying "table" definitely isn't very intuitive, no

compact idol
#

alright then, time to dig through talisman and figure out how to reference required chips

edgy reef
#

The only thing you should need to do is wrap the blind chips in tonumber()

tepid crow
edgy reef
#

Oh right yeah it is tobig()

#

Wrong func xdd

tepid crow
#

like comparing an integer and a floating point right? convert the lower precision one to the higher precision one when comparing?

restive osprey
#

So I'm coming up with concepts for a really big balatro mod, and one of the things you can do is fuse specific cards together
I decided to make a new common card called roller coaster, which will gradually tick up in mult by 1... 2... 3... 4... 5... and then on the 6th or so hand it plays +1 +2 +3 +4 +5 in quick succession and then immediately destroys itself afterwards
Why did i do this? So i could let you fuse it with mr bones to reference mr bone's wild ride

tepid crow
#

I want to get off mr bones wild ride

restive osprey
#

Also combine swashbuckler and mr bones and you get rattler
It increases in power significantly for every wheel tarot card you use but if it fails he has a one in four chance of being destroyed

#

Careful my friend or he'll rattle and shake

brisk quartz
#

you could make an addon pack for it though

restive osprey
brisk quartz
#

but why

tepid crow
#

Btw, is there any way to influence "draw priority"?
The "View deck" is hidden behind my :draw, but I'd like it to be on top of the red sleeve as well.
I could probably lovely patch into the function so my draw gets called before the view deck and after the cards, but some kinda draw priority might be a cleaner solution?

restive osprey
# brisk quartz youve described fusion jokers

Yes, but this is a very big mod idea
I haven't put the post in #1209506514763522108 because I'm still working on the ideas doc
The main gimmick is that every single joker has an upgraded version that takes a certain goal to get
Some are harder than others but have greater rewards

#

Fusion is just one of the ways you can upgrade the jokers

brisk quartz
#

you could make a mod that adds jokers for that so

restive osprey
brisk quartz
#

(i think it has an api you could use)

restive osprey
#

So... what you're saying is... my mod idea is already taken

hallow forge
#

yes

brisk quartz
#

all isnt lost though, you could make jokers that only appear with fusion jokers installed

#

so its not a total loss

restive osprey
#

Yeah...
I thought of an entire new core mechanic for evolution, over probably 5 hours of nonstop google docs editing, and my idea isn't even remotely original
Great

brisk quartz
#

dont worry about that

#

worry about making a good mod

#

you could even be glad that someone already did it, it shows that theres intrest in this type of mod

restive osprey
#

Alright, I'll keep going
I mean, there's going to be over 150 new jokers added, which will be a ton of work and something i basically can't do, but the idea is there

#

Well... my mod will overcomplicate the game actually
Having to keep track of all this evolution and goals and trinkets... no real point in it

#

I'm going to make my scope a little smaller

#

I know there's already a blinds jokers mod (which I'd like to play) but I feel like I could have a different take on the concept

#

I just need to... you know... figure out how to code and make decent looking pixel art

#

It'll actually be pretty fun

#

Sorry for the text wall btw

restive osprey
brisk quartz
restive osprey
#

Ahem, now if you'll excuse me... ◇Extinct!◇

tepid crow
#

tried drawing it twice on the same frame, but the game doesn't like that 🙃

compact idol
#

does anyone know why create_card's center variable would be nil? it's getting declared as G.P_CENTERS.b_red, but when center gets referenced later in the function it's throwing an "attempted to index a nil value" error

crisp coral
#

I don't recall what b_red is

compact idol
#

its the center for red deck, I think it's just meant to give center a default value

#

bc the local center variable is used in the forced_key conditional and filled with the center corresponding to the forced_key arg

#

but when it gets referenced in the forced_key conditional it throws the nil value error and I can see in the error message that the local center variable is nil

mellow sable
compact idol
#

god i love ;

compact idol
#

dont know why my call is having problems with it but we'll find out

#

so I am the dumbest mf that has ever lived

#

the forced key I was passing was j-forest instead of j_forest

#

fuck

unkempt thicket
#

how do you dissolve a highlighted joker?

lament fjord
#

I've caught wind that Balatro uses MSAA

lament fjord
#

Also self reminder to check if Love2d releases contain a usable luajit 2.1 dll to try out

#

Just thought of that but I've already shut down my desktop for the day

frosty dock
#

hm

#

should unsynced music also restart the next track when it's switched out of? I'm not sure if modulating out of it causes issues

#

seems like it doesn't cause issues to not restart

#

yeah no it sounds much nicer having it start wherever, just because the start of balatro music is kinda meh

#

aight it's done

languid mirage
#

anyone else in lua multi line comment & strings hate club balatrojoker

frosty dock
#

--[=[

languid mirage
#

aint no way

#

that's so stupid tho

frosty dock
#

yeah totally

languid mirage
#

also the fact that escape character is %

frosty dock
#

you can make lua multiline strings like [=======[]=======]

languid mirage
#

yea I figured

#

but like

#

why have 2 different multi line comments and strings

#

totally makes sense

frosty dock
#

technically it's arbitrarily many

languid mirage
#

practically same thing tho

frosty dock
#

[[/]] with at least zero = signs in between

#

but yeah it's stupid af

languid mirage
#

oh I see the idea

#

so the closing has to match opening

#

if you have comment inside comment

#

that's like very niche tho

muted pier
#

i have a very funny idea for a mod

#

but have no idea about how a second play-area/deck is possible

#

idea is basically making a secondary TCG deck

#

where i add cards from existing TCGs and just add some balatro functionality

#

you could draw the cards from packs only

#

and the deck is built off the packs

#

then its added to a second hand if theres another card at the start of a new round

#

say i make a black lotus card for the deck, it would basically have the text:

  Sacrifice Black Lotus: Add +3 Hands for this round.
#

or a lightning bolt:

Lightning Bolt removes 2000 from the current blind.
#

simple little gimmicks like that

brisk quartz
muted pier
#

probably

#

i guess i could make the "mana cost" of these spells just be your hands (for the round)

shell timber
#

these would work as oddities if they still existed

zealous glen
#

I mean you can add extra CardAreas

muted pier
zealous glen
#

There’s already a discard pile

muted pier
#

they're a different deck

#

so different discard

zealous glen
#

Anyways, as I said,

#

Extra CardAreas

muted pier
#

yeah i did see that, sorry i forgot to respond thanks haha

shell timber
#

pot of greed => draw two diamonds
pot of wrat-

muted pier
#

pot of greed would be a literal translation lmao

#

just draw two cards

shell timber
#

i know

zealous glen
#

Pot of Greed number 1e100e100

muted pier
#

the moxes were definitely the weirdest to figure out

shell timber
#

+1 odds?

muted pier
#

like in OA6s

shell timber
#

+1 to listed probabilities?

muted pier
#

basically yeah

shell timber
#

should probably be x2 to avoid inconsistencies with selling oops

muted pier
#

i can just have a check for it when oops is sold

#

and remove the one first

shell timber
#

but can you check for any modded joker?

#

x2 is functionally the same without oops

muted pier
#

fair enough

shell timber
#

the others look fine

royal ridge
#

probability api when

muted pier
#

i think it'd be funny

muted pier
#

i mean mtg already has that lmao

crisp coral
#

no way Ancient Recall from isaac

unreal nacelle
#

Wild Card (Binding of Isaac)- Trigger an effect depending on the last Consumable used

muted pier
#

so its like a fool but funny

zealous glen
#

Not sure how I feel about this idea:

Before last hand of round, draw a Royal Straight

hallow forge
#

correct teminology would be an Ace-High Straight

lament fjord
#

Idk if it's placebo or what, but my impression of game performance after substituting in LuaJIT 2.1 (specifically, the one Love2D releases with)

#

Is that it's better

hallow forge
#

also you shoukd add "if possible" in case the deck has no ace-high straights within it

zealous glen
#

No, everything only happens if possible

zealous glen
#

I'll think about it

#

I'm more worried about balance

#

I'm still not sure how to evaluate these consistency enabling effects

solemn coral
#

Honestly it almost feels too weak for a rare? It might actually be balanced as an uncommon

#

Without upgrading it, Royal Straights are valuable but not incredibly so, and consistency-wise there's no guarantee which suit you'll draw or which cards from that suit you'll get if you have multiple cards with the same rank and different upgrades

#

I like the idea, and I don't think it'll be too overporwered

crisp coral
#

also no guarantee to draw a royal straight if you discarded all of one component already

rough furnace
#

I mean I think it could be powerful, but you'd have to make a build around it

rough furnace
#

Do the missing cards get perminatly added?

zealous glen
#

What do you mean?

languid mirage
#

uh what

#

what I'm trying to do

zealous glen
shell tangle
#

I assume he meant something like, if you discard all of your kings, then draw a royal straight, does the replacement king permanently stay in your deck?

zealous glen
languid mirage
#

fixed it

#

main part of the card relied on negative edition

#

apparently

zealous glen
#

Any idea of how I can inject in this part of the code? Can a regex patch help me?

rough furnace
zealous glen
rough furnace
#

Oh

#

I misunderstood it

lofty igloo
#

Quick question about voucher localization, is this how you do it?

crisp coral
#

it's descriptions but looks good

lofty igloo
#

ah

tepid crow
#

is there a proper way to replace an object's loc_txt?

regal wolf
#

anyone know what the SMODS function for adding languages into the game is?

#

The docs are incomplete

crisp coral
#

near init_localization

tepid crow
#

ah, I'll take a look

#

thanks

crisp coral
#

and for the font, do the temp write thing

lofty igloo
zealous glen
#

Oh wait, the description should use curly not square brackets AFAIK

lofty igloo
#
--- STEAMODDED HEADER
--- MOD_NAME: MyMod
--- MOD_ID: MyMod
--- MOD_AUTHOR: [Your Name]
--- MOD_DESCRIPTION: A mod
--- VERSION: 1.0.0
--- PREFIX: mymod
----------------------------------------------
------------MOD CODE -------------------------

SMODS.Atlas{
    key = 'temp',
    path = 'v_placeholder.png',
    px = 71,
    py = 95
}

SMODS.Voucher{
    key = 'my_new_voucher',
    discovered = true,
    atlas = 'temp',
    cost = 1,
    pos = {x = 0, y = 0},
    config = { extra = {} },
    requires = {},
    redeem = function(self)
    end
}

----------------------------------------------
------------MOD CODE END----------------------

zealous glen
lofty igloo
#

It's square because it's in JSON

#

Got merged a couple days ago after I made the PR

#

It follows the same format as in Lua

#

Just that it isn't a table anymore

zealous glen
#
# After Draw Context
[[patches]]
[patches.regex]
target = "game.lua"
pattern = "first_hand_drawn = true}\)\n(.*)end\n(.*)end"
position = "after"
payload = '''
if not (G.GAME.current_round.hands_played == 0 and
    G.GAME.current_round.discards_used == 0) then
    for i = 1, #G.jokers.cards do
        G.jokers.cards[i]:calculate_joker({vic_hand_drawn = true, vic_facing_blind = G.GAME.facing_blind})
    end
end
'''
match_indent = true

Does anyone know why this patch fails? I think the error message mentions some issue escaping a character

tepid crow
#

try escaping the }

wild salmon
#

Hey I just came here to ask about a fun mod that doesn’t break balatro but adds a lot of new stuff would anyone beable to lmk a good one if they do know one

zealous glen
#

The World Ends with Jimbo

#

Fish

zealous glen
wild salmon
#

Thank you so much and where do I find these

zealous glen
wild salmon
#

You’re the goat I appreciate you

lofty igloo
#

Found the issue

#

I misspelled descriptions to description

languid mirage
#

if you have escape character

#

in the pattern

#

or '''

#

That's what works on my end

wild salmon
#

Hey I’m sorry for bothering but I’m trying to download the world ends with Jimbo mod and I found it but I can’t find where to download the file so I can add it to the mods file would anyone be able to assist

tepid crow
wintry solar
frosty dock
zealous glen
lament fjord
#

Okay I got the profiler set up, seems like Balatro spends quite a bit of time dealing with and sorting card areas

tepid crow
languid mirage
#

usually lag comes from having a lot of cards in deck and or jokers

zealous glen
#

I think that’s resource intensive

hushed cradle
#

anyone know how i can remove the grey background??

#

im not even sure why its there

#

doesnt seem to be anywhere i can pass in a clear colour

frosty dock
#

uh

#

how are you spawning that overlay?

hushed cradle
#

ill send my code

#
  args = args or {}
  args._type = args._type or 'Joker'
  args.col = args.col or 5
  args.row = args.row or 2

  local deck_tables = {}

  S.card_display = {}
  for i = 1, args.row do
    S.card_display[i] = CardArea(
      G.ROOM.T.x + 0.2*G.ROOM.T.w/2,G.ROOM.T.h,
      5*G.CARD_W,
      0.95*G.CARD_H, 
      {card_limit = args.col, type = 'title', highlight_limit = 0, collection = false})
    table.insert(deck_tables, 
    {n=G.UIT.R, config={align = "cm", padding = 0.07, no_fill = true}, nodes={
      {n=G.UIT.O, config={object = S.card_display[i]}}
    }}
    )
  end

  local card_options = {}
  for i = 1, math.ceil(#G.P_CENTER_POOLS[args._type]/(args.col*#S.card_display)) do
    table.insert(card_options, 'Page '..tostring(i)..'/'..tostring(math.ceil(#G.P_CENTER_POOLS[args._type]/(args.col*#S.card_display))))
  end

  for i = 1, args.col do
    for j = 1, #S.card_display do
      local center = G.P_CENTER_POOLS[args._type][i+(j-1)*args.col]
      local card = Card(S.card_display[j].T.x + S.card_display[j].T.w/2, S.card_display[j].T.y, G.CARD_W, G.CARD_H, nil, center)
      if args._type == 'Joker' then
        card.sticker = get_joker_win_sticker(center)
      end
      S.card_display[j]:emplace(card)
    end
  end
  
  local t =  s_create_generic_options({ back_func = 'saturn_stats', nodes = {
        {n=G.UIT.R, config={align = "cm", r = 0.1, colour = G.C.CLEAR, emboss = 0.05}, nodes=deck_tables}, 
        -- {n=G.UIT.R, config={align = "cm"}, nodes={
        --   create_option_cycle({options = joker_options, w = 4.5, cycle_shoulders = true, opt_callback = 'your_collection_joker_page', current_option = 1, colour = G.C.RED, no_pips = true, focus_args = {snap_to = true, nav = 'wide'}})
        -- }}
    }})
  return t
end```
#
  G.SETTINGS.paused = true

  local args = {
    _type = 'Joker',
    col = 5,
    row = 2,
  }

  local t = s_create_generic_options({
    back_func = "saturn_stats",
    title = 'Joker Stats',
    nodes = {s_create_card_display(args)},
    colour = G.C.CLEAR,
  })
  G.FUNCS.overlay_menu({
    definition = t,
  })
end```
#

sorry its quite a lot

frosty dock
#

for a start, does this also happen if create_UIBox_generic_options is used instead of that custom function there? I'd like to figure out if that function is at fault before trying to parse it

hushed cradle
#

ill try that quickly

#

yeah it does

sand rune
#

Hey, quick question what is the best way to grab the current deck? managed to get the custom deck setup and wanted to be able to pul it in and do logic

#

not able to determine if its under G.GAME G.deck or some other nested path

frosty dock
#

G.deck is the card area that holds the cards that are in your deck

sand rune
lament fjord
#

Okay I think I've narrowed down the incompatibility between Steamodded and Saturn a bit: It seems to start precisely when I click "apply" for the Saturn settings

languid mirage
#

👉 👈 so uh where can I find example for steamodded configs

shell tangle
languid mirage
#

yeah I'm looking at lobcorp now

#

thanks

wintry solar
languid mirage
#

thanks

#

will check it out

hushed cradle
#

@frosty dock i mightve figured smth out

#

this is what happens when i make the root node of the generic options clear

#

so maybe theres no bounding box or smth

#

if that makes sense

wintry solar
#

can you change the size of the root node?

#

is it just filling the screen?

hushed cradle
#

maybe

#

can i set a maxw and maxh?

frosty dock
#

yeah

hushed cradle
#

cool

#

thank you

#

also rq

#

can i make a node as wide as possible

#

like the back button node

#

can i make it fill the thing

#

but not push it any further than it needs to be

#

its not a button

#

its just a node

wintry solar
#

yeah

hushed cradle
#

how??

#

ive tried focus args nav wide snap to true

#

unless im doing it wrong

wintry solar
#

I'm not sure what focus args does tbh

frosty dock
#

odd, that background is supposed to be there, but it shouldn't be fully opaque

sand rune
#

for steammodded; is there a way to tap into a specific G.FUNC and hook in? as of now just been manually running the modded build

wintry solar
#

but you could just set the width of the container

hushed cradle
#

id like it to be dynamic if possible

#

so if the menu is smaller then the button is too

#

or the node acting as a button

wintry solar
#

I don't remember how the actual back buttons are written

#

but surely they'd help?

languid mirage
wintry solar
#

that's what I thought

hushed cradle
#

i think theyre actual ui buttons

wintry solar
#

but I haven't tested them with my controller and I cba

#

they do read like they'd be for controller support though

hushed cradle
#

oh

frosty dock
hushed cradle
#

i had no idea wha tthey did tbh

#

lol

frosty dock
#

if you need more advanced patching, you can use lovely for that

hushed cradle
#

i just saw nav wide and snap to

#

so maybe it would make them wide

#

ill have another look at the ingame buttons then

sand rune
wintry solar
#

what's this for btw, looks interesting

frosty dock
#

the actual updating of money is done by ease_dollars, which does get called in there

hushed cradle
sand rune
#

aaaaah that explains it >_>

#

cheers for that one đŸ«Ą

wintry solar
hushed cradle
#

its for saturn

#

im helping w some of it

#

mainly ui at the moment

#

atm ive just made the collection display take an argument for rows and columns and type of card

#

we're gonna have a way to view stats of each card hopefully

#

i basically rewrote most of the ui stuff tho because game ui isnt the best looking

frosty dock
#

that screams for incompatibilities lmao

hushed cradle
#

well i didnt rewrite them

#

theyre their own functions

#

but ive got the saturn menu to look like this

#

still tryna get the buttons at the bottom to be wide

#

working tabs and everything

#

anyway i can get the width of a parent node??

#

so i can set the node width to its parents width minus some

zealous glen
hushed cradle
#

ik but id like it to be dynamic

zealous glen
#

And padding settings

#

Is anything in the game dynamic like that?

hushed cradle
#

good question

#

not as far as i know

#

but i havent had much of a look

zealous glen
#

Maybe it doesn’t support that feature because thunk doesn’t use it

hushed cradle
#

i was here with other questions so i thought id ask about a bit

#

ill resort to minw if i have to but for now im gonna see if i can figure anything else out

zealous glen
#

I mean

#

Depending on when the UI is generated

#

It could recover the appropriate value to pass to minw

#

So I think starting there is a good point

sand rune
#

and one last question, for the chips/mult when select a hand where is that filled and used 🙂

languid mirage
#

unless you mean the code

hushed cradle
#

i just think its not exactly the highlight of the game

hushed cradle
#

i play balatro because its a great game, not because the ui is anything special

#

but what if

#

balatro and cool ui

zealous glen
#

The UI is very good

languid mirage
#

^

hushed cradle
#

i mean more like menu ui

languid mirage
#

it's very minimalistic

zealous glen
#

It’s very responsive and diegetic

hushed cradle
#

in game its nice for sure

sand rune
# zealous glen What do you mean exactly

the chips and multiplier when selecting a hand to play e.g High Card has the base 5 chips and 1 mult trying to determine which func taps into that so i can inject the custom deck params

hushed cradle
#

but the menus arent the best looking imo

#

again its down to preferences so

#

each to their own

languid mirage
#

yea that's subjective

hushed cradle
#

if i can make the game look more how i would like it i might as well

#

yk

frosty dock
#

idk sounds like re-inventing the wheel

hushed cradle
#

but its kinda fun ot reinvent the wheel

languid mirage
#

all programming's about balatrojoker

hushed cradle
#

exactly

zealous glen
frosty dock
#

personally I'd prefer sticking to the game's style, but that's just me

hushed cradle
#

fair enough

#

i mean i drew out this whole ass diagram

sand rune
hushed cradle
#

and now im tryna make it in game

frosty dock
#

I won't stop you from messing around, at worst I'm concerned for incompat by making UI nonstandard

hushed cradle
#

its just the saturn ui tho

#

no other menus or anything

frosty dock
#

hence at worst

hushed cradle
#

ah mb

sand rune
#

As idealy id like to go:
UI displays: base + mod
Action: implements base + mod

zealous glen
# hushed cradle

That’s not too different from the base game. If anything I think that’s not very good because it presents too much information that’s not important. I don’t need to see my statistics while looking at the Collection

zealous glen
#

I think the statistics make more sense separately

hushed cradle
#

its seperate from the collection tho

#

its a seperate menu where you can view so a bunch of different stats we wanna add

#

for people who want to see them

#

i get that not everyone is interested in all that

#

but for people that are

#

like me for example i love stats

zealous glen
#

Because I think the alternative might lead to complications

hushed cradle
#

it would be awesome to see all these different stats in one place

#

because we wanna add tracking for stats that the game doesnt track atm

#

like i put in a highscore counter so each joker shows the highest value you reach with it

#

like lucky cat most mult x233

sand rune
hushed cradle
#

or smth

#

most rebate money $4030

#

or smth

#

like is that not cool?

#

sorry im kinda filling up the chat w shit

#

ill stop

zealous glen
#

You can keep going if you want

hushed cradle
#

nah myst will tell me off

zealous glen
#

I’ll tell you on

hushed cradle
#

lmao

zealous glen
#

By the way

hushed cradle
#

i just think its cool to see more stats then the game already has, some other people would probably like that, im enjoying making mods, so why not combine the 2

zealous glen
#

Does anyone know how to move all of a Joker’s tooltip up or down?

hushed cradle
#

yeah

#

theres a function in card.lua

#

that aligns the popup

#

i think you might be able to hook smth to it and change the alignment

#

1 sec

zealous glen
#

Ideally it would be automatic

hushed cradle
zealous glen
#

Because sometimes in the middle row of the Collection, tooltips go the wrong way and end up offscreen

hushed cradle
#

im not sure about collection because idk how you determine which row the card is

#

but if you look at how the collection generates the card area you could probably figure it out

zealous glen
#

Judging by that line I think it’s literally by screen position

hushed cradle
#

the collection is 3 card areas of width 5

#

for each page

#

i think

zealous glen
zealous glen
#

I have a function that iterates over it

#

Although in hindsight maybe that function was superfluous

#

But anyways

hushed cradle
#

you can do it based on pos yeah

zealous glen
#

I think more importantly

#

I’d like to do it based on tooltip height

#

But I’m not sure I can predict it

hushed cradle
#

that sounds tricky

#

i wouldnt know what to do

frosty dock
#

it would only adjust on the next time hovered

zealous glen
#

while the game starts, create one of everything then hover over it

frosty dock
#

no like

#

i wasn't able to get it to move while hovering

zealous glen
#

Ah

#

Maybe you can destroy the tooltip then recreate it?

#

I think an easy solution is to add a new variable to cards and inject into that function to see if the variable is present to adjust where the tooltip shows up

#

Since it’s only an issue for specific cards at a specific screen position

hushed cradle
#

got rid of the grey background

#

s_create_card_display was returning s_create_generic_options(nodes and stuff)

#

and then that was being pass into s_create_generic_options again

#

so i had a huge root node like 10x the screen

frosty dock
#

aha

hushed cradle
#

its coming along nicely now tho

mellow sable
#

Your UI is awesome

hushed cradle
atomic falcon
#

this is the best custom ui ive ever seen ever

hushed cradle
#

wow thank you random discord user ive never seen before ever

atomic falcon
#

I'll kill you

zealous glen
#

Like DARK_EDITION?

hushed cradle
#

yeah

zealous glen
#

But I didn’t look further into it

#

(That’s because I wanted to do something like X:dark_edition)

zealous glen
hushed cradle
#

oh yeah mean like change colour like the badges and stuff

hushed cradle
#

im not sure if you can make it alternate colours without redrawing the whole overlay

lament fjord
#

Heavily modded balatro is chugging quite a bit more than the unmodded game

wintry solar
#

you just set the colour to G.C.DARK_EDITION and I'm pretty sure it works

zealous glen
wintry solar
#

oh in a text string

#

try doing V:1 and sending the colour in loc_vars?

frosty dock
lament fjord
#

(There's a statement which causes a full collection if it reaches a moderate memory threshold, it's never been hit even when I get whole tenths of seconds of lag)

frosty dock
#

yeah ig the lag is more about card areas and whatnot

zealous glen
# wintry solar try doing `V:1` and sending the colour in loc_vars?

I’ll have to try that later, but I’m thinking that wouldn’t work either.

Also, technically X creates a column (?) UI element, and then adds the text inside. Text changing color is actually supported by default, since that’s how dark_edition is used

lament fjord
#

Yeah 😩

wintry solar
#

oh of course, I forget you're working inside the tooltips

lament fjord
#

I might have to strip out some of the wacky stuffs going on inside some of the mods just to not suffer horrid lag

tepid crow
#

some mods are probably just kind of unoptimized?

lament fjord
#

Yeah, though profiling shows it's more like "doing more of the same" than "doing all new things"

#

The hotspots look similar to what you'd expect in the base game, but their impact is excabetated by mods tossing in all their own things using them

frosty dock
#

perhaps there are some optimizations possible on base game code?

lament fjord
#

Though I did catch some stuff going on with the channel going to the sound manager thread, which might explain that thing that one person observed with repeatedly entering and exiting the new game menu

frosty dock
#

the channel? there's a thing about the thread itself where it keeps re-aquiring the sound objects

#

I'm not sure why tbh, it seems completely unnecessary

lament fjord
#

Sounds like a reasonable thing to tweak with a patch?

edgy reef
#

I do remember someone talking about opening and closing the new run on the main menu and the amount of objects shot up exponentially.

#

Something like that

frosty dock
#

I didn't really wanna touch it cause I wasn't sure if there's some good reason for it, but I might just try patching it out while I'm at it

tepid crow
#

this?

lament fjord
#

Yeah

tepid crow
#

Yeah feels like something isn't getting cleaned up correctly there when exiting the new run menu

#

on the other hand, who's out there opening that menu hundreds of times

frosty dock
#

there's a tradeoff i guess

#

not sure what's better, but I'm not dealing with re-aquiring modded sound files

lament fjord
#

Caching time?

edgy reef
frosty dock
#

apparently love has a tendency to not like the location they're written in, so it literally involves writing a temp file

#

I'd rather keep the sound object in the thread's memory directly, no thanks

#

it's less expensive for vanilla sounds, so it might actually make sense to some degree

zealous glen
lament fjord
frosty dock
#

this is done explicitly, I don't think there's a way to make love.audio.newSource work with nativefs

#

actually I'll have to check the docs on that

lament fjord
#

It says it can also work with a SoundData or Decoder object

frosty dock
#

yeah i can cut temp files then

wintry solar
languid mirage
#

thats a bit too much balatrojoker

frosty dock
#

okay i tried changing from temp files but it's choking hard

zealous glen
#

I can’t right now

edgy reef
#

Text desc is just C:dark_edition, no?

wintry solar
#

work's for me

zealous glen
#

Column

#

Like X:red

edgy reef
#

Ohh ok

#

Yeah idk how Thunk got that to work

#

For all I know, it’s magic

zealous glen
hushed cradle
#

thoughts??

zealous glen
hushed cradle
#

wdym

atomic falcon
#

wdym

zealous glen
hushed cradle
#

because its not tooltips

#

its gonna be stats about the card

zealous glen
#

Maybe clicking could highlight the Joker, and the Joker keeps tooltips on while highlighted

hushed cradle
#

like how many runs used with it

zealous glen
#

You can add those to tooltips

#

But anyways

atomic falcon
#

đŸ’€

zealous glen
#

You could show the stats just by hovering

hushed cradle
#

how am i gonna fit a page of stats in a tooltip

zealous glen
#

No clicking needed

hushed cradle
#

the point is its gonna be a load of stats

zealous glen
#

I mean tooltips can be as big as needed

#

But now I see what you mean

hushed cradle
#

yeye

zealous glen
#

I wonder if something had broken with Steamodded 0.9.8

wintry solar
#

I don't think steamodded has ever touched this stuff

edgy reef
#

It doesn’t

#

I don’t remember seeing anything manipulate how the localize() or related functions to it.

languid mirage
#

there's a new change that manips localize a bit

#

for number formatting

#

but that's all

sand rune
#

is there a way to trigger a rerender of the ui, or is it drawn per delta?

rough furnace
#

Like what are you doing?

#

The UI should render every frame

tepid crow
#

yeah, what are you planning to do? rerendering the full ui seems overkill for most things

tepid crow
#
SMODS.Booster:take_ownership("p_spectral_normal_1", {
    config = { extra = 4, choose = 1 },
    weight = 100
})

is this still the way to take ownership in smod 1.0.0?

frosty dock
#

yeah

tepid crow
#

cuz it kinda crashes when I open that booster pack

Oops! The game crashed:
card.lua:1879: attempt to index local 'card' (a nil value)

Additional Context:
Balatro Version: 1.0.1f-FULL
Modded Version: 1.0.0-ALPHA-0724b-STEAMODDED
Love2D Version: 11.5.0
Lovely Version: 0.5.0-beta6
Steamodded Mods:
    1: Test by LarsWijn [ID: Test]

Stack Traceback
===============
(3) Lua field 'func' at file 'card.lua:1879'
Local variables:
 _size = number: 4
 (for index) = number: 1
 (for limit) = number: 4
 (for step) = number: 1
 i = number: 1
 card = nil
 (*temporary) = nil
 (*temporary) = table: 0x12dc1538  {alerted:true, weight:100, _saved_d_u:true, original_key:p_spectral_normal_1 (more...)}
 (*temporary) = table: 0x12f47548  {opening:true, click_offset:table: 0x13822c10, children:table: 0x12b300d8 (more...)}
 (*temporary) = nil
 (*temporary) = number: 58
 (*temporary) = table: 0x12b0cf20  {velocity:6.7665175720666, scale:0, size:0.27623548316571, facing:5.6853036745738 (more...)}
 (*temporary) = boolean: false
 (*temporary) = string: "fill"
 (*temporary) = number: -0.0295931
 (*temporary) = number: -0.0295931
 (*temporary) = number: 0.0591863
 (*temporary) = number: 0.0591863
 (*temporary) = string: "attempt to index local 'card' (a nil value)"
...
hushed cradle
#

someone please tell me theres a way to have the page number text get updated 😭

rough furnace
#

No its physically impossible

hushed cradle
#

are you fr

tepid crow
hushed cradle
#

whats a dynatext thing?

#

that sounds like it could do smth

#

please

#

after all my work

#

there must be a way

tepid crow
#

you should probably take a look at how the rest of the collection does it

hushed cradle
#

ik its an option cycle

#

ill have a look at them

#

it used dynatext

#

there is hope

wooden nexus
hushed cradle
#

yeah lol

wooden nexus
#

W

tepid crow
edgy reef
#

I distinctly remember this bug happening when a Cryptid patch nulled a Steamodded patch for create_card

#

Also I don’t think create_card had a default return, you’d need to define it manually.

#

Probably that if it’s not the former

frosty dock
#

maybe something breaks assuming it's a modded pack when it's just a modified vanilla pack

tepid crow
#
SMODS.Booster = SMODS.Center:extend {
    ...
    create_card = function(self, card)
        -- Example
        -- return create_card("Joker", G.pack_cards, nil, nil, true, true, nil, 'buf')
    end,
}

huh

frosty dock
#

that is not valid syntax

tepid crow
#

I thought I'd simplify the code for you guys

#

but I'll fix it

edgy reef
tepid crow
#

(same goes for celestial, no?)

frosty dock
#

yeah that sounds bad

tepid crow
frosty dock
#

surely this is not intended

tepid crow
#

I didn't think it was, which is why I'm so confused lol

edgy reef
#

iirc the elseif order for create_card was Arcana -> Steamodded -> Celestial -> Spectral -> Standard

#

Something like that

hushed cradle
#

smods tech support

#

my saviour

#

please

#

please

tepid crow
hushed cradle
#

please tell me i can update the text

edgy reef
frosty dock
#

please it's 2am

edgy reef
#

Although I hate that

frosty dock
#

I will not try to understand UI code rn

hushed cradle
#

okay nws

frosty dock
#

see if it works now

hushed cradle
#

what do you think of the menu tho??

edgy reef
#

I would help but a heat wave is stopping me from looking at ingame code.

#

😭

hushed cradle
#

fair lol

frosty dock
hushed cradle
#

thanks

#

i just gotta figure out how to get the page number to change

edgy reef
#

In hindsight idk why the return of the function was commented out but the function stayed.

#

I thought it returning a joker would be fine for default purposes at least.

tepid crow
tepid crow
frosty dock
#

great

#

not sure what my thought process was on making that hash 0725b, it's literally the next day

#

whatever

languid mirage
hushed cradle
#

yeah a bit

frosty dock
#

ugh didn't even see that

hushed cradle
#

but you cant emboss buttons as far as i can tell

frosty dock
#

i shall go to sleep

hushed cradle
#

goodnight

frosty dock
#

gn

tepid crow
stray warren
#

How do I check if a card is wild?

hushed cradle
tepid crow
wintry solar
hushed cradle
#

yeah

#

well

#

children of

wintry solar
#

Would setting them to have an outline e not solve the problem somewhat?

#

Rather than having a background layer and a foreground layer?

hushed cradle
#

i dont want them to be scaled at all when you press them

#

just go darker

#

so i think patching that is probably the way to go

#

i cant remember where it is in the source code tho lol

#

i might try the outline and see what it looks like tho

#

okay outline looks really good nvm

#

thank you for suggesting that

#

i didnt even know i could do that tbh

#

id just seen the emboss thing before

wintry solar
#

Emboss kind of adds a lower border, right?

hushed cradle
#

im not even sure what it does lol

wintry solar
#

I know if you make the number big it looks like shit

hushed cradle
#

im completely winging this whole ui thing

wintry solar
#

I need to test it some more

hushed cradle
#

looks way better

#

do you know if theres a way i can update text??

zealous glen
#

I mean the Collection does it somehow

hushed cradle
#

it uses dynatext but i cant figure out how it updates it

#

theres an update function

wintry solar
#

How are you writing the text at the minute?

hushed cradle
#

its an object node with a dynatext object

wintry solar
#

Uhhh I haven’t looked at dynatext yet

hushed cradle
#
                  config = {
                    object = DynaText({
                      string = {{ref_table = page_options, ref_value = (S.current_page + 1)}},
                      colours = { G.C.WHITE },
                      shadow = true,
                      scale = 0.4,
                    })
                  },```
#

ah

#

any way to do it with normal text?

wintry solar
#

I know you can give text nodes a ref_table and ref_value

#

That’s what this used

#

Might be a way to update the table when you press a button

hushed cradle
#

oh yeah you can like rotate it and stuff

#

update the table

#

thats smart

#

i was trying to update the ref value

#

but table is a better idea

wintry solar
#

Yeah you can have your buttons just change the value in the table to be page x / y

#

Should update your text too

hushed cradle
#

thank you

#

im gonna try that now

wintry solar
#

Think generally uses DynaText but I think he uses a ref_table once iirc

hushed cradle
#

cool

#

ill update when ive tried it

#

no luck :(

#

i might be able to get the ui element by id then :update_text

#

im hoping

wintry solar
#

Can I see the code?

hushed cradle
#

sure

#
  args = e.config.ref_table or {}
  args._type = args._type or 'Joker'
  args.col = args.col or 5
  args.row = args.row or 2
  args.dir = args.dir or 1
  local cards_per_page = args.col*args.row
  local current_center = 0

  for j = 1, args.row do
    for i = #S.card_display[j].cards, 1, -1 do
      local c = S.card_display[j]:remove_card(S.card_display[j].cards[i])
      c:remove()
      c = nil
    end
  end

  S.current_page = S.current_page + args.dir

  if S.current_page >= math.ceil(#G.P_CENTER_POOLS[args._type]/cards_per_page) then
    S.current_page = 0
  elseif S.current_page < 0 then
    S.current_page = math.ceil(#G.P_CENTER_POOLS[args._type]/cards_per_page)
  end

  S.current_page_text = {(S.current_page+1)..' / '..tostring(math.ceil((#G.P_CENTER_POOLS[args._type]/(args.row*args.col))))}

  for i = 1, args.col do
    for j = 1, args.row do
      current_center = current_center + 1
      local center = G.P_CENTER_POOLS[args._type][current_center + (S.current_page*(cards_per_page))]
      if not center then break end
      local card = Card(S.card_display[j].T.x + S.card_display[j].T.w/args.row, S.card_display[j].T.y, G.CARD_W, G.CARD_H, G.P_CARDS.empty, center)
      if args._type == 'Joker' then
        card.sticker = get_joker_win_sticker(center)
      end
      S.card_display[j]:emplace(card)
    end
  end
end```
wintry solar
#

Try ref_table = S, ref_value = current_page_text

hushed cradle
#

okay

#

i think cos

#

one sec

#

S.current_page_text is a table

wintry solar
#

Oh you wrapped it as a table yeah

hushed cradle
#

should i unwrap it

#

or surely thats jus the same as before

wintry solar
#

Try unwrapping

hushed cradle
#

uh

#

think i did smth wrong lol

#

oops yeah i only unwrapped it in one place

#

now i got no clue

wintry solar
#

Huh

#
                node.config.text = tostring(node.config.ref_table[node.config.ref_value])
                if node.config.func and not recalculate then G.FUNCS[node.config.func](node) end
            end
            if not node.config.text then node.config.text = '[UI ERROR]' end```
#

This is the relevant code for the node

hushed cradle
#

oh it needs to be a string

#

oh my god i love you

edgy reef
#

I do remember a few lines of code the game uses for object collection UIBox iirc

#

Damn I’m late

#

😭

hushed cradle
#

eremel please may i have your hand in marriage

wintry solar
#

Sorry it’s already taken

hushed cradle
#

😭

#

thank you so much for the help

wintry solar
#

No problem

#

I haven’t figured out the back button thing yet

hushed cradle
#

the wide button?

edgy reef
#

What back button problem?

wintry solar
#

Yeah

#

Making it as wide as the parent node

hushed cradle
#

i dont really mind how it looks at minw 5 so dont worry too much

wintry solar
#

Like, I look at the code and there’s nothing that suggests it does that

hushed cradle
wintry solar
#

And if I rip it out into a different root node it doesn’t stretch

#

Yeah they look good

hushed cradle
#

5 is like the perfect number

#

imo

wintry solar
#

Are these all embossed?

hushed cradle
#

yeah im gonna redo that now

wintry solar
#

I do like the emboss look

#

It’s easy to tell what it does here if you look at your option selector

hushed cradle
#

this is it with outlines

#

basically identical

edgy reef
# hushed cradle

The part that irritates me is the the height of the Apply and Back buttons aren’t the same.

hushed cradle
#

no jankiness

edgy reef
#

One is a smidgen larger than the other

hushed cradle
#

is it?

wintry solar
#

It’s just that 3D effect it adds

#

You can probably still emboss with the outline right?

hushed cradle
#

oh i accidentally had the padding at 0.06 for one of them

#

the others 0.05

#

good catch

#

damn

tepid crow
#

yeah how did you spot that lol

hushed cradle
#

so maybe

#

ill try it

hushed cradle
tepid crow
#

I meant flowwey lol

hushed cradle
#

oh what

#

sorry i thought you spotted it lmao

#

was not paying attention mb

tepid crow
#

eh, we're basically the same person

hushed cradle
#

i looked at my screen so briefly that the pfps all blurred into one

wintry solar
#

The outlines are slightly different thicknesses

#

It’s easier to spot there

edgy reef
wintry solar
#

Especially at the corners

edgy reef
hushed cradle
#

uh

#

not really

#

oh the image goes bigger

#

yeah i do

#

button with outline and emboss

#

maybe not

#

next on the to do list is to ruminate

#

then i have to turn each joker card into a button

#

thats gonna be fun

wintry solar
#

Should be able to find something to help in the source code, cards sort of function as buttons a lot of the time

hushed cradle
#

yeah i think ill be able to do with a bit of time

wintry solar
#

I mean what more is a button than something that does something when you click it

#

Jokers do that all the time!

hushed cradle
#

very true

#

can i set an emboss colour do you know?

wintry solar
#

No

#

It just darkens the normal colour I believe

hushed cradle
#

damn

wintry solar
#

How does that work with the movement on click?

hushed cradle
#

squishes it a bit

wintry solar
#

You could maybe have it as three layers, a white one at the back which is the button, then the green, then the text

#

I think the button would still function

hushed cradle
#

the green wouldnt darken tho

wintry solar
#

Set hover=true on the green layer

hushed cradle
#

ohh

wintry solar
#

Look at all this ui knowledge I now have

hushed cradle
#

ill try that

#

damn

wintry solar
#

đŸ§™â€â™‚ïž

hushed cradle
#

way more than me

#

i got no idea how ive gotten this far

wintry solar
#

I’ve spent a while just reading through the ui code recently

#

So that other people don’t have to

#

The hover on the green might break the button though

#

I am unsure

hushed cradle
#

it just doesnt darken

#

ill try setting a nil button

#

that didnt do anything either

wintry solar
#

Huh

hushed cradle
#

i think ive just have to have no emboss on buttons

#

just outline

wintry solar
#

Seems hover is only valid on buttons

#

Anyway, time to sleep, gn

hushed cradle
#

goodnight!!

#

thank you for all the help

brisk pond
#

is it possible to add buttons inside an info_queue?

#

I got this voucher that lets you choose the Joker you want to copy, but Idk how to implement it

crisp coral
#

i don't think having a button inside info_queue would work anyway, since once you stop hovering on the card it's gone

brisk pond
#

maybe clicking the right and left button while hovering is better?

#

I don't know if I can add this feature

zealous glen
brisk pond
zealous glen
brisk pond
crisp coral
#

added more swag

brisk pond
zealous glen
zealous glen
unkempt thicket
#

how would one go about adding a new object type like editions, enhancements, and seals?

brisk pond
unkempt thicket
crisp coral
#

okay brb

zealous glen
#

Also try looking at Consumeables

#

They have an Use button

#

Betmma added a new type that can be activated

zealous glen
crisp coral
#

i just need to steal jimball or aura code for the animation

zealous glen
#

I don’t think you need to

#

You can create an animated sprite

#

The Blind Collection UI showcases how to display animated sprites inside UI elements

crisp coral
#

animatedsprites only work for one row, no?

#

i need to set it up for a whole spritesheet

zealous glen
#

Can you set it up as a long row?

crisp coral
#

absolutely fucking not

rough furnace
#

set it up as a tall row then rotate the file before exporting

crisp coral
#

do you want a 25760x47 spritesheet

#

that when loaded into the game rounds to 32768x64