#đ»ă»modding-dev
1 messages · Page 528 of 1
bump + im stuck with smth i thought i knew how to do it, how do i make a jokers value a
-x$ ?
nvm im dumb
huh? if i set no_rank = true and replace_base_card = false on my enhancement, then in my hand the front will be hidden, but not when in my deck?
Why do some lines have their own names instead of regular degular SMODS
Like for example Cryptid has âCryptid.base_values = {}â
my pc is currently crying
Just call it the OmegaNum Deck
Average balatro deck
numberslop moment
i think balatro balatrez will like this one
it's intentionally incredibly op
Id put 9000 joker slot
So the extra joker voucher makes ot 9001
there aren't even that many jonklers, even with cryptid
Itâs 1006
Copies can be made
true
imagine you run into this guy tho
Painful
the run is just over
unless you have good leveling
and are prepared
the plant is no longer asking
The evil consumable that disables this boss blind specifically:
the fact that there is none (and I didn't code disable stuff for this guy):
The joker I made that levels up high card by 6 whenever itâs played:
min ante = 32:
I keep forgetting to ask
Do i need to just put my mod in github, or i can just yeet it in anywhere publically accessible
github is recommended
but yea
This joker + the other joker I made that retriggers the rightmost joker and gains an extra retrigger when a boss blind is defeated
Man, i have to use my old git acc
Well imma have to test if my jokers are blueprintable first still
that sounds incredibly fun, i salute you, HOWEVER i have a legendary joker that upgrades its xmult by ^1.2 each HAND.
Meanwhile me
Doubles its own xmult, until to the limit.
For each hand played
imagine getting jumped by these 3 in downtown chicago
And also destroys other copies of it
all effects get copied by blueprint by default, you would need to specifically exclude effects you dont want it to copy
Well yeah, one of my joker doesnt actually have any effect
Yâknow, Iâve been meaning to make a joker that disables boss blinds when the joker itself gets disabled.
NONONONNONONOO . LETS TALK ABOUT THIS
YOU DONT HAVE TO DO THIS
ah yes, a necessary addition
Accidentally gets destroyed by mad joker/ceremonial dagger etc etc
I want to make new editions, but i dunno how
Is actually a negative eternal
i made a joker that sets your score to negative e's and then makes negative eternal copies of itself (but on plasma deck the score set actually helps so I just made it crash the game)
remove_from_deck = function(self, card, from_debuff)
Actually gives me an idea instead of joker avoiding getting debuff
Is that a cursed joker?
no, it's soleiescent (new rarity) which means it's in the same pool as genuinely good jokers
negative e's?
-6.900e42 to be exact
OmegaNum deck with all exotics, all legendaries, baron and mime:
Crashing even though I only have the latest Lovely2D and latest Steamodded
if you're not making a mod this goes in #âă»modding-general
Do you have Talisman and cryptid installed cos those are in the log
I did but then I removed them, still getting an error
Weird
Evil Deck: Creates a negative pointer at the start and end of each round
what is the game state 14 (G.STATES.SANDBOX) used for
Yeah idk whatâs going on because I havenât had this issue last time I updated everything on my Windows
Nor did I have issues on SteamOS
thats just called current cryptid equilibrium deck
or at least it might as well be
how do i check if a card is flipped?
card.facing == "back"
thank you
wrong channel
also wtf do you mean fantastic joker
I mean I am making it, thatâs the lua file
Those are my jokers.
you donât need help with the code
this channel is for code help
how do I apply stake effects to decks (specifically 5x faster blind scaling for sake of balance)
Iâm making a mechanical card (new type of consumable) called Wishlist, I believe you know of it already.
faster scaling or just 5x blind size?
faster scaling, the deck is insane
check vanillaremade stakes
i did the green stake one and put it inside modifiers = function() but it does nothing
i mean idk if theres a way to do like specifically 5 times faster so youd have to play around a bit and see what scaling values work
in apply
What kind of mod are you making? First you show off your decks, now youâre showing off your blinds.
ahh i see
yeah decks dont have a modifiers field
basically cryptid but less stuff and less balancing
Ah
Why would I know of it?
Iâve been talking about it for a while now
theres literally already antidebuff mechanics
like hotfix from entropy for example
This is the diagram
just makes the joker immune to being debuffed
I wasnât there and you canât expect anyone to know that unless they were asking questions about this earlier
Or getting destroyed
no it can get destroyed if it has hotfix
https://github.com/StickminGames/Stickmin-s-Collection-Balatro-Mod- this is the mod if u wanna try it
TrueâŠ
also like every "my mechanic is better and it makes yours not work" ever will be an arms race
Currently the main focus is just making wishlist a card that lets you choose any card from the collection and add it to the shop as part of the voucher space.
i hate to say this but your best bet is prob looking at cryptid rework tags
and also cryptid code card ui probably
Balancing issues will be dealt with once I get to finishing the main job
also wtf this is op
Did you not see the diagram?
using cryptid as a reference is heresy. unspeakable. heresy. heresy.
i know but what else is there
no other mod would have something so exact
breaking stuff and teaching yourself
Atm, my main concern is âcollection uiâ
I donât know how some of pointerâs code works
is the sequence of cost multipliers supposed to be 1 > 2 > 4 > 8 because i cant think of any usual function that would go through 2, 4, and 16 and also constantly increase
I havenât studied a lot of lua, so idk what definition does or whatever the fuck
^2
the first use is a 1x cost multiplier though
Oh.
i mean ^2 could work if you started at 2
Iâm thinking erratically, thatâs not good for me
though it would make the card basically completely unusable after a while
thats probably a good thing
it would be funny to have a card costing naneinf in the shop though
Ceiling is like $ 1 quadrillion or so.
You can still buy it, but itâll cost ya.
when are you having 1 quadrillion dollars đ
DREAM ENA
X2 gained interest per bought voucher.
If you tell me to nerf this joker, then whatâs the point of âThe Busted Buffoons Modâ?
My mechanic is worse and it works with yours
its like its in some king of mayhem
I didnât make this mod to beat all other mods in an arms race
I made this mod because itâs fucking funny to see jokers give me funny numbers
valid
I also made this mod to add in Spinel.
Spinel is a joker that STOCKPILES XMULT ON EACH SCORED CARD
make it legendary at least god damn
So for this mod, Spinel is the Jolly Joker.
Oh I made it a fantastic joker.
Itâs on par with Exotic.
i see
so only one consumable makes it
soul_rate for said consumable is super low?
Dream card is the only consumable I made.
i see
speaking of adding characters to balatro I put fucking Gwi Ma into a booster pack
Who?
demon king from K-Pop Demon Hunters
good movie
you should watch it
No thanks
SMODS.Enhancement {
key = 'retrigger',
pos = { x = 7, y = 0 },
config = {
extra = {
retrigger_times = 1
}
},
loc_txt = {
name = 'retrigger!',
text = {
[1] = 'retrigger'
}
},
atlas = 'CustomEnhancements',
any_suit = false,
replace_base_card = false,
no_rank = false,
no_suit = false,
always_scores = false,
unlocked = true,
discovered = true,
no_collection = false,
calculate = function(self, card, context)
if context.repetitions and card.should_retrigger then
return { repetitions = card.ability.extra.retrigger_times }
end
if context.main_scoring and context.cardarea == G.play then
card.should_retrigger = false
card.should_retrigger = true
end
end
}
am i being stupid why is this not retriggering like it should, does enhancements not have the repetitions context
oh wait
bruh i typed repetitions instead of repetition
ignore that message
How does Hotfixâs lua work?
From what I can see in the file, it just applies a sticker
Do I need to learn GLSL for shaders in Balatro?
from what i hear yes
Woohoo... -_-
look in the code for the sticker
because the card actually does just apply the sticker
can i make a card count as multiple enhancements? (while not having the effects of both)
damn i didnt realise vanilla remade is smods wiki 2, thank you
Do decks also use the same atlas configurations as jokers? (71, 95)
yeah
everything has the same sprite size except for blinds, tags and stakes as far as i know
Do I start with Deck #1 or Deck #5?
Ok
Deck #5 it is
The Deck of Absolute Hate is in production
I should probably create a Dagger like joker
In case cursed jokers are present in the deck
SMODS.find_card('joker_key')
key = 'tylercon',
set = 'Tarot',
loc_txt = {
name = 'Tyler',
text = {
'Enhances up to {C:attention}3{} selected cards into {C:attention}Glass Cards{}'
}
},
atlas = 'tylercon',
pos = { x = 0, y = 0 },
cost = 6,
unlocked = true,
discovered = true,
config = { max_highlighted = 3, mod_conv = 'm_glass' },
loc_vars = function(self, info_queue, card)
info_queue[#info_queue + 1] = G.P_CENTERS[card.ability.mod_conv]
return { vars = { card.ability.max_highlighted, localize { type = 'name_text', set = 'Enhanced', key = card.ability.mod_conv } } }
end,
use = function(self, card, area, copier)
if G.GAME.blind.config.blind.key == "silly_boss_tyler" then
G.E_MANAGER:add_event(Event({
trigger = 'after',
delay = 0.4,
func = function()
play_sound('timpani')
SMODS.add_card { key = "j_silly_tylerjok" }
card:juice_up(0.3, 0.5)
return true
end
}))
delay(0.6)
else
G.E_MANAGER:add_event(Event({
trigger = 'after',
delay = 0.4,
func = function()
play_sound('tarot1')
card:juice_up(0.3, 0.5)
return true
end
}))
for i = 1, #G.hand.highlighted do
local percent = 1.15 - (i - 0.999) / (#G.hand.highlighted - 0.998) * 0.3
G.E_MANAGER:add_event(Event({
trigger = 'after',
delay = 0.15,
func = function()
G.hand.highlighted[i]:flip()
play_sound('card1', percent)
G.hand.highlighted[i]:juice_up(0.3, 0.3)
return true
end
}))
end
delay(0.2)
for i = 1, #G.hand.highlighted do
G.E_MANAGER:add_event(Event({
trigger = 'after',
delay = 0.1,
func = function()
G.hand.highlighted[i]:set_ability(G.P_CENTERS[card.ability.mod_conv])
return true
end
}))
end
for i = 1, #G.hand.highlighted do
local percent = 0.85 + (i - 0.999) / (#G.hand.highlighted - 0.998) * 0.3
G.E_MANAGER:add_event(Event({
trigger = 'after',
delay = 0.15,
func = function()
G.hand.highlighted[i]:flip()
play_sound('tarot2', percent, 0.6)
G.hand.highlighted[i]:juice_up(0.3, 0.3)
return true
end
}))
end
G.E_MANAGER:add_event(Event({
trigger = 'after',
delay = 0.2,
func = function()
G.hand:unhighlight_all()
return true
end
}))
delay(0.5)
end
end,
can_use = function(self, card)
if G.GAME.blind.config.blind.key == "silly_boss_tyler" then
return G.jokers and #G.jokers.cards < G.jokers.config.card_limit
else
return G.hand and #G.hand.highlighted > 0 and #G.hand.highlighted <= card.ability.max_highlighted
end
end
}```
still having issues with this, trying to make a consumable turn 3 cards glass, but when used in a specific boss blind, it spawns a joker instead
enhancement consumables are handled automatically im pretty sure so it probably is just ignoring the use function
id just put the variables in extra so it doesnt do that
where?
the config variables
the config extra?
yes
ok!
key = 'tylercon',
set = 'Tarot',
loc_txt = {
name = 'Tyler',
text = {
'Enhances up to {C:attention}3{} selected cards into {C:attention}Glass Cards{}'
}
},
atlas = 'tylercon',
pos = { x = 0, y = 0 },
cost = 6,
unlocked = true,
discovered = true,
config = { extra = { max_highlighted = 3, mod_conv = 'm_glass' } },
loc_vars = function(self, info_queue, card)
info_queue[#info_queue + 1] = G.P_CENTERS[card.ability.mod_conv]
return { vars = { card.ability.max_highlighted, localize { type = 'name_text', set = 'Enhanced', key = card.ability.mod_conv } } }
end,
use = function(self, card, area, copier)
if G.GAME.blind.config.blind.key == "silly_boss_tyler" then
G.E_MANAGER:add_event(Event({
trigger = 'after',
delay = 0.4,
func = function()
play_sound('timpani')
SMODS.add_card { key = "j_silly_tylerjok" }
card:juice_up(0.3, 0.5)
return true
end
}))
delay(0.6)
end
end,
can_use = function(self, card)
if G.GAME.blind.config.blind.key == "silly_boss_tyler" then
return G.jokers and #G.jokers.cards < G.jokers.config.card_limit
else
return G.hand and #G.hand.highlighted > 0 and #G.hand.highlighted <= card.ability.max_highlighted
end
end
}```
would this work then
Omg thanks
Does this return true
Or the position
well you still need to change everything that references the config values to card.ability.extra but after that it should
I mean index
because itll like
mb
not automatically do the enhancements
w<
It returns a table containing each card object matching the key. If you want it to act as a true, wrap it in a next() wrapper
Okieee thanks astra :>>
u got it
It probably broke because without checking its contents with next(), it could be attempting to loop through an empty table
Yeah of course
Can i check for the length of table ? Instead of next
Yeah you could do that
yuppers
is it possible to leverage this for only joker effects? like i want to card to add an enhancement that counts as stone without the +50 chips or has_rank = false applying
doesnt work just giving enhancements and doesnt do what its supposed to in the specific boss blind either
i think this is what it does but I've never used it
key = 'tylercon',
set = 'Tarot',
loc_txt = {
name = 'Tyler',
text = {
'Enhances up to {C:attention}3{} selected cards into {C:attention}Glass Cards{}'
}
},
atlas = 'tylercon',
pos = { x = 0, y = 0 },
cost = 6,
unlocked = true,
discovered = true,
config = { extra = { max_highlighted = 3, mod_conv = 'm_glass' } },
loc_vars = function(self, info_queue, card)
info_queue[#info_queue + 1] = G.P_CENTERS[card.ability.extra.mod_conv]
return { vars = { card.ability.extra.max_highlighted, localize { type = 'name_text', set = 'Enhanced', key = card.ability.extra.mod_conv } } }
end,
use = function(self, card, area, copier)
if G.GAME.blind.config.blind.key == "silly_boss_tyler" then
G.E_MANAGER:add_event(Event({
trigger = 'after',
delay = 0.4,
func = function()
play_sound('timpani')
SMODS.add_card { key = "j_silly_tylerjok" }
card:juice_up(0.3, 0.5)
return true
end
}))
delay(0.6)
end
end,
can_use = function(self, card)
if G.GAME.blind.config.blind.key == "silly_boss_tyler" then
return G.jokers and #G.jokers.cards < G.jokers.config.card_limit
else
return G.hand and #G.hand.highlighted > 0 and #G.hand.highlighted <= card.ability.extra.max_highlighted
end
end
}```
thats a different card i think
oh it is mb
đ
fixed it
well first of all youre just missing the code for applying the enhancement
oop
im trying it right now, it treats the card as both, so i get both the +50 chips and my enhancement effect
oh then no idea
also blinds are prefixed with b_ i think so you probably have the wrong blind key
oh no
bl_
so you should have bl_silly_boss_tyler instead in the check
do you happen to know if context.check_enhancement is a seperate step in the scoring loop or smth? i tried restricting it to only context.cardrea = G.play but then the quantum enhancement doesnt apply at all
i fixed that
well it should work then i think
so like this?
key = 'tylercon',
set = 'Tarot',
loc_txt = {
name = 'Tyler',
text = {
'Enhances up to {C:attention}3{} selected cards into {C:attention}Glass Cards{}'
}
},
atlas = 'tylercon',
pos = { x = 0, y = 0 },
cost = 6,
unlocked = true,
discovered = true,
config = { extra = { max_highlighted = 3, mod_conv = 'm_glass' } },
loc_vars = function(self, info_queue, card)
info_queue[#info_queue + 1] = G.P_CENTERS[card.ability.extra.mod_conv]
return { vars = { card.ability.extra.max_highlighted, localize { type = 'name_text', set = 'Enhanced', key = card.ability.extra.mod_conv } } }
end,
use = function(self, card, area, copier)
if G.GAME.blind.config.blind.key == "bl_silly_boss_tyler" then
G.E_MANAGER:add_event(Event({
trigger = 'after',
delay = 0.4,
func = function()
play_sound('timpani')
SMODS.add_card { key = "j_silly_tylerjok" }
card:juice_up(0.3, 0.5)
return true
end
}))
delay(0.6)
else
G.E_MANAGER:add_event(Event({
trigger = 'after',
delay = 0.4,
func = function()
play_sound('tarot1')
card:juice_up(0.3, 0.5)
return true
end
}))
for i = 1, #G.hand.highlighted do
local percent = 1.15 - (i - 0.999) / (#G.hand.highlighted - 0.998) * 0.3
G.E_MANAGER:add_event(Event({
trigger = 'after',
delay = 0.15,
func = function()
G.hand.highlighted[i]:flip()
play_sound('card1', percent)
G.hand.highlighted[i]:juice_up(0.3, 0.3)
return true
end
}))
end
delay(0.2)
for i = 1, #G.hand.highlighted do
G.E_MANAGER:add_event(Event({
trigger = 'after',
delay = 0.1,
func = function()
G.hand.highlighted[i]:set_ability(G.P_CENTERS[card.ability.mod_conv])
return true
end
}))
end
for i = 1, #G.hand.highlighted do
local percent = 0.85 + (i - 0.999) / (#G.hand.highlighted - 0.998) * 0.3
G.E_MANAGER:add_event(Event({
trigger = 'after',
delay = 0.15,
func = function()
G.hand.highlighted[i]:flip()
play_sound('tarot2', percent, 0.6)
G.hand.highlighted[i]:juice_up(0.3, 0.3)
return true
end
}))
end
G.E_MANAGER:add_event(Event({
trigger = 'after',
delay = 0.2,
func = function()
G.hand:unhighlight_all()
return true
end
}))
delay(0.5)
end
end,
can_use = function(self, card)
if G.GAME.blind.config.blind.key == "bl_silly_boss_tyler" then
return G.jokers and #G.jokers.cards < G.jokers.config.card_limit
else
return G.hand and #G.hand.highlighted > 0 and #G.hand.highlighted <= card.ability.extra.max_highlighted
end
end
}```
Thanks I'll look into it
yeah that should be correct
it's just called every time an enhancement is checked, it only has other_card
i see, thank you
after using it in regular blind (glass function)
does it still crash if you use it in the boss?
let me see
also, sorry one final question because this has been bugging me because idk if its a bug or not, could you tell me if setting has_rank to false should disable rendering of card.front like replace_base_card? because having a enahancement with has_rank = false, replace_base_card=false makes the card.front not render when drawn, but does make it render in the deck view
no it does what its supposed to in the boss, spawns the joker
ive seen some people have that same problem but i have no idea either sorry haha
like this feels like a bug
nvm @slim ferry i know why
what is it
looks cool
but I recommend switching to localization file and utilizing loc_vars to change the description during Tyler Boss
could anyone help me figure out why the stake says "Applies ERROR" at the bottom + how to fix it?
SauKhongHuDecks, yes
Sagatro, not yet
can i see it as a reference, tried looking at Cryptid, confused to death
Cryptid isn't that confusing
stuff are categorized using the type field, everything else should belong to their respective object types
cryptids code is just really janky in a lot of places so its generally not a good reference imo
anyway, here in case
thanks alot huy
bump
@gilded blaze are args necessary?
those are for when you call check_for_unlocks
you can take a look at vanilla args
or make your own
but overall unnecessary if you don't want to restrict the achievement in certain actions
i see
how to
call check_for_unlocks{type = 'your_type'} where necessary
and where is this
was it a wrong index spot in loc_vars
it's been a while since i've made jokers
same
||all those Ortalab beta testing halted my progress||
glad to join at the right time
I can get both localization and collab to happen at once
Phony
Wdym
This
didn't know about that function on jokers
all good dw
Well actually the UI seems to work strange
did you return 0
How would I have .toml files only operate with certain mods installed?
I returned 1
weird
i think that's how lovely works since it has toml files
@red flower if i do the latter, do i still need to do an if check for every joker?
How can i mix textures?
can you elaborate
Okay, how do I use GLSL for shaders in Balatro?
nope and you don't even need to check if jokerdisplay is installed
Is there something I put in the header
Do you know how to use GLSL for shaders in general?
I learned the basics for the last hours
I want to either combine two textures or make one partly transparent, i assume it can only be done with shaders.
Specifically the suit/rank texture with its enhancement
Then read the differences in the guide that I donât have a link to đ
pretty cool, so i can go ahead and revert the commit where i checked if you had the mod or should i keep it just in case
yeah you don't need it
What guide?
thanks i'll go ahead and revert and work on the definations for my jokers đ
-- ...
loc_vars = function(self, info_queue, card)
info_queue[#info_queue + 1] = G.P_CENTERS.m_lucky
return { vars = { card.ability.extra.repetitions } }
end,
joker_display_def = function(JokerDisplay)
return {
}
end,
calculate = function(self, card, context)
-- ...
``` like this?
The one that tells you how to do shaders for balatro
yes
godspeed đ
also it's probably better if you post these to the jokerdisplay thread
the 7 is funny
i mean it's techincally the truth
speaking about adding mod compatibility, are there any other notable mods i should make sure my mod is compatible with
talisman?
other than that if you add decks cardsleeves is nice
No itâs somewhere in the modding forum iirc
how hard would it be to make it compatible?
If I try to dissolve a card from a new area it doesn't seem to work
do I have to config something?
so basically, when it comes to comparing numbers, to_big is the way
G.GAME.current_round.hands_left > 0 to G.GAME.current_round.hands_left > to_big(0)?
card.ability.extra.sDiscards > card.ability.extra.lDiscards to card.ability.extra.sDiscards > to_big(card.ability.extra.lDiscards)
not exactly, only when one of the numbers is a bignum
you need to convert the one that's not a bignum
or like it says in the tip you can just do both
what exactly is a bignum?
to_big(card.ability.extra.sDiscards) > to_big(card.ability.extra.lDiscards)?
I can't find the shaders guide... TwT
Talisman converts some game numbers to tables to allow them to go past the naneinf limit, that's a bignum
Thank you so much
Thereâs also this https://discord.com/channels/1116389027176787968/1371212149908836472
Which is probably more helpful to you right now
interesting
Hey! Probably a really stupid question, first time attempting to make a mod for this game, and i'm a bit lost
I'm trying to make a custom joker, that, when a hand is played spawns in a second joker, that is also modded. I got the jokers set up, they both appear in the game, and the spawning works fine, when done with a joker already present in the game, like the basic joker; Issue is, when i try to replace the key, for the key of my modded joker, it just crashes the game (with the error, attempt to index local 'center' which is NIL)
Am i missing something? there isn't much docu so i'm not sure
--Works perfectly fine, creates a basic joker
local testJokerBase = create_card('Joker', G.jokers, nil, nil, nil, nil, 'j_joker')
testJokerBase:add_to_deck()
G.jokers:emplace(testJokerBase)
--Crashes the game, should add a custom joker that has the key "meow"
local testJokerCustom = create_card('Joker', G.jokers, nil, nil, nil, nil, 'meow')
testJokerCustom:add_to_deck()
G.jokers:emplace(testJokerCustom)
you need j_[your mod's prefix]_[key]
also use SMODS.add_card { key = "j_modprefix_key" } instead of those 3 lines
aah, okay
tysm :3
which numbers are into tables?
no idea
yup, it worked
again, tysm ur my goat
i guess ill patch them as they come to me via issues
This is why talisman is a bad mod đ
Okay, alive again.
This works now, which is great, but for some reason it pauses for a few seconds after drawing the card.
[[patches]]
[patches.pattern]
target = "functions/state_events.lua"
pattern = "check_for_unlock({type = 'run_card_replays'})"
position = "before"
payload = '''
if SMODS.find_card("j_mode_mystery") then
draw_card(G.deck, G.play, 100, 'up', nil, pseudorandom_element(G.deck.cards, "mystery_play"))
end
'''
match_indent = true```
and then continues scoring like normal, except it much more sped up
i found the jankiest workaround ever
i set in the drawstep that self.base.nominal is 0 whenever the overlay renders and then the nominal value gets reset when it no longer renders
and it works? somehow??
just so i can have no base chips but also show the damn card.front lmfao
oh and i also had to modify SMODS.Enhancement to remove the line if self.no_rank then self.overrides_base_rank = true end (or atleast let me double check that this is actually needed and not just me going insane)
ok no that change was needed aswell đ
god this is awful
SMODS.PokerHand({
key = "FullMansion",
visible = true,
chips = 220,
mult = 22,
l_chips = 40,
l_mult = 4,
example = {
{ "S_A", true },
{ "D_A", true },
{ "H_A", true },
{ "S_K", true },
{ "D_K", true },
{ "H_K", true },
},
evaluate = function(parts, hand)
if #parts._3 == 2 then
return SMODS.merge_lists(parts._3[1], parts._3[2])
end
return {}
end,
modify_display_text = function(self, cards, scoring_hand)
return "FullMansion"
end
}):register()
Any reason this is not working?
I have a problem where it tracks the mult, but the mult doesn't score, any way to fix this?
define "not working"
for this return youre not actually giving any mult
I fixed it
I saw that right as I posted it and I almost cried
this one, the 2 + isnt needed
not sure about the card = card either
or the focus = card
also why is that in an extra table
Actually
It still doesn't work
at least now if I select the cards I can play the hand but only one three of a kind scores
idk I'm new to this and I downloaded a sample mod
evaluate = function(parts, hand)
if #parts._3 == 2 then
print(parts._3)
return parts._3
end
return {}
end,```
idk what any of that means tbh
i see
use VanillaRemade
you got it
quantum enhancements why are you like this why are you rendering card.front when it has an edition đ
Does anyone know why using DrawStep creates this weird black border? (right card, around the card example area)
There's pixel space before someone says that
evaluate = function(parts, hand)
if #parts._3 == 2 then
return SMODS.merge_lists(parts._3)
end
return {}
end,```
Why does this only activate the first played card and not the rest?
Is there a way to put a shader on cards when they have a specific Sticker, not an Edition?
How do i destroy a specific joker? Im tryna use a for loop to find the [i] of the joker to be destroyed but i dont know how to destroy it specifically, how do i do that?
In your for loop you can call joker:start_dissolve()
SMODS.destroy_cards(G.jokers.cards[i])
Or this
I don't understand. Parts._3 is a table with all three of a kind played right?
Yeah I believe so
Unless it's just the cards in the three of a kind
I mean
I want all 6 cards to score (two three of a kind)
but all I get with that is the first card scored
https://github.com/nh6574/VanillaRemade/blob/main/src/pokerhands.lua#L116-L134 full house implementation
Maybe the smods function returns something you don't expect it to?
return parts._all_pairs try that instead of the SMODS.merge_lists thing
Did you try printing stuff to the console
ok that works
return { SMODS.merge_lists(parts._3) }
it expects a table of tables of cards
I was missing the curlys
n do you know why my patch like pauses before continuing scoring?
no
argh
Hello there. I've been experiencing a crash with talisman with the variable G.GAME.dollars, where to_big() apparently dosent work and still returns a table. Does anyone know why?
to big makes it into a bignum which it already is
you want to_number
but what are you trying to do?
Or use to_big on the other part of the comparison
comparing mostly
then do this
so i have this for example but it still crashes with talisman. am i understanding something wrongly?
if context.setting_blind and not context.blueprint and
to_big(G.GAME.dollars) > 0 then
ease_dollars(-to_big(G.GAME.dollars))
return {
message = "All in!"
}
end
you want the 0 to be a bignum
I hate talisman so much
It's such a pain to add the compatibility for it everywhere
are there any guides or introductions to making your own balatro modding? I've been trying to learn about it by going through the code of some of the mods I downloaded but I'm getting a bit confused đ
I'm familiar with lua
We can stop the pain of talisman with one simple trick
check out smods wiki and vanilla remade
bump
Oh ok thanks
While you're in vanilla remade check out it's wiki
Quick question: can I make an object type pool of other object types?
-# (accidentally hit send earlier :3)
How does localization work for planets?
I'm surely doing this wrong, but I'm trying to add suits. I just copied from the Vanilla repo and modified the names to my suits. ( Going to make the art later. ) This does not work.
SMODS.Suit {
key = 'Acorns',
card_key = 'A',
pos = { y = 2 },
ui_pos = { x = 1, y = 1 },
keep_base_colours = true,
hc_colour = HEX('8B4202'),
hc_colour = HEX('8B4202')
}
So what am I supposed to do? ( I read the SMODS doc concerning suits and ranks and insofar as I am correctly understanding those, this format of object is right, but it's not getting incorporated by the game. )
well you have 2 definitions for high contrast, and having 2 table entries under the same name doesn't work. One of them probably should be lc_colour
calculate = function(self, card, context)
underweardetection = 0
for i = 0, #G.jokers.cards do
if G.jokers.cards[i] == "j_btct_Underwear" then
underweardetection = underweardetection + 1
end
end
if context.setting_blind and underweardetection < 4 and not context.blueprint then
if pseudorandom('ShurikenUnderwear') < card.ability.extra.odds / card.ability.extra.oddsoutoff then
SMODS.add_card{key = 'j_btct_Underwear', edition = 'e_negative'}
else
for i = 0, #G.jokers.cards do
if G.jokers.cards[i] == "j_btct_Underwear" then
SMODS.destroy_cards(G.jokers.cards[i])
else
G.E_MANAGER:add_event(Event({
trigger = 'after',
delay = 0.3,
blockable = false,
func = function()
card:remove()
return true
end
}))
end
end
end
else
for i = 0, #G.jokers.cards do
if G.jokers.cards[i] == "j_btct_Underwear" then
SMODS.destroy_cards(G.jokers.cards[i])
end
end
end
end
}
why does it just destroy the joker itself instead of the other joker?
That's fair.
I fixed that now, thanks. But that doesn't change that the suit changing function doesn't understand what it is.
card:remove() in this instance is the part you're asking.
bump2
Yes just check for the existence of the sticker in a drawstep
context.selling_self doesn't seem to be working for me? i have this check:
if context.selling_card and not context.selling_self and context.card.ability.set == "Joker" then
set up which should trigger if a joker is being sold, except if the joker is itself, but selling_self isn't being set in the context
what's the resolution for stake icon size and sticker size
yes, they're not called at the same time
just do context.card ~= card
How do i edit the transparency of the sprite a balatro shader is applied too?
Folks, does anyone know how to debuff a specific card in a table? I know I have to iterate through the table and use the value to get the specific card, but I'm unsure on how to apply the debuff only to it
card.debuff = true iirc
Will try
i think i've found an issue with smods probability handling
oops all 6's are getting double counted i believe
SMODS.debuff_card(card, true, "source")
they're divided by 2 in the function
it's for back compat
I have two oops all 6's and numerator is reading as 16
Making sure its not some strange handling in my mod code
i was doing some shenanigans to get some things to work before
can i see the code
yeah but i set the if statement to check if the joker is the other joker and destroy that one, so why does it destroy itself?
im assuming youre using G.GAME.probabilities.normal
Yes
you shouldnt
Glass cards are modded to use a separate numerator though since I need to adjust just their probability
(and i can't just use the default smods functions, because the patches to glass card break chance don't include an identifier...)
uhh can you explain what you want to do from the beginning and what the code is?
Two separate issues
- all my existing probability code that used to use
pseudorandom("seed") < G.GAME.probabilities.normal / denominatorhas G.GAME.probabilities.normal be double doubled with an oops - so with one oops,normalis 4 instead of 2, and with two, it's 16 instead of 4
- previously I added a new base -
G.GAME.probabilities.glass, which I adjusted to change the denominator for glass card break chance, and then patched the game to useG.GAME.probabilities.glassinstead ofG.GAME.probabilities.normalwhen checking if a glass card was going to break
Ok so 1 doesn't happen to me at all and 2 would be solved by just using the new probability stuff
.
Whats the var that checks if high contrast mode is on?
That's the seed
that's also the identifier
The identifier is variable 5, which isn't provided
handy! i didn't see that said anywhere
the double oops is weird tho
i'm assuming i should be putting 1 instead of G.GAME.probabilities.normal for the numerator in the smods pseudorandom function calls though
yes
does anyone have a link to the documentation on the new probability functions (assuming they have one)
Yeah, that number is a base numerator mod that will be applied to the prob normal
uh. wait, what actually happens if you remove a mod
it's deleted
Stuff added by the mod doesn't show up any more
oh
If you readd the mod, data will persist
this dude aint doin no nothin, dont know if i used the new function correctly
press_play and debuff_card dont happen at the same time
here's my readme so far!
oh
also debuff card goes through each card already
you dont have to add the loop
that will make it so theres more probability to debuff everything
what do you mean
the joker in question sets the chance of glass cards to break to 0 in X
yes they do
however the UI still shows 1 in 4
then your code is wrong
it should update it
how do i change the recalc_debuff area to be in G.jokers.cards (assuming it's possible)
local atl = G.ASSET_ATLAS['para_paradox_intro']
local scale = 60
G.PARA_PARADOX = G.PARA_PARADOX or Sprite(16,12,scale*atl.px/1000,scale*atl.py/1000, atl,{ x = 0, y = 0 })
G.PARA_PARADOX.T.y = 3
G.para_paradox_y = 0
why does this do nothing
i am going to make each enhancement have its own scoring sound
how get scoring card and check enhancement and replace sound
Can someone explain me SMODS.Drawstep? I don't really understand it
Card have some drawsteps: shadow (self explanatory), back (red deck), center (joker), front (ace of spades)
In this drawsteps also applied shaders on specific conditions (for example voucher shader for front is it's voucher)
-- JimathanAnimation
local btct = {ticks = (5)}
local upd = Game.update
local btct_Jimathan_dt = 0
function Game:update(dt)
upd(self, dt)
local Jimathanobj = G.P_CENTERS.j_btct_Jimathan
btct_Jimathan_dt = btct_Jimathan_dt + dt
if Jimathanobj and btct_Jimathan_dt > 0.1 then
btct_Jimathan_dt = btct_Jimathan_dt - 0.1
if Jimathanobj.pos.x > 3 then
Jimathanobj.pos.x = 0
else
Jimathanobj.pos.x = Jimathanobj.pos.x + 1
end
end
for k, v in pairs(G.I.CARD) do
if v.children.joker and v.children.joker.atlas == G.ASSET_ATLAS["btct_JimathanAtlas"] then
v.children.floating_sprite:set_sprite_pos({x = 0, y = 1})
end
end
end
i dont think im doing this right?
im tryna make the soul (not the background) animate, but it just wont. How do i fix this issue?
rhombus
So how would I program it so that it draws a shader on the card a specific sticker is on?
How can I setup a seperate modding folder/instance on MacOS? (I know you can copy & rename exe on windows)
Is there a better version of level_up_hand(card, hand)? The animation that it does for levelling up hands, especially multiple, is kind of weird.
getting an error regarding this boss blind and opening up the deck. it debuffs cards normally, but crashes when opening the deck. any ideas?
wait this exists
error code
Yeah, it's just all kinds of goofy.
is it the level up animation base game planets use
Add n = n or 0?
Close to, when doing multiple though (can't speak for single), it doesn't show the handname, it shows decreasing numbers between hands, and it leaves the level, mult, and chips of the last levelled up hand afterwards. I'll get a video.
SMODS.smart_level_up_hand is better to use
no change
it'd be SMODS.smart_level_up_hand("Flush") right
no
...did you add it before the for loop?
SMODS.smart_level_up_hand(card, hand, instant, amount) is the signature
I did involve some of that function for Internet Explorer's upgrade animations.
no :[
i did now and it worked okay thanks!!
what goes in card
now for the uhm
for this one
I'm actually just updating how it works because it's a bit broken sometimes xD
???
In a joker calculate function, you would just do card
card is the card you'd want to juice up and such.
then it'd be like true, 3 for instant and amount
right
joker idea: draws planet card of poker hand if it is the final hand of the round
well if you want the animation you dont want it to be instant
Frog đž
false, 1 would be default. Using true skips the animation, and 3 levels it up 3 times.
yeah ik
What 'secrets' does the frog hold?
thinking of having it based of Laika
Laika ( LY-kÉ; Russian: ĐĂĄĐčĐșа, IPA: [ËlajkÉ]; c.â1954 â 3 November 1957) was a Soviet space dog who was one of the first animals in space and the first to orbit the Earth. A stray mongrel from the streets of Moscow, she flew aboard the Sputnik 2 spacecraft, launched into low orbit on 3 November 1957. As the technology to re-enter the...
Windows 98 apparently đ
bush hid the facts
...that's an XP thing-
bump
My bad i havenât used xp i upgraded to 7
should i make it negative or not and have the "must have room"
Are u tryna make it balanced and similar with vanilla? If so then no negative and must have space. IMO btw
yeah
thats what i thought too but just wanted a second opinion
not sure if it should be common or uncommon
Uncommon prob�
Im not sure
My friend is usually the one with ideas
@old epoch get over here
It appears I have been summoned
I think either common or uncommon could work, as this is a blue seal that takes up a joker slot from my understanding
yeah basically was thinking like its somewhat similar to the acrobat where its like a close call joker so you can upgrade the poker hand
no negative as i plan to keep it vanilla equse
Alright, common seems better for it in my opinion in that case
????
already finished with laika now gotta do the art
and oh yeah uh not sure if i should make a joker display box for this one
Blue seal ?
Dusk+blue seal i think
dusk/arcobat+blue seal pretty much
I donât see any mult đ
its the final hand part
also i like space history was even nicknamed spudnik lol
now im going to try drawing laika
still new to pixel art and just drawing animals properally
any guides for like front facing dogs/canines
Good luck (âąxâą)/
Why does nothing happen when I play cards with this enhancement?
key = "cracked_stone",
path = "cracked_stone.png",
px = 71,
py = 95
})
SMODS.Enhancement{
key = "cracked_stone",
pos = { x = 0, y = 0 },
config = { x_chips = 1.2 },
atlas = 'cracked_stone',
discovered = true,
unlocked = true,
replace_base_card = true,
no_rank = true,
no_suit = true,
always_scores = true,
calculate = function(self, card, context)
return{
x_chips = card.ability.x_chips
}
end,
loc_vars = function(self, info_queue, card)
return { vars = { card.ability.xchips }, key = self.key }
end
}```
...remove the calculate bit entirely - x_chips in config should automatically be handled.
And your vars is pointing to .xchips, not .x_chips.
Still does nothing though
Did you spawn fresh ones in?
which ear do you prefer
By the way, is there a way to get that enhancement guaranteed on cards for testing?
Yes, DebugPlus
How? I have that
CTRL + W while hovering over a playing card I think.
It worked, thank you :3
Aww, such a cutie :D
its this dog if you were wondering :)
what do you think
Looks really good
what da dog doin
not the best at pixel art
Actually Balatro-like design
When I steal from Vanilla Remade đ
what stores all possible poker hands?
When I STEAL đ
that actually makes me feel a bit better
G.GAME.hands
omg hi smt
TWITTER: https://twitter.com/LukeCorreiaVA
PATREON: https://www.patreon.com/LukeCorreia
KO-FI: https://ko-fi.com/lukecorreiava
MUSIC:
Shikigami no Shiro II OST - "BGM 31"
Drakengard 3 OST - "The Upcoming Battle - Battlefield"
Unfortunately I need to arbitrarily define places where the game defines a boss by blind.boss and blind:get_type() == 'Boss'
How do I make it, so the Stone Card has a 1 in 4 chance to change into a different enhancement?
I use the latter for real bosses, and the former for extra bosses
for boss disabling effects like Chicot and Luchador, I use the former, since they can be used to disable extra bosses too
that's typically called an error
prove it in court
Hey paizanos, been a bit since I made a question on here
I'm trying to get this spectral to destroy one random joker from a set and then replace it with a joker from the same set
how do i wipe the save for a mod (lock/undiscover everything)
ugh I guess I need to use a regex patch
it looks like a dog joker but not like laika
seriously how do I wipe a save for a mod
bump
you can make a second or third profile in the bottom left corner
If context.before and (the probability using pseudorandom ) then
Make an event
Make a for loop of G.play and
Change the cards enhancements
Inside the event
You can find references in any probability joker
Event and adding enhancement is in empress code
Vanilla remade
For random enhancement
Use enhancement poll
You're overloading my brain with that much information at once xD
So what does half of this mean?
What and how do I make an event?
bump
Thank you
Thank you nonetheless :)
'm_stone'?
That just makes all cards stone
No, it's G.play.cards
Why doesnât it work like G.hand
My bad
đȘš
No, it's still G.hand.cards
You can find how to use enhancement poll inside certificate code , tho itâs seal poll but they work the same
Really?
Yes.
G.hand.config
i did my best
Yes.
hey smt do you know off the top of your noggin how id prevent the hand from being drawn in specific blind
ie no playing cards present
Perhaps hook G.FUNCS.draw_from_deck_to_hand?
perchance, that could work
I think you can draw cards elsewhere (off screen )
hmm, what is the purpose of the consumable buffer?
or buffers for other cardareas?
I think so it doesnât go past the limit
If youâre adding multiple cards at a time
Like high priestess
Idk tho iâm new
if you or anyone one else wants to try they are allowed to i don't mind
this is the code currently
this code WORKS, it does debuff the jokers
but it also debuffs the deck, which i dont want
any ideas on how i could make it exclusive?
Add cardarea==G.jokers to the if statement
Maybe
Idk
sure why not
nah
that completely stops everything from working
Is that right so far?
key = "cracked_stone",
pos = { x = 0, y = 0 },
config = { x_chips = 1.2, extra = { odds = 4 } },
atlas = 'cracked_stone',
discovered = true,
unlocked = true,
replace_base_card = true,
no_rank = true,
no_suit = true,
always_scores = true,
loc_vars = function(self, info_queue, card)
local numerator, denominator = SMODS.get_probability_vars(card, 1, card.ability.extra.odds, 'cracked_stone')
return { vars = { card.ability.x_chips, numerator, denominator }, key = self.key }
end,
calculate = function(self, card, context)
if context.before and SMODS.pseudorandom_probability(card, 'cracked_stone', 1, card.ability.extra.odds) then
for _,v in ipairs (G.play.cards) do
-- What goes in here now?
end
end
end
}```
what does the cracked stone do
i could be really annoying right now
idk man it's really late i just wanna get this fixed
@daring fern hi somethingcom can you help me real quick thanks
Instead of giving chips it gives Xchips
how many
Right now it's on 1.2 but I'm thinking about setting it higher
Put card.area == G.jokers in the if
gotcha
Can you help me real quick too?
What is the issue?
Don't know if this is right and what to do next
i did promise that ash guy i will do this, what do you think would be a good trade off
Hmm, maybe like a joker slot or consumable slot for that? Like that space was moved from the hand to them
i was thinking either retriggering every card or do a xmult and or xchip bonus
yeah that's actually a good idea
like the evil dead movies he cut off his own hand and switched it for a chainsaw, which did remove daul weilding but a chainsaw (not only is awesome) could help with killing the undead
Like I want to make it, so that Stone cards have a 1 in 4 chance to turn into a cracked_stone (my enhancement) but don't know how to
bump
now the question is
how would i be able to do that
like is that even possible in smods
Maybe add a bit of color to the text
I don't know for sure but I would say surely it is possible. I mean, all you gotta do is shrink the hand size by 1 and grow the Joker area by 1
What do you mean?
im trying to keep it like vanilla equse
Vanilla makes color in the description all the times. For discards, hands, hand size etc.
no no the concept itself đ
would reducing your poker hand size be considered close to vanilla or not
for the joker size that should probably be easy to do
reduce hand size or cards selected?
cards selected
ah
so without four fingers you can at most play four of a kind or two pair
but in some way an additional joker slot might be a worthwhile trade off
Ah
Oh, sorry xD. There are a few Jokers that reduce the hand size but not the amount of cards you can select
i personally wouldn't call that vanilla-like, but that definition changes depending on who you ask. i just say add what you think feels right
Im not that experienced so prob go check cryptid
i think its fine?
đ
Or wait for someone better at coding than my stupid brain
yeah theres a cryptid voucher that changes selection limit
SMODS.change_play_limit(mod)/SMODS.change_discard_limit(mod)
Used to change the number of cards that can be played/discarded at one time. Play limit has a lower limit of 1, and discard has a lower limit of 0. (Note: values can go below these limits, but will have no effect)
mod - number to change the limit by
thats for playing cards
for hand size itself i do
Hi dilly
in extra i have however many cards i want to increase in extra, and then in add and remove from deck increase/decrease
so youd do the opposite
so just do (1) and (-1)
add_to_deck = function(self, card, from_debuff)
local extra_cards = math.max(1, math.floor(self.config.extra))
SMODS.change_play_limit(extra_cards)
SMODS.change_discard_limit(extra_cards)
if G.hand and G.hand.change_size then
G.hand:change_size(extra_cards)
end
end,
ie this adds 1 hand size and play and discard limit
hi
and for example this is my extra
config = { extra = 1 },
so instead of adding youll be subtracting
it works thanks
awesome
could someone help me with making all suits count as every other suit? This smeared joker code is flying way over my head.
local oldcardissuit = Card.is_suit
function Card:is_suit(suit, bypass_debuff, flush_calc)
local g = oldcardissuit(self, suit, bypass_debuff, flush_calc)
if not SMODS.has_no_suit(self) then
return true
end
return g
end
bump
Bump?
(I want to make it, so that a Stone Card has a 1 in 4 chance of turning into a Cracked Stone)
what do you think of this concept
Very interesting
Bump
G.jokers.cards[i].config.center.key == "j_modprefix_key"
Oh i see thanks
also it's hard to read on mobile but i think your logic is wrong, you're checking if all jokers are the one you want
so if any is not the joker will destroy itself
N âĄ
hm how would this even work
-- Pareidolia
SMODS.Joker {
key = "pareidolia",
blueprint_compat = false,
rarity = 2,
cost = 5,
pos = { x = 6, y = 3 },
}
local card_is_face_ref = Card.is_face
function Card:is_face(from_boss)
return card_is_face_ref(self, from_boss) or (self:get_id() and next(SMODS.find_card("j_vremade_pareidolia")))
end
``` this is what the remade looks like for pareidolia
Really? Cause the if is inside the for and if the joker [i] is the joker then joker [i] is destroyed, i thought thats how i did mine
Holy i said that so confusingly
is there a way to treat a card or rank as another?
idk it's hard to read
can you elaborate on what you want?
Ill just try what you told me to do so thanks
i'll rework it sometime tomorrow but basically
if you play a two pair (full house) it will treat the lower ranking pair as the higher ranking pair
so for example if you played a pair of eights and sixes, it will treat the pair of sixes as a pair of eights allowing you to use something like fibba
it's a bit janky but you can hook get_id
it might be out of scope which is okay i got some other ideas
i need to get some sleep so sorry if i end it here now tonight
what's the recommended way to change the xmult a glass card gives
Is there a way to check if a specific joker has been triggered?
Do what blueprint or brainstorm do
context.other_joker will be equal to the whole joker card currently triggering when any joker triggers, you can check for if other_joker's key is the joker you're looking for
if context.post_trigger and context.other_card.config.center.key == 'j_modprefix_key'
what context would i use for cards other than playing cards getting destroyed?
context.joker_type_destroyed
can someone help be figure out why balatro is crashing when i try to use my consumable on the selcted joker? right now i just care about it making a negative copy, the ethereal part doesn't matter
buuuuump
i cant help with the exact issue but i know that the issue is stemming from line 35:
"(5) Lua method 'use' at file 'content/chakras/third_eye_chakra.lua:35' (from mod with id CHAKRACOLLECTION)"
yes i know it's coming from the use function thank you
copy_card(G.jokers.highlighted[i])
that worked thank you, but it just makes a normal copy not a negative copy
wait i see my mistake
so there isn't a better way than just looping over every existing card to change it
is it x_mult or Xmult that matters (or is it both..)
Just iterate over the cards and change card.ability.Xmult to a desired value as that's the one displaying the change.
I just changed both.
and this'll work for more than just jokers?
-# (sorry for the simple questions i want to be sure)
Yes.
oki, ty!
Bumpage
that's exciting!
quick ask how do i clear a joker's eternal sticker
what doesnt work here
its card.ability.eternal = false i think?
SMODS.Stickers.eternal:apply(card)
I'm trying to have it select a random joker from this set, and replace it with a joker from the same set, it can exist but cant be used
those aren't all the jokers in the set, just examples
you dont have can_use in your consumable
how would I set up the can_use though
G.jokers:remove_card(card)? Why not just use SMODS.destroy_cards(card)?
its a function, check SMODS.Consumable
if you return true then it will be usable, else not
So just set it
can_use = function(self, card) return true end?
How do you go about resolving performance issues?
i.e. how to get started on such a task
Its still not letting me use it
how hasnt it crashed
beats me
you are missing a , at the last end of use
Its saying thats an unexpected symbol
Not a clue
Chat, never indent
real
Sleeping from 5 am to 10 am then napping from 5 pm to like 8pm
just like me fr
like this?
yeah that should work i think
-# fix your indentation pls
-# maybe
-# tf u mean maybe sob
No definitely do
Can confirm, this man hibernates like a bear daily
Vscode has an auto formater
thats crazy
It didnt
-# actually i do the exact same thing except for the latter part so
im so dying before 20
it still creates the joker first?
Its a tragedy
I think my body is doing the thing
u right
oh
yeah, it uh, doesnt
card here is targeting the consumable
if you want it to destroy a random joker you want to find it with pseudorandom_element first
Oki, now how do I do that, and how could I limit them to (currently) 7 jokers
limit wat tho
The joker selection
SMODS.Rarity {
key = "Elite",
default_weight = 0.0067,
badge_colour = HEX('f59827'),
get_weight = function(self, weight, object_type)
return weight
end,
}
why does it just say error instead of Elite on the joker? (I have the stuff needed in en-us too)
but also
local pool = {}
for _,v in ipairs(G.jokers.cards) do
if (a flag or smt to filter out non-doctor who jokers or smt) then
pool[#pool+1] = v
end
end
local random_joker = pseudorandom_element(pool, pseudoseed("wa"))
does anyone know how to change how often showdowns appear?
im on bus rn so uh, gotta lay low for a bit (i dont want to throw up), sorri
ur good, where in the code do i put it
Yes, patch get_new_boss()
Should I set the flag to like one of the extra configs?
they answered my prayers
bump
how do I get the stats of the top 10 jokers you've used on your profile
iirc check G.PROFILES[G.SETTINGS.profile] for profile.joker_usage
Top 1 joker usage: Joker
-# damn it i was hoping to do this hook myself to show i could do it myself
How can i get the key of a non-playing card using self?
self.config.center.key
i figured out why it wasnt working (i forgot j_[modprefix]_ before the key i was checking)
got this to work, but how do I get the count value out of it
doubt I got this right cause this also didn't work
i think its like usage.wins
G.PROFILES[G.SETTINGS.profile]['joker_usage'].j_splash is a valid table with count in it, but ``G.PROFILES[G.SETTINGS.profile]['joker_usage'].j_splash.count` isn't working
Oh great gods of this realm called modding dev, I humbly request thy assistance with mine previous perils that still linger. (in other words, bump)
the count value is the number of rounds completed with the card, which is what I need
for splash specifically
yea, so usage.wins
the wins are the round value youve won with the card equipped, what are you trying to ask
but that's not true
i have not won almost 2k games with one card
I have won 4.7k rounds with splash
the count value says 4.7k and the wins value is far lower
i just don't know how to get to count
im afraid i dont know what youre asking for still
stat page only shows round wins and thats what i offered but idk anything else youre trying to get
the stat page even tells you its total completed rounds
yes and I want the value for the total completed rounds
so, you want the 2822 here, correct?
for an example of my top joker
yes
I had it print out the table and count is that value
{
order= 52,
losses= table: 0x2b645200 {
[2] = 1,
[1] = 69,
},
riftraft_win_key= 2,
losses_by_key= table: 0x2b645260 {
stake_white= 69,
stake_red= 1,
},
count= 4723,
wins= table: 0x2b6453b0 {
[1] = 42,
[2] = 3,
[3] = 14,
[4] = 13,
[5] = 2,
[7] = 2,
[8] = 4,
},
wins_by_key= table: 0x2b6452c0 {
stake_green= 14,
stake_white= 42,
stake_red= 3,
stake_gold= 4,
stake_orange= 2,
stake_blue= 2,
stake_black= 13,
},
}
but when I try to access that value, it returns errors
count isn't inside another table so it should just be G.PROFILES[G.SETTINGS.profile]['joker_usage'].j_splash.count
đ€