#đ»ă»modding-dev
1 messages · Page 30 of 1
no prefix at all isn't advisable, I don't think
what'd I miss?
G.SHADERS['hologram-v2'] = love.graphics.newShader(SMODS.current_mod.path.."/assets/shaders/".."hologram-v2.fs")
in the fs file
change every copy of hologram to hologram-v2
oh no, we left the mod_prefix on the shaders
Have fun reading shader code đ
Feels like I'm in my CG class again
Join the shader crew
What if i could just apply some transparency to the sprite before its passed to the shader :'(
or even in the shader
You could do that actually
the whole holo sprite has an alpha of 192
aight
good to know
lemme apply that
and hope it works
You could remove the bit that crops the edges too
Yeah im looking for that rn
how'd you add a new row of cards to the editions tab?
Wait for the api to be finished and itâll do it for you taps head
I wonder where the cropping happens
Youâre looking for uv.x inequalities
Understandable, implemented a new edition effect and I wanted to get the edition showing up in the editions tab without using the debug menu haha
ik why now, blue borders
You could adjust the crop instead of removing it I guess
I think this is decent enough
Yeahh i did that
Yeah looks good
Whatâs this?
Displaying another joker within my joker :D
plus hologram effect
If I added support for (partial/extension) loc files, should they just be loaded automatically? I can't think of any API information that wouldn't be redundant
@frosty dock if I save something in my joker's card.ability, shouldn't that be saved even when I reload?
because It isn't
that's a no, I'm afraid
does anybody have an idea what went wrong here
an "if" block in your code is missing an "end"
thanks
that made it boot but did not add a joker do you know if that method would work
Without any code we can't help
^^
from what I see on the crash screen, it looks like you're not using Steamodded APIs
function Game:init_item_prototypes()
self.P_CENTERS ={
c_base={max = 500, freq = 1, line = 'base', name = "Default Base", pos = {x=1,y=0}, set = "Default", label = 'Base Card', effect = "Base", cost_mult = 1.0, config = {}},
--Jokers
j_advanced= {order = 1, unlocked = true, start_alerted = true, discovered = true, blueprint_compat = true, perishable_compat = true, eternal_compat = true, rarity = 1, cost = 2, name = "Joker", pos = {x=0,y=0}, set = "Joker", effect = "Mult", cost_mult = 1.0, config = {mult = 4000}},
}end
yes i am as far as i know
you are in fact not
no API usage whatsoever
how do i use the api
you're also overriding all other jokers, consumables, vouchers, decks and whatnot, rather unsuccessfulyy
this is for steamodded 1.0 only, which they don't seem to be using
refer to this instead for 0.9.8: https://github.com/Steamopollys/Steamodded/wiki/Creating-new-game-objects
you typed out the link by hand?
I did
maybe, just maybe, you should take a break from modding
just because I'm on mobile rn, it's faster
i got it to add the joker but i don't know how to add textures
maybe, just maybe, 1.0 will stay unfinished forever
oops
Im pretty sure its in the steamodded wiki
there we go
Gamer
i should've just copied the link there
can you tell me what i forgot
you forgot to show your code
^^
-- SMODS.Joker:new(name, slug, config, spritePos, loc_txt, rarity, cost, unlocked, discovered, blueprint_compat, eternal_compat, effect, atlas, soul_pos)
local j_example = SMODS.Joker:new('Example Joker', 'example', { mult = 106479 }, {x=0,y=0}, {
name = 'Example Joker',
text = { '{C:red}+#1#{} Mult' }
}, 1, 2, true, false, true, true, 'Mult', 'my_mod_jokers')
j_example:register()
function SMODS.INIT.NegateTexturePack()
sendDebugMessage("Launching Negate Texture Pack!")
local sprite_jkr = SMODS.Sprite:new("Joker", negate_mod.path, "Jokers-negate.png", 71, 95, "asset_atli")
next time wrap it in this
ok first of all
```lua
[code]
second of all, if you write "function xxx"
that needs to end somewhere
with the "end" keyword
also what kinda spaghetti code is that
you copied half of negate texture pack
what is negate texture pack doing there?
and added your code at the top
i don't know what im doing and the nagate stuff comes from the wiki
learn at least a bit about coding/lua
Honestly it might be easier if you did some tutorials on lua so you are coding in a language you know
'''lua
-- SMODS.Joker:new(name, slug, config, spritePos, loc_txt, rarity, cost, unlocked, discovered, blueprint_compat, eternal_compat, effect, atlas, soul_pos)
local j_example = SMODS.Joker:new('Example Joker', 'example', { mult = 106479 }, {x=0,y=0}, {
name = 'Example Joker',
text = { '{C:red}+#1#{} Mult' }
}, 1, 2, true, false, true, true, 'Mult', 'my_mod_jokers')
j_example:register()
function SMODS.INIT.NegateTexturePack()
sendDebugMessage("Launching Negate Texture Pack!")
local sprite_jkr = SMODS.Sprite:new("Joker", negate_mod.path, "Jokers-negate.png", 71, 95, "asset_atli")
end
'''
Whilst the documentation in the wiki is very sparse, it is enough to figure out how it works. Read the code from some other mods and you'll see what to do, but for that you need to know how to code
backticks please `
mfw
Also if you look at the error message and the number it gives thats the line number where the error is
Do you need an explanation in german, I think aure and I are both proficient in that
i can speak english
mfw no answer đ
idk what you mean with the loc files lol
how'd you know haha
I am a dumb monkey brain ooo ooo aaa aaa i cant conprehend what you said
Steam message was in german
Oooh
I thought I had my steam language configured as English lol
Auto loading sounds like the best approach
do NOT show code with single backtick
That was Jakob, not Aure
use triple backtick
Oh i thought you were talking about jakob
local message = 'so you can do this'
yeah no
I was asking nether how they knew I'm German
He could smell the pf from a mile away
I think you should be required to take a digital literacy test as a requirement to log onto like 80% of social media and if you fail Markdown you instantly fail the entire test and are banned from taking it for another month
The quality of chat would skyrocket
I don't think markdown should be a requirement for social media lmao
For coding related stuff, sure
on god
Markdown is the most versatile format for online communication
fr tho, how?
It uses simple, easily remembered conventions to convey a vast array of HTML tags in a way that's way more approachable
He saw you eating a schnitzel
cybersec & offensive security was a fun course
Oh no
It's not just good for writing docs, but also for notetaking, formatting longer messages, not posting obscenely long links, embedding code, adding emphasis
Okay ChatGPT
I assume you know his address and mailed him a pipe bomb
No, a Schnitzel
Of course
Reminds me of that one time that someone was told that they should reply to their emails themselves and not use ChatGPT but the person who was told that was just autistic (me asf rn)
tell me in DMs then
Idk it could just be the nearest major city to him
xd
works for me
actually I'll even do with the Bundesland
aure you know you have your twitter linked yes
and you retweet german-speaking articles
all the time
Its more funny to think he doxxed you
oh right
there is nothing funny about doxxing, let us not trivialize it
foolish to think I was at all being serious
I know
oh yeah what is your pfp? im actually so confused by it
it is an evil thing that i am not allowed to disclose in public servers
the less you know the better
/srs
@tawny perch I tweaked it a little bit. What do you think?
this looks sick
Awesome art, middling effect XD
Yeah that art is way too cool for the effect haha
But the theme is too fitting
dumbest deck I've ever made
lol
Just look at it go
(I think I still need to fix the event handling but shhh)
@frosty dock how do I use a vanilla atlas with a modded deck?
local CCD = {
object_type = "Back",
name = "cry-CCD",
key = "cry_CCD",
config = {cry_ccd = true},
pos = {x = 0, y = 0},
omit_prefix = true,
atlas = "Tarot",
loc_txt = {
name = "CCD Deck",
text = {
"Every card is also",
"a {C:attention}random{} consumable"
}
}
}
this isn't working
how would you add a modded consumable type to the shop pool? not in a pack but just only in the shop?
add raw_atlas_key = true
ah
too late since I already just copied The Fool into its own atlas but thanks
so this seems to be the thing in the steamoddewd consumable type code that determines the frequency in the shop, but how exactly do i access it?
put a shop_rate field on the object
what are the consequenecs of changing the stake mid-run
trying to discern the best way to implement a blind that raises the stake by 1 for the ante
pretty cool :)
no gripes
Anyone have a clue as to how to add a sprite inside the joker popup?
My god this game's handling of UI really is scuffed wtf
over a page of sin jokers finished, not even close to doneđ«
Missing one bottom left? Or is that how it's supposed to be lol
its the missing joker
it's for Null suit
you should show the polychrome version of that (polychrome looks so good with full black)
Ooh negative goes hard
My god UI is miserable
For the love of god please just be vertical
A little big but hey, it works.
oh dear lord what is happening in there
There's still the future UI hell of displaying which side of the die the joker rolled on, but let's pretend it doesn't exist :]
I don't know honestly.
what is the hexagons
test sprite
gem sockets for jokers...
That is a fail
ohh ok I see the mistake
Wait hold on how in the world do you draw a sprite onto another sprite
Oh this is super cool
btw I still can't figure out how to get this to work.
Using a dummy Moveable object doesn't work, it just leaves the object comepletely blank
slice & balatro??
So cool
toying with the display on playing cards....
ooh
also should it start at lvl1 for +0/+0 or lvl0 for +0/+0
hm
lvl1?
because planet card's bases don't necessarily match the upgrade amounts
but they do all start at level 1
but also it should just be hidden at lvl. 1
mhm
planet x now buffs wild cards instead of 5oak
should it say lvl twice? but if i put the chips and mult on the same line its super wide
haha i could make a "black hole" for suits
wilds just get buffed based on their base suit though
i could make it so wilds get the highest level among suits, maybe
lvl1. (blue)+3 / (red)+1 ?
the hand level display doesn't say chips / mult either right
no but the planets do
hand level display isn't in card description text, where the formatting is generally consistent
(looking at you, capitalized C in Chips)
đšhips
ok yeah i think that works nicely
ooh
i mean at the end of the day it is just "big number go bigger"
fun fact: planet descriptions use the wrong {S:0.8} notation, it should be {s:0.8}
same with mr bones
i had tried that but its still kinda obnoxiously wide
playing card descriptions are usually very slim
Yeah I suppose, I still think the level being on its own line would look better, with the values like that last picture under it
I need to snoop around in the code to replicate this though, I have some edition concepts that would use a similar system
trying to load into The Eye
1.0.0
0530h
np :>
simple solution: make it not fun
ok ill add you to the game
How does the left UI does it for Blinds?
Add the subsprites with the main one as a major like soul sprites
I think Iâd make the X black
But the background is a different color
If the X here were white it would read poorly among the white text
Red at least contrasts with both black and white

