#💻・modding-dev
1 messages · Page 85 of 1
ty
no, i havent figured it out
i figured it out. Call the config like this
config_name["config option"]
I'm working on a joker that gives X Mult, but in calculate, setting the X Mult to anything doesn't change the actual scoring of the card.
The message pops up as if it has scored with the value I set, but it does not reflect on the round score
hi! sorry to ask this again but im still struggling with this,
im making a custom poker hand that overrides two pair if the hand contains two black eights and aces, but it just doesn't seem to be loading/crashes
which kind of xmult? iirc there's like two versions
there's Xmult_mod for the joker itself, and x_mult for playing cards
Ah, for the joker.
can i see the code?
also nice name sjdhsjhd
oh oh my god you're literally me (saw the bio)
chat Balatrostuck is Balatroback
having fun refactoring
i am so fucking ill right now
but i think that worked
nevermind i could've done the exact same thing on calculate_joker instead of eval_card
it works now yippee 🎉
i'm. not gonna bother to change the messages
"hmm yes i have made a decent amount of progress tonight, I'm going to publish my updates to github now"
entire internet is down
thanks computers.
did you know color codes have to be all lowercase even if your mod's prefix contains capital letters. took me days to figure that one out. not unrelatedly my mod's prefix no longer contains capital letters
Twinsss! 
I fixed the code, it was in fact not X_mult I needed. The joker works fine now, I just need to add destroying the played card that triggers it and I can move on to the next one.
heheeee nice
solved the issue!
,,,turns out i was looking for key 'dead' instead of key 'tma_dead'
GUYS
QUICK
HOW DO I REPLACE TEXTURES FOR JOKERS IN BALATRO
AND ALSO WHATS THAT ONE MOD THAT LETS YOU SPAWN IN JOKERS FROM THE COLLECTION
declare a new SMODS.Atlas
also can you change the names for jokers
and DebugPlus
and yes, make a localization file at YourMod/localization/default.lua, following the format of en-us.lua in the game files
alternatively use Malverk so you can turn them on and off at will 😉
yes
what does your texture atlas look like?
i called upon him
;-; idk what that is
the images you're using to replace
i have no texture mods if that helps
oh its just a single joker
i know that theres a big grid of all jokers
what i wanted to do is just replace it in there
so are you aware of structuring a mod with the assets folder?
not really
that's okay, just then I know where to start
so you create a new folder in your Mods folder named whatever you want your mod to be called
john malverk....
then inside that you need a main.lua and a folder named assets
how do i get a main.lua file
just make a new file
looks good
i just made a text file then changed the file type
right, so inside the assets folder, you need a 1x and a 2x folder
inside each of those you need the sprite of your joker in the appropriate sizing
1x is 71x95, 2x is 142x190
Malverk will actually support any sizes
oh can i just put the 2x image in both then
so if you can't scale it down, you can use that as 1x and scale it up for a new 2x size
right, now for the main.lua file
ok so i have one thats 142x190 and one thats 284 x 380
sounds good
alright sick
yes >:3
I'm not fully clued up on the new structure for mod info so we'll use the old way
aye aye
--- STEAMODDED HEADER
--- MOD_NAME:
--- MOD_ID:
--- PREFIX:
--- MOD_AUTHOR: [name here]
--- MOD_DESCRIPTION:
--- BADGE_COLOR: HEXCODE
--- VERSION: 1.0.0
--- DEPENDENCIES: [malverk]
you'll need to fill this in
at the top of your main.lua
did i do this right
yeah
the normal jimbo joker
does it need a custom description or just name?
just a name
sweet
AltTexture{
key = 'steve',
path = 'whateveryourimageis.fileextension',
set = 'Joker',
keys = {'j_joker'},
localization = {
j_joker = {
name = 'new name',
}
},
px = 142,
py = 190
}
TexturePack{
key = 'steve',
textures = {'stv_steve'},
loc_txt = {
name = 'Name of Texture Pack',
text = {
'Brief description'
}
}
}
I think if you replace the path this'll work
?
give it a try
do the images have the same name in each folder?
did you turn it on?
uhhhh
can you send the full crash log? you should be able to copy it from the crash screen
you should update your smods btw, it's very old
oh sure
oh I know why this crashed
oh?
add this to the altexture definition
loc_txt = {name = 'Steve'},
i... am steve
where did you put it?
looks good
whats line 34?
alternate texture?
this might sound really weird, but try deleting those brackets at the end and then putting them back
i sent the .lua file so if there was somethign like that you could see
anyway i did that
seemed to work!
yeah I'm not at my dev pc so can't check properly, but it seems like it was detecting some dodgy white space or something
SEEMS TO WORK
YEEESSSSS
i think i messed something up with debug
lmao
im so happy
👍
hi! sorry to ask, but is there a way to have a card like blueprint copy multiple other cards?
i cant seem to find any examples in the (three) mods i checked sjdhjshd
for some reason none of my jokers seem to be triggering anymore
nevermind misspelled consumeable
grand design from idk
cryptid probably
Can two messages be returned if a Joker multiplies both chips and mult?
No, but you can use card_eval_status_text to draw the second message
I mean returning both values also works
this just helped me figure out how to fix a joker i have, ty 😭
What of retriggering every Joker? This one I have also has that, but it ends up retriggering itself after the scoring is finished.
if context.retrigger_joker_check and not context.retrigger_joker and context.other_card ~= self then
return {
message = toga_randomruntext(), -- random string output function, don't mind this.
repetitions = card.ability.extra.retriggers,
card = card,
}
end
Also, the messages do show, but the multiplication of chips doesn't even occur, only the mult.
Here's the calculate part.
Right... then would it be better off merging the two into one message into a return?
you cant have more then one message in one return, you need to use something like eval_this
I more of meant to make a "custom" message, but return both Xchip_mod and Xmult_mod like I did prior to attempting eval_this.
you can put both x modifiers in the same return
then just put one of the messages in it, and the other in card_eval_status_text
or put the xmult in eval_this and the xchips in normal return
How would I format card_eval_status_text to include the blue color and the SFX that is made with xchips?
the final argument takes a table, you can add a colour = G.C.BLUE to it, but it doesn't look like it supported custom sounds
Its dumb that you cant mute or play a differente sound
The mult triggers twice in that.
if context.cardarea == G.jokers and not context.before and not context.after then
if card.ability.extra.x_chips > 0 and card.ability.extra.x_mult > 0 then
SMODS.eval_this(card, {
message = localize({ type = "variable", key = "a_xmult", vars = { card.ability.extra.x_mult } }),
Xmult_mod = card.ability.extra.x_mult,
colour = G.C.MULT
})
return {
message = localize({ type = "variable", key = "a_xchips", vars = { card.ability.extra.x_chips } }),
Xchip_mod = card.ability.extra.x_chips,
colour = G.C.CHIPS
}
end
end
And what else do I add to that check if accounting for the retriggering of other Jokers shown below in the image I've sent earlier to make sure the retrigger doesn't affect itself?
does the retrigger bit not work?
It retriggers itself, yes... and I want the multiplication of chips and mult to occur once from it.
I'm not sure I understand fully what the problem is then
The retriggering is meant to affect other Jokers but itself.
oh, try ~= card instead of ~= self
Perfect, this also fixes the random functionless retriggers. 🙏
key = "Code",
primary_colour = HEX("480049"),
secondary_colour = HEX("890062"),
collection_rows = { 2, 6 }, -- 2 pages for all runes
shop_rate = 0.2,
loc_txt = {
name = "Runes",
collection = "Runes"
},
can_stack = true,
can_divide = true,
}
``` What am i doing wrong?
Oops! The game crashed:
functions/misc_functions.lua:1430: bad argument #1 to 'ipairs' (table expected, got nil)
you're assigning to the API object instead of calling it
SMODS.ConsumableType { ..., no =
let me try that
awesome it works!!
also, just to know, what is primary color and secondary color used for?
secondary colour is the colour that appears in the menu and you can use it as {C:key} in your descriptions
I dont remember what primary colour does
Funny visual bug with Brainstorm and my Joker - the xchips element is red when on Brainstorm, but is otherwise functional. 😂
im pretty sure all brainstorm things are red? but i could be misremebering
It copies the Sly Joker's +50 chips just fine. Although might just be my specific thing, as I use eval_this for the Joker's Xmult_mod first, then a return for Xchip_mod.
it might be because xchips is a modded value, so it gets confused
object_type = "example",
...
SMODS.example{
...``` these are the same right?
no
then what is this?
cryptid's cursed way of registering objects
what is happening then?
they create a load of tables and then put those through the SMODS.example() creators
why???
guys
so, if i were to learn from cryptid mod, i can translate the cursed code by using this?
will the community accept me if i make a balatro sex update mod
because me and a friend are coming up with how to actually make this work
we are adding a new type of consumable
i will learn coding to make this work
...what?
THERE IS NO ACTUAL SEX
I WANT TO PREFICE THIS
THERE IS OBVIOUSLY NO SEX
its just sexuality and shit like that
its a massive shitpost but its all sfw
they're turning the jimbos gay
we already have gay jimbos
embed success :)
I'd recommend learning a non cursed way of doing it
they're called odd todd and even steven
gay marriage legalized, soon to be mandatory
And then there's the fusion of the two.
😭
i am afraid
oh i just noticed your nickname
i will learn how to mod this game for this bit
blocked for hating obelisk
-# /j
i will make it's gameplay actual fun
lol
how do i make a consuumable always negative
add a set_ability function to the object which will make the card negative
where would i put that
card:set_edition({negative = true}, true)
end
No you need to use set_ability
set_ability = function(self, card, initial, delay_sprites)
card:set_edition(‘e_negative’)
end
hmmmm
Art logic: It's an inverted color of the negative joker's colors just cleaned up
what are the dimensions of a consumable in pixels?
71x95 is the canvas, but they’re generally 63x93 iirc
so make a 71x95 image, then draw within 63x93?
yup
Or just use this as a base
tarot cards yippee
then use the consumable texture as a placement template
Your extra.chips is nil
If your loading a save with the joker created before adding the chips to extra it may cause this
thoughts on how to fill up the background for this card?
not sure if this fits in modding dev but its alright
i think it does because its developing a card but
i'd say, fanart is a better chat for this
🤷🤷 hell if i know
yeah alright
wtf??
okay
that fixes it, but why the fuck does that error in the fitrst place
anyone able to say what went wrong with this?
Did you not have it defined when you first spawned your joker?
The extras on the center are only used when creating the joker
After that they aren't touched so they can scale and stuff
i mean, thats how that always is - i've just never had an issue with spawning them in
that's like saying "i built a car, and then i added wheels to the blueprint, so why didn't all the cars i already built gain wheels?"
I mean if you had some bad code that set the chips to nil at one point it would also do the same
to my knowledge, nothing is effecting the value of chips unless its a club card 😭
or nothing should be atleast
spawning them in and then reloading seems to cause this issue, so yeah
The value wouldn't be set to inf or nan by any chance?
I am unsure if this has a spritesheet exporter, otherwise just add them next to each other in a big image
i shoulr use like aesoprite
i should not use aesptrite
what is a good free way to make the spritsheets
aseprite is free if you build it yourself
call me a consturuction huy
is there a way to change a joker's sprite based on whether high contrast cards is enabled?
what im going for
PERTHRO JERA HAGALAZ HOLY CRAP ISAAC ARHDHDOAVPQBWPSNCKAOBSKEBV
average isac fan
dagaz
BERKANO EHWAZ DAGAZ AUEVRVTODHEHEPRKQVDIFBR
these runes will NOT be functioning like they do in isaax
Is there a way to make a new card type that goes into the deck? Not count as a playing card unless i want it to
how the hell does text in tabs work
well somone get him for me please if hes awake
how should i export spritesheets?
unresolved conflicts
i disabled all other mods for testing
// ! No mods in the list may be installed, else this mod will not load.
exact-words brain kicking into gear
do conflicts still apply if a mod is deactivated??
why is there 2 and where are my textures
a. steamodded bug
b.no clue
the double cards should be fixed with the latest steamodded iirc
pos = {x=1}?? is that wrong
show atlas
my fi
you're not using the atlas here though?
hmm you trying to get blank one
im trying to get one after blank
how do i use the atlas?
now they are pixelated and also cut off
i put 4px padding, do i account for that in px and py?
yeah, you'll need to account for the actual sizes in px and py
so for 4px padding, itd be 73 x 97?
assuming your padding matches that, yeah
also is there a keybind to restart balatro?
holding M, though maybe that's only with debugplus
i sam usingf debug plus so where good
we are
why is it so pixellated?
or like blurry
how do i make it use the other sprite? its using the first in the atlas instead of the second
everyones asleep 😔
is that the duplicate of the blank rune?
is there not supposed to be a blank rune?
so theres not supposed to be a blank rune appearing in-game (yet)
your pos is set to 0, 0
it should be 1, 0
and yes it's the position on the spritesheet
order is for collection then?
order is collection position iirc, but i haven't actually checked that
yes
how did you make the 2x
image rescaler
make sure when upscaling that your program isn't set to smooth the pixels
"nearest neighbor" usually works
yes that
can you send a screenshot of the resize window
mfw my username is too long for the mod tag (i know it should be consumables)
crying
how would i fix this
is it possible to put line breaks in the display name?
(i don't recall seeing it ever so i'm guessing probably not)
reasonably sure it's \n
there has to be something for this? it seems like it would be a common problem
i guess abbreviating the mod name for the tag is the intended solution here
i'm sure i've seen that somewhere else
i canty even write thatguy's consumables.... the last s gets cut off.....
how are we thinking of the acronym
could prob readd the 's
Trying to add a boss - but somehow in the table eligible_bosses it ends up with a true instead of a number, and I have no idea where that comes from
do you use in_pool?
Eh I start my keys with bl_circus and I get Steammodded puts another in front?
Helps though to pick my own set
set_ability = function(self, card, initial, delay_sprites)
card:set_edition(e_negative, false, false)
end,
unlocked = true,
discovered = true,
loc_txt = {
name = "Laguz",
text = {"Gain {C:attention}+1{} discard for this round"}
},
atlas = "runes",
set = "Runes",
name = "runes-laguz",
key = "laguz",
pos = {x = 1, y = 0},
config = {},
cost = 4,
order = 1,
can_use = function(self, card)
return G.STATE == G.STATES.SELECTING_HAND
end,
use = function(self, card, area, copier)
G.E_MANAGER:add_event(Event({trigger = 'after',delay = 0.1,func = function()
ease_discard(1)
return true end }))
end,
}```this isnt making the rune always negative, how do i fix this
If I add in_pool and return False it doesn't crash...but return anything else doesn't seem to matter
if it's negative, maybe leave the sprite as-is to make it clear that it's negative
this isnt a rock though
by keep sprite as is, you mean how its looking right now?
like this?
where is the shader for negative
i have my work cut out for me...
thats better
itll do
no, i had meant don't invert the sprite and revert it to its natural colors, so it looks negative
but itd look uglrt
thats kinda how negatives be
im fine with thius
chat
small question
if i wanted to make a checkbox appear next to a joker
how would i do it
like clickable???
yea obv
that seems hard
I'm curious, is it possible to make a boss blind that makes it so cards drawn aren't removed from your deck? So that your deck will always have however many cards it currently has, no matter how many cards you actually draw. Meaning you can draw multiple copies of the same card, but also have the same odds of drawing one particular card no matter how many cards you draw or discard.
sure it is
oopsies
okay so i've figured out how to disable a joker from spawning i think
problem is i dont know how to get the current pool size
so it crashes when the pool runs empty
it worksssss
now i just gotta work on UI 🥹
Hey guys quick question is modding mobile balatro possible?
does nobody read the modding rules channel???
this is like the 7th time i've seen someone ask this
Gl!
how many fucking legendary jokers are there 😭😭😭
If I get the size of a scoring hand, does it counts debuffed cards as well? Not sure if it counts them all if I just do #context.scoring_hand
And if not are there alternatives do get it?
#G.play.cards ig
Wont g.play.cards give me the unscored cards too? I only want the ones that made the scoring hand
Debuffed cards should be in the scoring hand afaik
hey guys my game keep crashing while i'm trying to installing this mod:
Collabs reimagined by Auto Watto [ID: mod_custom_collabs_deck, Version: 1.0.0]
any helpers?
nevermind found an easier way
can someone help me rq?
its supposed to display all jokers previously disabled last session as disabled
center.key is not a thing?
it is, though?
center is a table with a key is it not?
naw
it is
if it wasnt a thing, it shouldnt even work at all
you did not help tho???
its not that i didnt want help
its just that that was not the problem
unfortunately for you you are wrong and refusing to listen
let me check
a center has no key property
generally the key is, the key in P_CENTERS
but since collections pull from P_CENTER_POOLS.<pool> and those don't have keys the only way to get a key out of it is to iterate through P_CENTERS to look for a matching center
and then just take the key from the pair
i mean if you insist i guess??? i dont know why you insist its not a thing
the key has always been a thing afaik?
never has it not existed for me
odd
i know what im doing but i dont know what im doing wrong
it's not a thing in the vanilla objects
maybe SMODS adds it but only to the mod-inserted jokers
oh nvm
there's vanilla jokers there
weird
typical steamodded jank
i'm assuming it was easier to make a menu for all the modded jokers
and then add all the vanilla jokers there
it is, actually?
than it was to add the modded jokers to the vanilla meniu
it's not
that is literally from vanilla code
self.config.center.key
center being yk
center
must only be in certain objects ive been well through the p_centers table vanilla uses
it is in cards, that is for sure
unless there's some shit code that inserts the keys in there at runtime for no reason
i wouldn't be surprised though considering this is balatro
its basically everywhere
probably this then
the thing i know for sure is that the centers as they are written don't have a key inside them
anyone know where the get_x_same modification is located in smod?
Hey! I'm currently "TRYING" to work on a Danganronpa Joker mods, but I am learning lua at the same time, so I'm never sure of what I am doing, so I would like to know how I can try my mods in game to check if my code is good
There is my code for my first joker
for one, that won't compile because you're trying to define a function inside a table
and for two you're overriding Card:set_cost
which you shouldn't do
anyways to test it you launch the game
and if you have debugplus or similar you just open collection find the joker and press c or 3 to spawn it in
Oh, ok, thanks!
I kinda worked on a little bit of joker art today i guess... maybe it'll be done tomorrow if i have motivation
i know about ease_hands and ease_discards, but what other eases are there?
ease_dollars
thats it? what about hand size
G.hand.config.card_limit
How would i make something happen after a blind ends
does this actually work
ive always used G.hand:change_size(-card.ability.extra.ABILITYNAME)
im guessing its based on the context its used in because mines always been under add_to_deck = function(self, card, from_debuff)
its better if you're using multiple jokers that stack handsize
lets say i use a consumable in small blind, how would i, for example, change hand size next blinds
well i suppose if you're adding handsize it would just kind of be like
G.hand.config.card_limit = G.hand.config.card_limit + n
end```where n is the amount of handsize added by the joker
what about removing hand size?
G.hand.config.card_limit = G.hand.config.card_limit - n
end```
but i use this one second
G.hand:change_size(-card.ability.extra.h_size)
end,
remove_from_deck = function(self, card, from_debuff)
G.hand:change_size(card.ability.extra.h_size)
end,```
where h_size is the amount of hand size
how would this work? i would use tags, but double tags would be an issue
on the next blind after using the consumable?
i wouldnt know i cant lie
you can use this code as reference, it'll need tweaking for your own use case, but i have a joker that increases the handsize based on the amount of skipped blinds
i want handsize to decrease, but not on the round you use it on
G.E_MANAGER:add_event(Event({
func = function()
card_eval_status_text(card, 'extra', nil, nil, nil, {
G.hand:change_size(card.ability.extra.increase),
message = ("+" .. (G.GAME.skips) .. " Hand Size"),
colour = G.C.ATTENTION,
card = card
})
return true
end}))
end```
yeah i dont know how you could do this
do yall know why it won't save
you'd have to have some variable that counts the amount of consumables you use during a blind, and then store that
it saves during the session but everything is erased afterwards
and when a blind starts you'd want to affect your handsize using that variable and reset it back to 0
itd be a permanent change
yeah yeah
set the variable back to 0 i mean so that it can count the next blinds consumables
what would the change be per consumable used
oh is it the consumable that takes the hand size away
you use it, gain 1 or 2 discards for this round, but -1 hand size for the rest of the game
i was under the impression there was a joker that was doing it whenever you used a consumable by bad
oh i see
im not sure how you'd apply the -1 hand size on the next round
it'd be fairly easy to make if it applied on the same blind as the blind you use it on though
is there a function that happens when you win a blind?
because i can store the hand size change and change hand size when the blind is won
or... will i have to take control of functions (scary)
working on a concept for a mod, gonna see if i can get a prototype working once i'm done concepting
maybe when the gold cards score is when i can change handsize
SMODS.save_mod_config(current_mod)
pretty sure but i dont know it off the top of my head
would this work?
i think it might just be context.end_of_round
THANK YOU!!!!!
dumb question, what does context mean
context```
is a table sent through in joker calculations
oh wait you're making a consumable i forgot
so lua context.selling_self happens when a card is sold, which then triggers lua (the card here):calculate_joker{selling_self = true}
could i change the blind win function to also change hand size from a variable?
what do you mean by the "blind win function"
like whatever happens when blind wins
there is probably a function for that
like gold cards giving money
i dont work with consumables too much but contexts might still apply to consumables i have no idea
someone else might have to help you cus i mainly make jokers xd
sorry
CONSUMABLE GODS HEAR MY PLEA!!!!
THUNK!!!! YOUR MODDER HAS RETURNED!! I COME... SEEKING THE CONTEXT OF AFTERBLIND!!!
would G.GAME.blind.defeat(self) work? it seems like it would do things after a blind is defeated,
modder... you will not get a full view of the context of afterblind
function end_round()
GRAHHHHH!!! DO NOT DENY ME MY CONTEXT TABLES!!!
would this work in a consumable
after you use it?
like
wdym
that's just the function that creates the end round state (gold cards and such)
nvm doesnt work
idk what im doing wrong 😭
you use it, gain 2 discards for this round, then hand size decreases by one for the rest of the game (not the blind you use it on)
its making the hand size apply on the next blind that is the pain
xd
otherwise it would be super simple
this would also probably be useful for the rest of the consumables im doing (short term benifits, long term downsides)
increment a global game variable (G.GAME.your_consumable_uses, could be anything as long as it's in G.GAME), then hook end_round() to decrement hand size based on how big that variable is, then reset it to 0
any text editor would do
you CAN use notepad but its not ideal
i use vscode but just anything you can use to edit text
what do you use?
notepad ++ is good, visual studio is as well
ah
how do i hook a function?,
don't use notepad++ if you're planning to do anything long-term btw, it's fine for a quick edit but not for a whole project
this is a really simple hook, you can just do something like:
local endroundref = end_round
function end_round()
endroundref()
your_code = here
end
what you're basically doing is copying the current end_round function, overwriting it, and then calling the copy from within the function so nothing breaks
so vscode?
ok got it
btw why
VScode, or atom, or sublime, or whatever else you prefer
Notepad++ doesn't actually understand anything about the language you're writing, or does projects afaik. So it can show syntax but that's about it, while other editors can point out errors in advance, give suggestions, etc
i see
i mean im just beginning
i dont even know where to start
what are a list of globals and where would i find them
if this is about what i said earlier then sorry, i wasn't really clear enough
you can make the global game variable pretty much anything (G.GAME.bhefiwhllaaaaaaaaaaa), it doesn't have to exist yet
just make sure it exists before trying to see what its value is at
but if you actually want a list of literally every global then idfk lmao
G.GAME.bhefiwhllaaaaaaaaaa is set to 14
okasies
balatro nuzlocke
haha fuck you debuffs your collection
G.GAME.IHATEOBELISKAHHHH
best global
so how do you start with making a mod?
do you get your ideas together first
well
i assume you do that haha
but i mean i dont have any programming knowledge, can i still whip up something with enough effort or
yea ofc the first step is just come up with ideas
you can learn!!!
wouldnt say its required but definitely helps
lua is like easy or something
best tip of balatro modding - fuck the documentation
issue is
im not very good at modding or anything like that
so im scared of fucking up my game LOL
you dont really need to be
this is the first time ive modded a game xd
also, any mods dont affect the actual source code of the vanilla game itself
ah yeah
if you break anything and want to fix it you can just remove your mod from your mods folder and it'll be fine
by fix it i mean just revert to vanilla
mods cant have like permanent effects on the game itself xd
yeah start by creating the mods directory
so you'll have the assets and then your .lua
also under assets you'll have a 1x and 2x folder, 2x just being the same sprites but upscaled to 2x
you can look at basically any other mod for its directories, but some mods do lay them out differently
making the spritesheet might be fucking impossible
heres mine
not really
what is a toml file 😭
dont worry about it
you can take a spritesheet from a different mod, and then just overwrite each jokerw ith your own
thats what i did
Ooohhh
i like this
thats if you're using lovely in your mod, which is for other stuff
or just a spritesheet template honestly
which isnt really important
its not too bad
but yeah the best stuff you learn from studying other code and the ingame code
ill see
i also suck at art
🥳🥳
i dunno if its a good time to share this but uh
yippee finally figured out how the patching for after scoring works
shit thats a good idea
thankies
triple oa6 sounds interesting
how do you make jokers work? is it too difficult
not really
a lot of my learning was looking at the code for other mods and learning from them
especially looking for jokers with similar effects to the idea i was currently making
also it is surprisingly difficult to modify how hands work
mhm!!
what does the dead man's hand do
probably just custom base chips/mult
that's a good idea too
yeahh
i see
basically an instant win
xd
damn making custom hands is a nice idea
what actually are the stats that it has lol
i might look into like
quite a pain though ive heard
i thought about an exponential joker
which has a 1/x chance to square the amount of chips each round
but that looks super difficult
1837 x 1876 lol
i haven't decided on the chance yet
oh to be fair that isnt that bad
it starts at 2
thing is
if i make it too rare it's gonna take forever to scale
but if i make it too common its going to scale so fast
2-4-16-256..
wait so is it going to be like
it has a chance to square an amount, and then that amount is added?
or just square the chips in the current hand played entirely
honestly when it comes down to pseudocode writing jokers is just like
"if context.joker_scoring, mult = 20"
added yes
nah this is too broken lmao
oh that is a really fast scaling
yea xd
hence why im split
make it too rare and you're stuck with 4 chips for the entire run
oh so it will start out with like a small +chips, and each round/hand played/whatever it has a chance to square that amount
im sure there's code for that in the game
i thought about making it like
powers of 2
so like 2-4-8-16 etc..
but i dont know either
G.GAME.blind:get_type() == 'Boss' to check if its a boss
yeaahh
i already have a good powers of 2 idea for a joker
it'd be like
if context.end_of_round and G.GAME.blind:get_type() == 'Boss' then
mhm
and whenever a hand with 2 or more cards adding up to a power of 2 is played you get +16 mult permanently on that card
or +8
thinking
by "a power of 2" do you mean a square number
on the joker i mean
a power of 2 as in
adding up to
actually iirc its moreso
if context.end_of_round and G.GAME.blind.boss
2 or 4 or 8 or 16 or 32
oh right
don't think you can add up to more
i mean you can but not in vanilla
yeah so not very useful
depends if you want mod compat or not
not really tbh i think that's too difficult to make
depends
some jokers might override others and shit
override in what way
i think if two mods have a global of the same name that might cause issues but other than that i dont think you can really break other mods too much with your own
xd
yeah ofc
i started off asking so many questions but you get there eventually
have fun
hey i'm having trouble with my mod not loading, should i send the source here?
nvm i put a header argument wrong lol
lua doesn't have compound operators
if you are still here, i dont think im declaring my globals correctly
how do i declare a global
crying
anything you declare is automatically global unless it is prefaced with "local" or it's being declared as a value inside an existing table that is a local
well
if you're setting a value inside a table it's not a declaration
so meh
G.GAME doesn't exist when the game is loading
it exists in the same context that a run exists
you can hook start_run
this is a good idea
you can also declare the variable when you need it but it requires some janky handling
hook ing time
start_run requires a more complex hook actually
no it doesn't
it's G.start_run but everything else looks correct afaik
i don't think start_run has arguments
also wdym by this it's quite simple
i believe it goes something like
local startRef = Game.start_run
function Game:start_run(args)
startRef(self, args)
your_code = here
end
what does this mean? (learning so much about lua)
no idea
colon means like
object self argument but it's also contained in that table or something
but you're also passing the args down to the copy
ok
also, we are working!!!!
what is extra, and should i use it?
it seems to store values related to whatever the thing is doing
A colon passes the object before it into the function as the first variable
having trouble getting this working, any help?
what does loc_text do?
and how do the colors work
like what do they do
its part of the skeleton
idk what the skeleton is
more info in the api documentation
ah
What isn’t working?
how do you check if you are at a boss blind again
just read through the api documentation - what does the config parameter do?
Should be loc_txt btw not loc_text
i dont get it
what does it mean by initial values?
the basic thing a joker gives?
so for example if square joker starts at 0 chips does it settle that in the config parameter
Yes
ohh i feel so stupid 😭 working now, thanks!!
ahhh
so its like the chips or the mult a joker starts from
or stays at?
It’ for it to contain the values your joker is using yeah
why is there 2 of each
Update smods
ugh
these look nice
(only kind of)
also where are the color tags for descriptions
wait are mult / chips color tags for descriptions automatically set or do you need them?
you need them
damn
Download from source
download zip?
Yeah
Do you want them to be actually negative as in not taking up space?
yep
again i think laguz is a bit strange
its a hold until you need it thing
just one more discard for a single hand trading off hand size
idk
if it was like permanent+1 discard
or longer
thats why im not sure about the discard
just one round tho?
Maybe complete other runes first, then think about balance?
23 wow
24 runes, 25 including blank (spawn last used rune)
I don’t think I would ever give up hand size for a temporary discard gain
yeah that's what im saying
even ectoplasm has more permanent benefits for hand size
and it's not considered super good
one idea was that you draw a card less first hand of other blinds
hmm
so you draw 7/8, then discard to get 8/8
they wanted it so you draw 4/x at first, so you need a discard to find 5 card hands
i think that could work but itd be a lot more coding
another option is simply +2 discard this round, -1 discards rest of rounds
what would you give up for a temporary discard gain?
that relates to this
temporary hand
like a rune im thinking of is +x$, -x$ intresst cap
this would be okay
if the x money was good enough
so like
+15 -1/2 interest cap or something
I’m not sure I’d give up anything for discards tbh
^
maybe... discards and hand size?
gain temporary discards and hand size and give up ___
this seems ok
i think i will remove the downside
is dagaz ok though?
i HATE vanilla jokers!! NO MORE SPAWNING!!
because you could delete the thing that's inherently stopping you from winning
but on post ante 8 scaling it could just fuck you over
it's alright as a reroll tool if that makes sense
I know for a fact gold stake scaling is insane and can go from like 20 mil to multi billions
but thats endless, i dont think +2 discards would help you either
you disable say the needle and get another boss
you essentially reroll the boss blind
yeah
Yeah
yep
Debuffs the boss
p sure gold stake scaling and normal scaling are the same in endless
so is dagaz good?
You're right
my px might not be right
Which part are you most attached to? The Luchador effect or +1 Ante? As it stands now, it is never worth it to use Dagaz. The downside directly counteracts the upside.
this too honestly
disabling one ante to get another one
which also requires more chips
idk..
I mean let’s just consider the Wall
In most cases this card would make the boss blind bigger than the active Wall would’ve been
And even if it doesn’t you’re still an ante ahead now
So you’re still likely screwed
yeah
This card is for when you run into the Plant on a Face Card build, and I still think it’s too punishing
The luchador effect
alright so the precedent right now is that nothing that changes or disables the boss blind should have a permanent drawback. If you still want a drawback, you need something temporary, like messing with money or setting the boss blind requirement to 3X base instead of the usual 2X base
Maybe no intrest on that round or no blind beat money for that round
yeah that would be good
disable the boss blind but it doesn't reward you with its usual $5 guarantee
I have 4px padding
these consumables are bigger
Yeah if you want it to be a proper circle the image size has to be within a 71x95 bounding box
wait... i drew in 63x93... i dont need padding
how do i export my spritesheent!!!
its a 71x95 canvas, and i drew within 65x93
(i messed up math on sides
nvm we good
How do i ge t the boss reward "$$$$" text to go away
the blind doesnt give money, but the reward text is still there
Just probably reuse whatever code that Red Stake uses for Small Blinds.
did it, awesomesauce
what mod brought up the menu on the right?
debug+, you hold tab to bring up screeen on right
also you can hold m to restart game (useful)