But against a white background you could have it be black and contrast with white, red, and blue
I wonder if you could make it a tiny suit icon
not likely
chat i am going insane
I think I prefer something like this
With a black X, maybe âsuit lvl. nâ
Is it possible to lovely-inject into steamodded files (and how to do that if possible)?
no
damn
i guess you could try to patch the files steamodded patches into, but you would have to guarantee your patches happen after steamodded's
which I don't think is supported currently?
the thing I want to patch isn't using a lovely patch by itself anyways
I meant literally âsuitâ
Not â[suit name]â, just the word âsuitâ
Canât you hook into it
I wanted to hide suit tallies in the mod like that (my change is outlined here)
which is in steamodded's api_hooks
?
ah, the reference function thingy?
not sure if I could do that since I make changes in the middle of the function
isn't that a bad practice
I'm trying to avoid that in my port so yea
which is still appended to main.lua via lovely
oh
anyways it already omits suits that are disabled, which should be good enough
This is the one đ
I think it could be one line still
i still kinda wish suits could be omitted if you just have 0 of them
without wholesale disabling them
anyway
that would actively change vanilla behavior though
most prominently checkered deck
0 of what
Oh in the deck screen
zero of the suit, as will be the case often with the minor arcana that do not start in your deck
You could make custom suits hideable, or make it a custom feature that mods can turn on or off
Vanilla behavior makes sense for vanilla not for mods
Itâs like saying adding more pages to the collection is changing vanilla behaviour
Or changing the number of lines in a collection page
adding more pages to the collection is changing vanilla behaviour :o)
what I mean is it's supposed to behave the same way when it's not touched by mods
grumble grumble i cant get these to look nice
when modded, of course it'll be different
Arenât Planets/Tarots in Steamodded displayed differently from vanilla?
no
White background?
well, planets have pages
So itâs different from vanilla behaviour
hands also have pages :)
still, I don't want clubs and diamonds to be removed from checkered deck's deck view unless you have them in your deck
that could do for that
What if we make a PR that removes it
It seems arbitrary collection can have multiple pages but the deck view canât hide suits you donât have
Both donât have mechanical impact
you seem a bit on-edge; aure is agreeing?
to me, adding something even if unused is fine, less so removing something that would be there in vanilla
Iâm just confused because it seems arbitrary
alternate idea
I donât see how hiding suits that arenât in the deck, even vanilla ones, is an issue
it makes sense to allow, I just don't see it as a default for vanilla suits
I like this
This is much more readable
Why preserve the vanilla behaviour tho
I think that makes it harder to read when you have custom suits but no vanilla suits
So colorful :))
Will this page show all suits or can it also hide those you donât have or are level 1?
There are helper functions to darken/lighten colors or mix them
Ah, I was going to say I think the box containing Chips and Mult could mix with the background
With it being always black against some color it looks weird IMO
oh thats an idea
But blending the background color with either the current color or just darkening it would look better IMO
Or maybe lightening it if itâs too dark already
What is "disabled" argument for in suit's declaration? It seems that it temporarily disables the suit until you start a run, but I don't see why that'd be useful?
I think the default behavior is to add every suit to a deck
colors 
it removes the playing cards from G.P_CARDS until re-enabled and hides from UI
Pride Month mod
why'd you think it was until you start a run?
Iâd tweak the levels but it looks better
there's some additional functions that let you decide whether or not to enable suits on a run
but disabled suits should stay that way if I didn't mess that up
idk it seems like they're disabled until I start a run, maybe I'm wrong tho
brighter/darker? right now it's darken 0.4
they do not show in challanges but after I join a run and exit it they reappear in challange previews
hm it doesn't reset when you exit a run
you might have to use the API functions instead of just calling disable
It depends on the color
try adding this
should_register = function() end
Maybe a little bit darker is an easier change to make
extreme gay modding
yeah it doesn't register now, thanks!
Now I think itâs too dark but itâs an interesting look
I wonder how one would mod making cards useable/sellable just by dragging them
Using consumables seems straightforward, selling consumables too, but selling Jokers Iâm not sure
suit counts now present
consider that on hands it is entirely black
Consider that the background is grey đ€
deck preview is unpettable but appreciates the attempt
Diamonds, Clubs, Hearts, Spades, Bananas, Stars, Cups,
Spades, Hearts, Clubs, Diamonds, Bananas, Stars, Cups, Things, Stuffs, Swords, Knives, Dooms, Moons, Stars, Wands, Coins, Lights, Minds, Bloods, Spaces, Hopes, Voids, Lifes, Breaths, Times, Rages,
atp one day we will get the Balatro suit
should_add_to_deck works as an empty function in the table to disable acquiring suits at the start of the game but it still adds the suits to challange previews, despite not actually adding the suits when starting a challenge, why?
I think Things is Dancing Cactus
in the future, comedy will be randomly generated
in the future, Balatro will be AI generated
there we go
it now omits any suit that isn't represented in your deck and is at level 1
Me when apple the fall tree head đ€Ł đ€Ł
so as long as there's something relevant to show, it'll show it
i might just hardcode the vanilla suits to be visible always, tbh.
i can always change the hardcoded part later :P
Do the vanilla suits change colors when you change the high contrast option
yes, here's what low-contrast looks like
should_add_to_deck doesn't care about the suit's enabled status, it only determines whether to add cards to deck if the suit is enabled
should_register disables the suit altogether
yeah I removed the should_register for now
or well, enables it
good thing you mentioned challenges, i should investigate this
I have nothing aside from should_add_to_deck change
so yeah I don't know how can I make them register yet make them not being added to the deck while also removing them from the challange deck preview
if you use should_register, you can still enable them mid-run by calling populate on the suit
as for the challenge deck preview, I haven't really thought I'd need to care about what suits are enabled outside of a run
I really afraid of saved game shenanigans where I would rejoin the game with suit being unregistered or unpopulated
you could just hook Game:start_run to populate your suit
i think
that func is for both new runs and continued runs
you can distinguish the two with args.savetext if you need to
yeah that's also what I used in 9.8 bunco but feels too tricky
not tricky, bloaty rather
That feels like something Steamodded should do
yep
I think I've accounted for that
though I probably should read that code again just to check it does what I meant it to do
yeah i have this in place
it's just that it keeps whatever was going on in the last run even if you exit it
that's a bit annoying
I'll tell if I'll have any weirdness
Does someone knows how to add starting consumables to a deck ?
consumables = {
'c_hex'
}
}```
Ty

what?

im sorry đ
When you create a consumable. self.ability.name is nil. Where should I set this value ?
are you checking self.ability.name or card.ability.name
Because basically it's in Card:can_use_consumable
i think you're doing something wrong but i am unfortunately not at your computer to know
If only there was a way for other people to see their code
./tp autumn mjst
not \ smh
No context balatro modding
cuz it sounds like you're hooking into Card:can_use_consumeable directly when you probably dont need to
silver dagger matador how do you find motivation to mod so much
You're probably right, but how do I check if a player can use one of my Consumable without hooking this method ?
can_use function on the consumable
smods already hooks it
dont need to fuss with checking card.ability.name really ever
local card_can_use_consumeable_ref = Card.can_use_consumeable
function Card:can_use_consumeable(any_state, skip_check)
local ret = card_can_use_consumeable_ref(self, any_state, skip_check)
if ret then return ret end
if self.ability.name == "name" then
if condition then return true end
end
return false
end
Oh
Ok
Thx
it's in the docsâąïž
surely
should definitely be +10/+2 
Hello does anyone know how i draw in front of the darkening of the overlay menu
I so want a wiki page for SMODS.ConsumableType
Draw what where
this thing but in front of the darkened background
i mean ideally just attached to the left side of the main thing but i don't know how you do that
ui remains horrible
a common line between all modding i've ever done
this basically copies whatever the debug menu does except that one does in fact render in front this doesn't
It might be drawing it at the right time
whatre you havin trouble with
also still no idea how things sliding in works
there seems to be no code for it it just happens through black magic
Probably events using ease timing
how do i decide when to draw something
IIRC the debug menu is hardcoded
i tried adding this to the I.POPUP table
since it sounds like it'd draw after the main menu
it doesn't
shouldn't popups be drawn later
cause popups seem to still be behind
unless i did it wrong
Basically you put it somewhere at the right moment, but also the sometimes things are drawn after their parents are drawn while inheriting properties
So if the parent is above it inherits that
Ah, try looking at line 2725 and 2728
I think thatâs what I was thinking of
And for this look at the ease option in the Event class definition
im not following (aka i don't understand)
anyway the moving inwards doesn't actually matter to me i just mentined it since it's black magic
i just want to draw credits for custom decks

no idea what this has to do with anything
unless self.F_HIDE_BG is false ig?
cause we are in OVERLAY_MENU
still unsure why this would matter if i just directly add things into I.POPUP
I thought checking for overlay or hiding the background would be it
Thereâs a file that defines events and you can look at the different handlers
Well handling types
for some reason i cant load in my mod, it says something about not supporting steamodded 0.9.8, any clue about what i could do? (on version 1.0.1f)
Not even knowing what most of the parameters are lol
you can always check smods's code
ctrl shift f from notepad++ or most other editors can search in all files in a directory, just check everything that references SMODS.ConsumableTypes
Whatâs your Steamodded version?
And Lovely version
does your mod have SMODS.INIT in it
what do you mean exactly by that?
A lot of the syntax was changed between 0.9.8 and 1.0.0, you'll have to fix your code to fit those syntax changes, they're available on the Steamodded wiki
ok new question since i don't get this
can i just like
attach a uibox to a uibox definition thing
yknow how the tooltips work except without hovering
surely there is some way to do it
found it, thanks
Defining a major/minor
hm i think i had something like this at some point
Also actually I think smooth movement for Moveables is defined in Moveables via VT, but Iâm not quite sure how the game uses it
oh right the issue was that i hooked something where the ui wasn't done yet 
ig just do more hooks
Or patches
There's more than that to it, but yes thats the first step
ok, i can send you the part of the code with it if needed
Wait I think I get it
Maybe the game uses the pinch state to control the position, and eases to the correct one
The comments where the pinch state is defined had me confused
But maybe thatâs it
The class for Moveables defines the two roles at the start
No I'm busy
fair enough, ill try to figure it out on my own
theres a migration guide in the docs i think
Although Moveable inherits from Node which has its own definition for moving nodes
yea, it just doesnt have anymore information about removing SMODS.INIT, so i will have to experiment until it works
The migration guide says that SMODS.INIT is removed
so i have a function that is SMODS.INIT.BBBalatro(), so i will just remove the SMODS.INIT.
nope
I was just worried that it could mess with things if i changed it
cool
just don't have the extraneous function
it just does nothing
ui remains impossible
i can either render it under the background making it stupid or it does nothing

I think thereâs a âglobalâ G.under_overlay which might be locally set up for UIElement objects
ok its ported, thanks guys
that is set in the draw function yea
i don't see how i'd disable it unless you want me to lovely patch the draw function
i thought making it a I.POPUP would fix it since that's way later
but it does nothing
G.under_overlay = false
Then you make it true again after
Or if you have an UIElement you can set it locally I think
self.under_overlay = false
tried .UIRoot.under_overlay = false
does nothing
idk what that is supposed to do anyway seems to never be used at all
ui black magic
I didnât say UIRoot
well UIBox isn't an UIElement
but it generates UIRoot as an UIElement for itself
as far as I can see
so that should be the equivalent
What about changing G.under_overlay?
ok i'll just lovely patch the draw function
seems there's no way around it anyway
did not help
it still draws it behind
i do not understand
uhmmm populating suit works fine I guess but the suit persists when I exit from run and it seems that it persists even when I reload the game
should I do manual un-population or whatever when exiting?
should_register should have you covered for entering runs
I don't know if it's feasible to disable on exit, I'm not sure there's a single function that always gets called
plus for challenges it'd even have to unregister when paused, since it's possible to start a new run from the pause menu
Negative playing cards (+1 hand size)
@frosty dock with the context.selling_card, can I somehow figure out which card is being sold?
yknow the middle is empty please shrink
for some unknown reason this UIBox does not have the :recalculate function
and im slowly going insane from UI being the worst thing in the entire universe
context.card
thx
doesn't look like something you'd need to specifically ping me for...
where would i find mods using steammodded
#1209506514763522108, mostly
Is this a third implementation of them
can someone translate this into lua code py import os abspath = os.path.abspath(__file__) dname = os.path.dirname(abspath) os.chdir(dname)
No but if you want the current directory where your own mod is SMODS provides it for you
so smods efectivly is that code alredy
how did you solve it?
Manually calling draw_shader("dissolve") in Sprite:draw()
Speaking of which what even is the "dissolve" shader
it draws the sprite
or it does the burn thing when things are destroyed
I think
I'm not quite sure what the game passes as these values though
yeah, it draws the dissolve mask if it's being created or destroyed, otherwise it just draws the sprite
so I guess if you need to draw anything anywhere, draw_shader("dissolve") is what you need
Then why is the sprite increased in size?
Either way, the main headache is dealt with
Wait, maybe it's streched or something?
I'm not aware of the shader itself resizing it
It's correctly sizes with each other D6 sides but not with the base sprite.
well, it'll resize based on screen size
Why donât you add the subsprites as children of the main sprite like soul sprites do?
I am doing that, Sprite:draw just doesn't call the dissolve shader.
Well, yeah, it only does that for Jokers that have soul sprites
It doesnât expect other objects to have it so it doesnât even try
But the subsprites should be linked to the main sprite
Are they different sizes?
No, they're the same size.
it does call it?
This includes transparent space?
it just needs to have done Sprite:define_draw_steps() first
Iâm thinking of the specific part of Card:draw that defines how soul sprites are handled
Which is hardcoded for Jokers
we're not in Card:draw though
Indeed but Iâm saying to use the same logic
it just draws them after the rest of the card
Because AFAIK if it was implemented elsewhere it shouldnât be reimplemented in Card:draw
It also sets up specific behaviour and changes some variables
I suspect the overlay is something else
I think I recall the deck having overlays for individual cards
the only difference afaik is it gives them the scale and rotation variables that let the soul float around
and then draws it based on the parent
I guess that's what you mean
Yes
That way their positions are linked relative to each other
If the soul didnât move and didnât have a shadow it would look like itâs part of the base sprite I believe
yes, it would
but I'm pretty sure it would also look the same if you didn't link it to the main sprite
the parent is more useful for if you need to translate it or scale it
@edgy reef what does your current method of drawing all the sprites look like?
This (I'm overriding rn before I make it a lovely patch so I know what I'd have to patch in).
Currently trying to figure out how define_draw_steps works
And what the args for it look like
Shouldnât you define the minor role for the side sprites somewhere?
minor?
Yes
That role links it to follow the movements of the main sprite AFAIK
It has a comment explaining it in Node.lua IIRC
shader = 'dissolve',
}})```
I think you can just define the shader in the draw steps
maybe no_tilt as well
If not Node then Moveable
It's in Moveable
If you figure it out tell me
I was thinking about multilayered soul sprites
But I need to understand how the code works better if I want to make it scalable for any number of layers
define_draw_steps works, but I'm still not sure how I'd go about defining the sprites as minor.
I think Moveable:set_alignment(args) will let them be categorised as minor
{major = main_sprite} should be fine for the args
but leaving it as a Major will make it move instantly with the rest
Doesn't seem the change anything.
set_role({major = self, role_type = 'Glued', draw_major = self}) I've found this as well which is how fronts, centers and backs are kept together
which might be more applicable as you don't need offsets or independent movement
I don't think soul sprites are assigned as minor moveables, but they do set the draw_major here self.children.floating_sprite.role.draw_major = self
Uh, oops
What is the correct version supposed to look like
Idk send a screenshot from your drawing software
This
And overlaid with the hex grid?
what is this i-1 for?
I assume youâre trying to get them to line up
Sprite position in the atlas probably
oh yes
Position of the die on the atlas.
Looking at it, it seems to me that itâs not even that theyâre misaligned, but that they are different sizes
how does it look if you change the shader drawing to just draw_shader()
The pixels on the back hex look smaller than on the sides
They are the same size though.
But not in-game
ohh
Think how there are two sets of assets with different sizes but that look the same
I believe both should have the same height of 2 pixels but the face pixels are taller
Try turning off the CRT effect and setting distortion to 0
That should make it easier to verify
Is one of those 1.5s the scaling? Maybe since you set the scaling of the child, it inherits the parentâs scale, so effectively youâre doing 1.5^2
is there a function on consumeables for when they are highlighted and unhighlighted?
Not particularly, but I think Card:highlight exists
WIP of a new mod i'm working on
? đ
Digievolution
Lol
Tbh it's my first time working with lovely patches it's actually so good and powerful
Join the lovely side of the force
Didn't recognize Digimon from the first gif is all
Huh I can even hear the GIF lol
Sorry I grew up with Pokemon
Me too
Lemme change the color rq
can you draw the grid after the segments too?
it'll be easier to see the difference
grid?
the blank hexes
what happens if you make your game window smaller?
This is with a copy of the base sprite drawn as a child, like how the sides are drawn.
With it in windowed mode
Got the API working too
that second outline you've drawn looks aligned
@edgy reef
The 1.5 in this screenshot corelates to the height and width of the sprite.
How so?
The way the Sprite handles it in it's init function.
Iâm not at my computer but I guess I can go there
Which goes into Moveable:init and get's assigned here.
Can you hard code drawing the outline after the segments to see if it's aligned?
the new one
As a child of the base_d6_sprite or the test_base_d6_sprite?
that looks fine, just draw it after your for loop instead of inside it
What exactly do you mean, btw?
have self.children.d6_side_test:draw_shader() here
unless you have got rid of that and are using draw_steps now?
I am
how do you populate draw_steps?
isn't the code here
because on this picture some of the segments are drawn after the test outline
victin
bard
WAIT WAIT WAIT
I did this
Dummy object to draw everything onto
And then passing the dummy object in the UIBox
it's still strange that it offsets everything from the dummy
I'm assuming the badges are drawn at the bottom of the dummy box
UIBox order is name -> desc -> dummy obj/D6 stuff -> badges
yessssssss
good morning autumn
im sorry :(
for what?
WAHOO
Swapped from "Glued" to minor and set offset to position everything higher
what are the hexagons....
does it need to be a moveable or can it be a node?
Node doesn't handle role args iirc
So doing set_role will error as the function doesn't exist to a Node object
do you set_role on the dummy obj?
Selector works now
Say goodbye
worth
(what the hell is a d6 joker)
yipee
Also has actual randomization now
this looks interesting
How do you remove these rough edges and make them smooth like in the base game?
For comparison
i think the no rerolling thing is quite bad
i can see the reasoning behind it though, if you have a bunch of purple and blue seal cards this joker is quite good
maybe "-0.2x mult per shop reroll" could work? like green joker losing its mult when you discard
it's set_badges iirc
good idea
however a thing that makes it better than normal is that my mod features multi-use consumables
just released the v1.0.0 of my mod lol #1247049217621360640 message
the jokers look like hot garbage but we dont talk about that
how do you find the consumables?
i assume they're shop only
are they infinitely resuable?
and sorry if im asking too much xd i could probably just try your mod and find out lol
no finitely reusable
the have an amount of uses
ah i see
they are destroyed when they run out
and they also all have some randomness in them
i swear why do i feel so nervous now that ive posted the mod
what if theres some game breaking bug
or i balanced it terribly and turns out magic carpet is overpowered
its fine! its a free mod
you're not publishing a whole game
im pretty sure perkeoing this is the most broken thing possible
ok ig
but then i worry if anyone s going to even play it
i guess i should just stop worrying and let it be
also what?
ok
uhhh another potentially overpowered card is this
its blueprint compatible
basically perkeo lite
Swordsman
"Gain x0.25 Mult per consumable used, lose x0.5 Mult per reroll in the shop"
not an extreme penalty, u can still look for consumables and jokers in the shop
but enough of a penalty that makes you think twice
i actually need feedback
yeah sure thing!
its 1 am for me so i better go to bed
go eep
Buy & Use crashes the game
also the text doesn't disappear from the score window on the left when it's used up
uses never reset when Gears appear again in a run
oh my
bruh when I played a Spectrum House the cards never scored
that's probably a Six Suits bug though
got the same bug
lobotomy build with rthro and eternal flame (which is like campfire but permanent)
nothing that special but it gets the job done
one other issue I noticed in this run ws a lot of jimbos in this shop
I also didn't find any other Gears so it could be some combination of Ro-Balatro and the other 5 or so mods I have loaded
glares at font
Anyone know where the game creates tooltips? I tried messing with create_UIBox_detailed_tooltip and create_popup_UIBox_tooltip and it seems to do nothing, and there's no other references to tooltips that I can find in the code.
which tooltip do you mean?
Tooltips that contain another object's description (like the Gold Card tooltip that appears for Golden Ticket)
those are made from recursive calls of generate_card_ui
text said yeet
This reasonable? Maybe a little bigger?
They're test sprites, I want them to be larger so there's a bigger design space.
rn each hex is 18 by 18
px
Really small 
But that comes later
thac tags thac tags thac tags
(as part of the move to get oddityapi released, only the "essential" tags are being left in oddityapi: the Oddity Tag (mega oddity pack) and Heirloom Tag (legendary oddity))
tags in thac will be stylized with a gold border
oddityAPI...
Anybody know how to smoothen out the edges of my joker, so that it looks like the vanilla ones?
It's so rough when moving
Oh, so I just need to outline it grey?
i think so? unless there's something else you're doing wrong that i'm just not aware of
I don't think so... I just imported it pixel perfect to the specifications
i'll try that though
what that joker
lusty joker
what the jonkler
lusty jonkler
how do you make a custom undiscovered texture for consumables in 1.0.0?
Yeah, I'm not sure. I added the same border the game uses and it's still janky
#1231844957266907186 message
OddityAPI for 1.0.0 is out now go nuts
How can I stop the joker from doing the mult message 3 times (and actually multiply the multiplier..)
YOOOOO
Context.cardArea has multiple context inside of it, try using 'context.joker_main' instead
Still, has it been removed? Cant find it anymore in SMODS code
this fixed the message thing + im just stupid and found out it always was doing the multiplier just on the second tag in the last video! tysm!! :D
Nice!
hello chat, i need help figuring out what art to put in "passion"
...and banishment cuz im not happy with the current art xd
alright, i like that
maybe i can make it on fire
"burning" with passion
yes!
btw, any thoughts on the other card arts?
honestly i love the other arts they look so good and fit the card names well :3
yee thank you <3
also, funny unfortunate alternative
might go with this one tbh xD
maybe make an alternate card art toggle for the funny version and regular?
i like both just i also like choice :3
Did you turn off pixel smoothing
Now I must update my mod to 1.0.0
Banishment can be someone far away on the horizon, maybe a cliff, looking away
I don't think so... I turned off interpolation when scaling the image up to 2x
I meant in-game
Do the Jokers have the right size?
Check the actual files in the correct folder to see if theyâre right
They are 71x95 in 1x, and 142x190 in 2x
Do they have a 1 pixel transparent border in 71x95?
Also thatâs what theyâre supposed to be, but did you check the actual files you saved?
I don't think so
Yeah, that's what they show up as in File Explorer
I think thatâs your issue then
Jokers have an effective 69x93 canvas because the rest is a transparent border
Which is divisible by 3 (nice)
Ok, so just squeeze the actual border in by a pixel all around?
Well, make the artwork 2 pixels smaller horizontally and vertically, yes
Oh ok, I get it now. Thanks!
trying to figure out how i can modify the negative rate
looking at the way balatro does it, it seems to be hard coded?
so id have to replace the function somehow, is that correct?
lovely injection would probably be the most likely, haven't looked at your use case though
basically just want a joker that increases negative joker chances
whats the correct colors for hearts and diamonds suit in descriptions?
atm im just using red and attention
{C:hearts} and {C:diamonds}
ty :)
Wait for EnhancementAPI
By the way the game has a function to calculate the number of cards of a suit
for the deck or the hand?
theres already an enhancementapi, you mean editionapi ;P
Correct
nope, it's just moved to a lovely patch
Alright will give it a look later thanks
Yeah edition api will have you covered with this when its released
Do you know if itâs possible to use a shader to draw outside of a cardâs boundary?
Should be able to, there are offsets you can define when you pass the function another object
Maybe someone can help me out here a little:
When I reload my run, the sprite for my joker isn't set correctly. In the load function, the other_joker is not being found (saved in card.children.copied_joker), but then in the calculate function for example (when selling another card or scoring or whatever triggers the calculate), it is then back all of a sudden, and the sprite gets re-set as usual. (Also when I hover and the loc_vars gets called, the name is shown correctly, there's just no logic to re-apply the sprite in there). So I assume on instant load the field just isn't initialized yet or whatever, maybe can I add some time delay to the code in the load? Any ideas?
the load hook is in fact at the start of the function
you could try using set_sprites instead
Is the copied Joker a card object?
i save it's name and sort_id
Do you assign the string to it exactly or what?
Are you assigning a card to a variable?
oh, you might actually have to retrieve the data from card_table
card.ability.copied_joker = {name = other_joker.ability.name, sort_id = other_joker.sort_id}
