#đ»ă»modding-dev
1 messages · Page 130 of 1
Is there any mod that "rebuild" challenges in terms of code/ui entirely?
the controller is so broken i couldn't imagine like cryptid
anyway, don't play cryptid with controllers
it will ruin your experience
huh
thoughts on this joker concept?
Fiddler (Uncommon): Create a Devil or a Fool when Blind is selected (Must have room)
"with equal odds" is unnecessary imo
fair ^^
not sure about balance, but it's definitely stronger than Cartomancer and questionably better than vagabond too
How do I get the center position of the card on screen?
so I think this could easily be a rare
I used this but you can see by the red dot it's offset in some weird way
T.x/T.y is top left corner iirc
There wasn't a difference between T and VT when I was comparing both here
yep, absolutely the same result
they differ whilst the card moves iirc
It feels like I'm missing some hidden multiplier
since the difference between cursor position and card position ranges when I move the card (not counting the interpolation)
and the position is going nuts if I resize the window
what about Devil / Tower?
what does the key parameter do in the SMODS.DeckSkin API
i am confused
genuinely confused no idea if i'm doing this right
im trying to make a balatro mod but whenever im going to install lovely it says "web location could not be accessed"
im not using any anti virus things so im not sure if tis my browser being annoying or what
key is how the object is referred to internally
object as in
the deckskin
Can anyone help me figure this out? đ
I was told I have to remove loc_txt if Im using localization
But if I do, it just stops working entirely, because its not detecting the localization at all
try s_cs_lift_seal or s_cs_lift_seal_seal
unbelievable đ€Šđœââïž
wow, SMODS.has_enhancement(context.other_card, "m_stone") crash game
yeah it appends "_seal" to the key
it shouldn't
was removed for consistency with vanilla seals iirc
can someone explain to me like i'm a 5 year old with ADHD i am insanely confused about what i'm doing
no it doesnt add s_, only _seal
needs to be in assets folders
you need to make atlas too i think
the textures?
yep the textures need to be in an Assets folder
it might be
have you checked out this DeckSkin example? https://github.com/Steamodded/examples/blob/master/Mods/DeckSkinTemplate/DeckSkinTemplate.lua
oh there's a template
i was looking at the like
api documentation on it
that should help
hope it does!!
i am now 3 times more confused
how do you make a fully custom tooltip for info queue
thoughts? :D
beautiful!
looks great!
thanks!!!!
does lovely patch match partital lines?
for example: i want to replace self.ability.effect == 'Stone Card' into self.ability.effect == 'Stone Card' and (not (G.GAME and (not G.GAME.Hyperstoneia))).
Inside the code:
function Card:get_chip_bonus()
if self.debuff then return 0 end
if self.ability.effect == 'Stone Card' then
return self.ability.bonus + (self.ability.perma_bonus or 0)
end
return self.base.nominal + self.ability.bonus + (self.ability.perma_bonus or 0)
end
```Expected:
```lua
function Card:get_chip_bonus()
if self.debuff then return 0 end
if self.ability.effect == 'Stone Card' and (not (G.GAME and (not G.GAME.Hyperstoneia))) then
return self.ability.bonus + (self.ability.perma_bonus or 0)
end
return self.base.nominal + self.ability.bonus + (self.ability.perma_bonus or 0)
end
with pattern patches, nope
you'd need to use regex
ok so how do i do completely custom info queue
how custom.... đŽ
so custom i could add a horse
with or without sparkles?
info_queue[#info_queue + 1] = horse duh
what do i put as the atlas_key i am confused once again!
I think without sparkles is better
đ
or maybe less sparkles?
how do i make it so my enchancement only gives mult when if played hand contains a flush?
you should have less sparkles around the violin
anything it doesn't matter
not directly on top of it
the thing is
the game crashes when i put anything in
wait lemme grab the error message
oh maybe this template is old and broken
the code btw
i downloaded another deck skin mod that uses steamodded so i can see how it works exactly and it had the same template, worked fine
tthe one in SMODS_altas?
yeah
?
how to make stone cards act as normal cards when the specific effect is active?
as you can see, this hovered stone card with hyperstoneia should be score 9 instead of 50, but it still scores 50.
you may see this appears to be stone joker, but it's actually hyperstoneia and i have to make it look different.
anyone?
you have the path for your high contrast texture set to .png
is it supposed to be assets/textures/2x or whatever
I think so
assets/1x and assets/2x, yeah
uk_hc and uk_lc is fine
how to make stone cards act as normal cards when the specific effect is active?
never mind listen to them lol
that's the atlas key, not the path
should i add both textures in both 1x and 2x folders?
2x should be scaled up by.. well, 2x
yep
nah believe me
i've spent at least an hour confused by things resulting from me mispelling stuff
it's all a process
Can someone help troubleshoot this with me? Been trying to understand why everything in the "if context.end_of_round..." statement just doesn't work. If the return statement is the first thing there, then the message doesn't send, but the card always steals your money. If the return statement is the last thing there, nothing works. Any ideas?
you have a rogue comma at the end of the money line
Wow.
how to make stone cards act as normal cards when the specific effect is active?
where's your files now
still need help here
Anybody else experience this? If I save a card in some field where it will persist between game sessions (either a field in G.GAME or <whatever card>.ability.whatever), when I exit the game and restart, it gets replaced with the string "MANUAL_REPLACE"
textures are in the 2x and 1x folders
assets not resources
this doesn't appear to really help - is there anything in the if statements that makes you think it wouldn't work?
wait what
wdym
just rename resources to assets
i am going to crash out
it was named assets before and didn't work
anyways it works but the textures don't show up
probably fucked up in the lua file
Whatâs the issue
doesn't seem to make a differencesince the custom deck skin shows up under the hearts category
still gonna change it
hmm?
wait they changed how enhancements work? or is it because im using better_calc
what smods version are you on?
poker_hand = text
i threw up my hands and used the new one since that actually fixed one of my other problems
Iâm not sure if it matters but the key is supposed to have the prefix and an actual key
1310b
oh good spot, I don't know why they differ other than the area đ€
You just used the prefix
actual key as in
as in whatever key you want
i am stupids
ah
Itâs like a name
But no two objects should have the same key
They could have the same name just not the same key
i changed it that's an old screenshot
was gonna reply to this saying you can check context.poker_hands in main_scoring but saw this wasn't consistently the case when looking it up
What version of Steamodded are you on?
i have a bigger problem now though
latest, downloaded today
cause none of my enhancements seemts to be working
what I was gonna say is also specific to better_calc
Ah wait I think I get it
What does your texture look like
there's no longer an effect arg, you just return the effects like you do for jokers
oh i see
these
so i will just use it like if it was a joker?
Alright, below that line where it says you probably donât need to change anything
Look up where itâs written 'deck'
don't tell me i just have to change it to collab
It should be that, yes
basically. context for main scoring is if context.main_scoring and context.cardarea == G.play then
(or G.hand for cards held in hand)
How did you achieve this effect?
i saw that when checking deckskin api guide thing on the github and thought that i didn't have to change it because idk i'mn stupids
Itâs fine I need to update it anyways
I wrote it before Steamodded fixed a bug and added other functionality
drawing an extra sprite over it
still doesn't work tho
IIRC it shows the entire suit if one texture replaces all
e
how to take_ownership after the game has finished loading?
I mean I understand that part. I want to know how to offset it
local movement_mod = 0.05*math.sin(1.1*(G.TIMERS.REAL + card.aiko_draw_delay)) - 0.07
local rot_mod = 0.02*math.sin(0.72*(G.TIMERS.REAL + card.aiko_draw_delay)) + 0.03
local drag_mod = card.velocity
G.aikoyori_letters_stickers[card.aikoyori_letters_stickers].role.draw_major = card
G.aikoyori_letters_stickers[card.aikoyori_letters_stickers]:draw_shader('dissolve', 0, nil, nil, card.children.center, 0.1, rot_mod, drag_mod.x * -3, movement_mod - drag_mod.y * -3)
G.aikoyori_letters_stickers[card.aikoyori_letters_stickers]:draw_shader('dissolve', nil, nil, nil, card.children.center, nil, rot_mod, drag_mod.x * -3, -0.02 + movement_mod*0.9 - drag_mod.y * -3, nil)
what do these do
why not
no fucking way scrabbletro
Hmmm, how do you control the movement in two dimensions
I donât quite get it from this code
i just take it from the cards
I only see one dimension
erm,... i'm gonna crash tf out>?
how to take_ownership after the game has finished loading?
?
Give me a moment
I see movement_mod in a single argument
And it seems to be a number not a vector
So Iâm not sure how to move in the 2nd dimension
Why
Just increase your priority level
it has to do during playing hand calculation
that's not what take_ownership is meant for
what do you need to do? most likely you can just change the values on the card
@cloud ore this is for a slightly older version of Steamodded but it works
--- STEAMODDED HEADER
--- MOD_NAME: Jimbo Versus the World
--- MOD_ID: jvw
--- PREFIX: jvw
--- MOD_AUTHOR: [Victin]
--- MOD_DESCRIPTION: Texture mod. Art and code by Victin.
--- LOADER_VERSION_GEQ: 1.0.0
--- VERSION: 0.0.0
--- BADGE_COLOR: FF4CA1
local atlas_key = 'deck' -- Format: KEY
local atlas_path = 'scott_pilgrim.png' -- Filename for the image in the asset folder
local suits = {'hearts'} -- Which suits to replace
local ranks = {"King"} -- Which ranks to replace
local description = 'Jimbo Versus the World' -- English-language description, also used as default
SMODS.Atlas{
key = atlas_key,
px = 71,
py = 95,
path = atlas_path,
}
for _, suit in ipairs(suits) do
SMODS.DeckSkin{
key = suit.."_skin",
suit = suit:gsub("^%l", string.upper),
ranks = ranks,
lc_atlas = atlas_key,
loc_txt = {
['en-us'] = description
},
posStyle = 'collab'
}
end
sendDebugMessage("JimboVersusTheWorld :: Loaded Textures")
making the stone card not having no_suit and no_rank when in specific state
you can hook SMODS.has_no_suit and SMODS.has_no_rank
can't see anything that stands out being wrong with this
Anyone able to help?
You need to add a new context after a hand is drawn
then use the existing context for the first hand drawn and the new one
Cerulean Bell isn't a Joker
This is how I do it
[manifest]
version = "1.0.0"
dump_lua = true
priority = 0
# After Draw Context
[[patches]]
[patches.regex]
target = "game.lua"
pattern = 'first_hand_drawn = true}\)\n(.*)end\n(.*)end'
position = "after"
payload = '''
if not (G.GAME.current_round.hands_played == 0 and
G.GAME.current_round.discards_used == 0) then
for i = 1, #G.jokers.cards do
G.jokers.cards[i]:calculate_joker({vic_hand_drawn = true, vic_facing_blind = G.GAME.facing_blind})
end
end
'''
match_indent = true
genuinely no idea what i'm doing wrong
did you see the example I sent
hell yeah I finally managed to find the damned card center!!!
G.CANV_SCALE was the culprit
these are the folders it should all work
yep used it
Where would I put this? The idea is that the joker chooses a random card in the playerâs hand. If they use it in a scoring hand they get a benefit, but only if that specific card scores
The scale of the default canvas where the objects are rendered
You donât have to use it but the joker only activates if you use the random card chosen
the full position thing looks like that now
what do the low contrast cards look like
also just default
lovely folder with tomls
then Idk maybe there was a breaking change? @frosty dock?
Interesting. Maybe it would help here
how the frick the cards do not count as flush five
maybe you can try downgrading Steamodded and see if it works
Cause theyâre stone cards
no breaking change, but only one between headers and json files should be used
what does that mean i am slow in the head
hyperstoneia makes stone cards have rank and suits
guys maybe it's something with my pc! deleting system32 rn
i have to find the source code to see why is the reason not being flush
what folder is that? I donât see a tomls folder, just dump and log
In the lovely folder
Oh.
try installing something like Faces of Sin and see if it works
try replace another mod's texture with your own and see if they work
balordle
can someone tell me why the enhancements are not added?
scrabblatro
depends, what counts as a word?
the editions and seals work fine
hook?
you know Steamodded has poll_edition and poll_enhancement right
for the folks keeping track at home, i just removed "and not (G.GAME.dollars == nil)" and the statement worked accurately excpet for the message
so, interesting. lmao
oh
oh.
ok lemme try that
maybe poll_seal too
@zealous glen Okay so how would I call the context in the main mod Lua?
I mean like you'd do any other context
also change the name
I put vic because it's for my Jokers
seals work fine i dont fix what aint broken
it is broken in some sense, why is it restricted to vanilla modifiers?
by the way how do quantum enhancements work
now it detects as proper flush five
i have gotten desperate to the point of checking if the canvas of the cards is not like 1 pixel too wide so the thing explodes
its not btw, i actually checked
did you try replacing the textures in another mod
Yeah but I canât tell what part of your code contains the name of the context. I changed the parts where it says vic but
Iâm new to modding so like
Just trying to figure this out
calculate_joker passes the contexts
it's all tables
bad syntax I suppose
shaking and crying rn
how can i get this to trigger while the game is being played like a glass card?
it triggers right before everything
and i tried changing/removing if context.before
if context.main_scoring and context.cardarea == G.play and next(context.poker_hands['Flush']) then
bulwark from cryptid only detects stone cards, not counting if the card is truly rankless or suitless
But like looking at this example mod from steamodded, I donât know what Iâd change to call the specific new context
can you identify the part where it tests what context is being passed
that gave a crash first time i tried
im trying again
if context.joker_main
there
So instead of joker_main I change it to what
to the new contexts you added
except the shaders do really funny when it encounters this
now edit it word by word
and see where it breaks
it does not show what suit and rank it is
oh wait I haven't merged the fix I made earlier yet
aure spreading lies on the internet
sorry guys i know this is the worst place to talk about this but could someone tell me how when pulling from the git, how do i overwrite the already present files in the directory
I'm sure someone's gonna ask for the opposite. PLEASE.... for the love of everything, do NOT add a hidden hand type that's "Slur" or something
EEEEEEEE
E
E
i went out of my way to remove them from the dictionary
Thank you
Also victin does this context work when any new hand is drawn in a round?
i am a sensible human being
10/10 mod already
now stone cards with suit debuffs
2.71828âŠ
ok but have you considered EEEE?
Or only if thereâs no discards?
in vanilla it should
so what do i do
Whatâs the vic_facing_blind tho
I mean I get what it means
what happens if you play Fish while the cards spell out Fish?
But why is that there
No I mean I know thereâs contexts where hands are drawn outside of rounds
you instantly win
And we donât wanna trigger it then
?
no you misunderstood
đ
SMODS.poll_enhancement() and it takes a tables
Btw, for context, this is to help your saves if you have cross-mod compatibility. I'll probably be using it myself in Shinku's Card Binder if I make using Ortalab-based stuff
But why did you make a separate thing instead of just using G.GAME.facing_blind

i have to make a table with the enhancement to poll from=
?
no
update smods, should work now
k
da wiki đ
da wiki đ
ok
ye im looking here i don't really understand
i will need to make it recalculate the hand
did you see the fish mod
there's ANOTHER update?
which wasn't working due to a Steamodded bug
Guess I gotta update again
did they fix the bug
its working, thanks
So basically in my mod Iâd do a thing of like. If either the first hand context or the new hand context thatâs made is true, do a thing
In this case choosing a random card from the hand
yes
By making an array of the cards in the hand and choosing one
Thanks man
straight with mix of stone and normal cards
it's a mod's power and stone cards have suit and rank
it was a reference to a meme
Does that say d #G.deck.cards? canât tell if the image got cut off or smth
if you click on it it expands
Iâm on mobile and it doesnât go past that point
So like
this was way harder than it should have been
oh
Yeah maybe get an image thatâs a little bigger/more square
Usually thin line images do that
In my experience
it does but you probably don't need anything past ))
except the then of course
Gonna be real, I don't get what's going on
oh no i get the cryptid part
it's a mod's power that makes stone cards have suit and rank
I don't get the rest of it with the random people on the stone cards and all that
O...kay? So you removed half of what makes a stone card a stone card? What's the rest of the stuff?
IE, the stuff on the playing cards and this
Who's Greg???
quick question - is there a way to have 2 deck skins in one mod
what is the average cost of a epic joker anyways?
when a greg and a rock love each other very much
Yes you get a steven
or a nora
what?
oh, those things are cheater cards that prevents game over and makes infinite discards and disablers that debuffs adjacent cards
you won't know what it means
they seem a little bit too small for balatro but i do not care at this point this took way too long
remaking the textures would make me kms
because it looks identical
to be honest, I don't know WHO any of these are. or what mod this is
tbf, I watched like half of season 1 before dropping SU, lol
i am going insane
they say hacker turned into madness
those suits are used in my trump cards
that's me
cn anyone tell me what did i do wrong
yes
-# i lied i literally just fixed it
They're ALL you?
I did this
my characters
lemme try wait

The fact it's not pixelated is just throwing me off lol
is back on the menu
That's it. I'm going back to the first thanksgiving
I'm going back to the zeroth thanksgiving
it turns out that time is zero-indexed
welcome to python
trying animating the effect, does this work?
It's neat but I don't think the waves feel very black hole-y
it's nice, it sucks ||(literally)||
anyway to have steammodded and lovely as the same time?
steamodded reqires lovely
hmm, maybe confusing two diffrtent things
how do i make an enchancement work like a glass card? i had it working before but now it doesnt work
-# at least if you don't have a super old version that doesn't work with any mods made in the last like 8 months
trying to get ankh to work lol
is jellymod still a thing
right now it breaks while the game is going or breaks when cards are dissapearing after scoring
IM A LITTL EBIT STUPID
anyone here familiar with making code for animated jokers?
this aint working
dunno why
i printed the dt value it seems like its not changing? i based this on jimball
I did an animated joker at some point, one sec
yeah thats where i found the jimball code i based this off
just dunno why the dt value isnt changing
seems like thats the issue
this was my implementation of animated joker, idk if this helps
@mellow sable hey Cryptid person you have an Aura of someone Familiar with this jAnkh
maybe the issue is me placing this in the Joker's update instead of doing the function patching that the jimball code does? though i dont know why that would cause the dt value to not change
"cry"
maybe?
m
aybe
Is dt passed into update function, Im not actually sure
Cryptid reference?!?!!1!1!1
I remember seeing some behaviour in the timers that I didn't understand
But it could be my ignorance rather than a bug
like constantly restarting from 0 when going to the main menu and always printing the same value first
14.something
If youâre copying Jimball code I recommend using the global
update so multiple copies donât mess with it
I was trying to use time to seed a random value but it always had the same result
yeah changed that
No this is normal
it's definitely passed (self, card, dt)
I think itâs to sync up the title screen animation?
yup there we go now its workin
my issue is that I tried different timers and all of them got the same result. Trying to manually modify the number to get another seed also had the same result
anyone know how to handle one joker using a variable initiated by another joker? I want one joker to steal the player's money, and another joker to destroy the first and give that money back to the player
globals probably
see castle example inside steamodded
đ
are you turning the game into scrabble?
why not
wordlatro when
Length 31: 1 words
balordle
balordle is a goated name
scrabbalatro
that's a tazmanian deviled name
@stiff locust by the way I think aure fixed the localization bug
L
but nice to know
alright fine i won't do that out of spite
sorry I didn't mean it like that
no it's too late now my mod will overwrite english
i will become the gunc of the nunc wunc
the what

i still need help w this
dont you have a word list
im boutta lose my mind
what does your code look like?#
rn like nothing
cause i was testing stuff
one sec
when i do it like this it scores after getting destroyed
you need to use the destroying_card context to chec for destruction
do i really need to check if it got detroyed though?
i need it to work like glass cards
yes you do
sorry for the ping but how do i implement this into the code?
return true
end``` that should work
i'll try
for the people who knows
peak
it didnt work
now the card does nothing at all
try return { effect = true }
now it doesnt destroy the card
return { remove = true }
so i wanted to mod this mod to make it select jokers instead of cards but it's my first time and wanted help to do that
how do I account for joker retriggerrs again
i'm getting that state events crash from not accounting for them again
forgot how I solved it last time
are you guys enjoying your stack traces
i sure do wonder what could be causing this issue
i think im the one doing something wrong cause it still doesnt work
im a bit dumb
ss code pls
i should be
i dont really know
it was close to working like this
so i went with it
i was using if context.cardarea == G.play and not context.repetition then
before updating
i see
not nested like you have them
really trying to figure out how to get this new consumable type i'm adding to work well with localization
i dont wanna use the loc_txt table cause if someone wants to localize this mod they shouldnt have to go through anything other than the localization luas
but how do i make the code know where the localization info is for this
cant figure it out by referecing the code for the few mods that add a consumable type with localization
My custom consumable type works
like this?
didnt see that on the card library site lemme take a look
what site
yeah that looks better
G.localization.misc.dictionary['b_' .. string.lower(self.key) .. '_cards']
this is it
ah so it has to end in _cards? that wasnt clear to me
@frosty dock did it change?
I never heard of it so Idk
no, but keku was asking about the label of the collection button
not just jokers yeah
Oh I misunderstood
horror
I also have that somewhere else
relatable
here
you should make it actually segfault 1/100 times imo
that and the other things in here, im still not sure how these are added to the localization files if you dont use loc_txt
can always temp-add a loc_txt and do dump_loc to get them in place
you write the localization file
docs need an update concerning how to do localization
thats not helpful
I mean I don't know what else to say
it's just a lua file with the localization table
name is in misc.dictionary['k_'..key:lower()], collection is what I just said
I just did the collection thing, the label is there
undiscovered is in descriptions.Other['undiscovered_'..key:lower()]
you can see how I did the badges
but I think I had to manually create mine
that might've been updated since
nah just define a new color
that info should really be in the docs, not just the loc_txt format
yeah thats what i was getting at
the badge is created automatically
you just need to put the name in the right place
of the localization file
and me and aure told you
though first I misread as you asking for the card descriptions
Okay, so i wanna make a mod that when you hold right click you select multiple jokers, how do i do that???
hiya, two quick questions â first, how can i pick a random number between 0 and 2, in a way that lets seeding work? second, how can i create a specific kind of Tarot card?
pseudorandom('replaceThisWithYourSubSeedHere', 1, 2)
isn't that integer?
they said between
gosh i'm now just realising that by between 0 and 2, i mean 1 and 2 â C# instinct kicked in ^^ â does this do that? is that what the 1 and 2 are?
so they need to scale outside
oh yeah
also i need ints
oh nevermind
so that works
sorry replace that 1 with a 0
what she said then
i need to add a little message for my joker upgrading, how do I do that? i have this rn but this shows the message on every card
how do i actually remove the broken cards instead of them becoming ghost cards?
do you mean like spawn a specific tarot card in the slots?
mhm, i want my card to spawn either The Devil or The Tower
check if it's your joker by its key
ooh i might change Tower to Chariot actually, but that's besides the question ^^
you can pass the key to the card creator
how would I go about doing that?
This is our cardsauce code for a Joker called Speen, its code that always spawns Wheel of Fortune so long as you have room for it. feel free to reference this
G.GAME.consumeable_buffer = G.GAME.consumeable_buffer + 1
G.E_MANAGER:add_event(Event({
func = (function()
G.E_MANAGER:add_event(Event({
func = function()
local card = create_card('Tarot',G.consumeables, nil, nil, nil, nil, 'c_wheel_of_fortune', 'car')
card:add_to_deck()
G.consumeables:emplace(card)
G.GAME.consumeable_buffer = 0
return true
end}))
card_eval_status_text(context.blueprint_card or card, 'extra', nil, nil, nil, {message = localize('k_speen'), colour = G.C.PURPLE})
return true
end)}))
end```
something like card.config.center.key
cheers!! i can implement the rest :D
the key is probably wrong
but also did you remove the rest of the code?
wait just wondering, what does 'car' mean when spawning the card?
that's a seed
how do i make it so the card gets removed from deck? right now its correct up to that point, it shatters after the hand is played but it becomes a ghost card and stays in deck. Comes back after re logging
or rather a component used to generate one
ohh i see :D
steamodded card destruction utility function when
i'll leave that in then ^^
what to?
whatever unique seed
context.destroying_card:
you can't cleanly destroy cards during scoring, that's all
oh kay, so just like, a random word?
I mean you can want to destroy cards at arbitrary times too
card.ability.extra.prob
like esquivalience?
you can use your joker's key
or?
you can want to do that, but at that point it has references in random places
thunk đ

can somebody help me make my first mod??
steamodded calling the key infix a prefix 
take a look at the example steamodded mods
and the wiki
already did, nothing about mouse, just keyboard
what does that mean
the mod infix?
i want to make a mod with a mouse keybind, not keyboard
yes
I just think of the entirety of class and mod prefix as a prefix
referring to it as an infix is also incorrect
that seems wrong
it seems fine?
?
is this a correct way to hook
ghost cards
usually they look like j_modfix_name
ah
yes
very important, needs to have background red
still need help here
now it's crashing when starting the game
ok it's g.jokers
Still crashes
ok just had to start a new game
(this is a deck) Is this not a valid context? I thought steamodded was updated not too long ago to include contexts like this
what context do i use to make something trigger after the current hand has been played?
okay, so the joker i made mostly works! one small wrinkle though
if i have multiple, they all add the same tarot, and disregard the consumeable limit if i have space when selecting the blind
holy shit it works now
code:
calculate = function(self, card, context)
if context.setting_blind and #G.consumeables.cards + G.GAME.consumeable_buffer < G.consumeables.config.card_limit then
G.E_MANAGER:add_event(Event({
delay = 0.3,
blockable = false,
func = function()
play_sound("timpani")
local chosen_card = 'c_devil'
if pseudorandom('goldenfiddle', 1, 2) then
chosen_card = 'c_chariot'
end
local new_card = create_card("Tarot", G.consumables, nil, nil, nil, nil, chosen_card, 'goldenfiddle')
new_card:add_to_deck()
G.consumeables:emplace(new_card)
new_card:juice_up(0.3, 0.5)
return true;
end
}))
return nil, true
end
end```
peak
what theme is this?
i know im bumping this a lot but i need to know how to remove cards from the deck
and not become ghost cards
okay so i found the first issue, but the second i'm guessing is with the event i'm using
can confirm that the first part does work now
but the second's still not working
oh i meant the vscode theme, assuming that's vscode
second issue is them disregarding the limit?
well, they only ignore the limit if the first one is able to create a card
so i'm assuming all five trigger at the same time
but i don't see why
bump
hihi! whereabouts is the code in the game for the jokers?
(don't answer if i broke the server rules, there)
card.lua
There's also some in game.lua
But most of the calculate is card
welp it works
thanks!!
Wait do you have it hooked up to a dictionary or something
CELSIU?
scrabble but balatro, ScRablatro
scrabbalatro
Man there's so many people making so many cool mods its cray z
? is wild card
yep
local tho
Huge
i love
Hey I'm curious is there a difference between like args.context == "selling_card" and args.context == 'selling_card'
... you mean the quotes?
Yeah I've seen both used and I'm just not sure in which context you use which
there's really no difference
other than that you can use the respective other set of quotes unescaped
I see
And Pr 324 was the one that added a bunch of those contexts as deck contexts
How can I check to see if a Joker slot is holding a specific joker? I'm not sure I'm getting the syntax right but what i've read I'm very close to getting it
and if start_dissolve needs an event I'll handle that separately
these were affected by better calc too
the added args now have the same shape as a context table for calculate functions
I should probably actually check the steamodded files because I haven't yet lmao
(also SMODS.Back.calculate as an alias to trigger_effect to reflect that)
these changes aren't properly documented yet
no, this is a very recent addition
Okay good that makes me feel a little better
But it just works the same way as a joker calculate function?
Like as a passive effect for a deck?
yeah
perfect ty
it doesn't support all the same contexts but should do most of them that are sent to cardareas
The only ones I need are like selling card skipping blind and skipping booster
e.g. no context.joker_main, but context.final_scoring_step (which is not the same as context.context == 'final_scoring_step' being the vanilla version used by plasma deck)
context.individual was unsupported until I added it today
yeah that works
why is my pagefile 49GB
actually does anyone know how to get the sorted hand left to right
is there like a property of the card that i can used to sort it
table.sort(hand, function(a,b) return a.T.x < b.T.x end)
ty
how much RAM do you have?
32 GB
thank you it works properly now
Hey could I create a UI in the mod lua file and then call it in a patch or do I have to define the UI in the patch as well?
I'm trying to make an extra menu for run info
What game are your clubs based on?
Game/property
Iâd assume vocaloid because your king looks like miku
But idk the other girl
Ah
Hey guys
anyone have any idea why this patch isnt running? i have it as lovely.toml in my mod folder and its not running, tried having it in a lovely folder under a differnt name too and it still doesnt do anything
version = "1.0.0"
dump_lua = true
priority = 0
[[patches]]
[patches.pattern]
target = "card.lua"
pattern = "local edition = poll_edition('standard_edition'..G.GAME.round_resets.ante, edition_rate, true)"
position = "after"
payload = '''
sendDebugMessage("Patch is applied", "DebugInversion")
'''
match_indent = true
times = 1```
i dont see any mention of it in the console whatsoever
steammodded files run just fine, the game detects the mod but the lovely patches arent doing anything
does anyone know how to make a card give two different Xmult values depending on context?
I have the first context written in my code, but I don't know how to get the second context to work properly
when do you want it to trigger?
Supposed to give x3 when not in a boss blind
But X0.3333 in a boss blind
Divides by 3
I don't know how to define the second variable
you need a second value in your config
give it whatever name you like and set it as 0.33
is it just config = { extra = { x_mult = 3 , x_mult = 0.3333} }, ?
i did a simple text edit to the us lua and now the game just crashes what did i do wrong
a different name
oh
he talking to me

i'm sorry that i sound dumb, i am new to this
i don't understand what you mean by give it a different name
you can't have two values called x_mult
so just name the value something else and it'll still work as x_mult?
I feel like this isn't what I needed to change
trying to find a specific joker in my deck and destroy it here. this is just enough over my head that i don't understand exactly what i'm doing
I changed it to x_multb in all 3 locations
thunk when config.Xmult and config.extra.x_mult
yeah that'll be fine
or some variation thereof, I can't recall
is it possible to use a custom rarity in SMODS.Joker?
yes
how so
by using SMODS.Rarity to define the rarity and specifying the rarity's (string) key as your joker's rarity
oh so like this?
yeah
swagswag ty
found it lol
ok cool yeah that worked
im trying to do something really simple, making a deck have a chance to set hands to 0 when playing a hand and im stuck on how to make something happen when playing a hand caus i dont understand a lot of the code of other mods without documentation of functions, if anyone knows any list for functions or explantions of basic parts of the code id really appreciate it :3
Question, how difficult would it be to overlay the blind backgrounds with a custom image? I'm unfamiliar with using :draw, but I feel like that's the venue I'm looking to go down with this idea.
How do I remove an enhancement from the pool
you can probably use in_pool for this, though im not sure
you mean in_pool = false?
Copying from the SMODS wiki,
Define custom logic for when a card is allowed to spawn. A card can spawn if in_pool returns true and all other checks are met.
allow_duplicates allows this card to spawn when one already exists, even without Showman.
When called from generate_card_ui, the _append key is passed as args.source.
https://github.com/Steamodded/smods/wiki/SMODS.Enhancement-[wip]
I dont see anything about that here :l
i mean
its work in progress so
thanks
There's the SMODS wiki and example mods, if that's what you're looking for, decks are a little bit undocumented at the moment, though.
Especially because I think better calc is allowing you to use calculate on decks somehow, over trigger effect?
does anyone know what the standard value for shop_rate should be if I wanna make a consumable type appear in shops as commonly as tarot/planet
Here's my two new Jokers (art obviously tbd)
could you link the page please?
oh its in center
so, something like this would work hopefully
in_pool = function(self, args) return false, false end
time to spawn hundreds of packs
I thought it was located in the G.GAME variables area and used in create_card_for_shop in UI_definitions.lua, but G.GAME.spectral_rate defaults to 0, which doesn't seem right. Still, I think, try 4, and see if that's the right rate.
i'll try that but it worries me to put in like that cause i cant really reliably test the rate
balatro seeds being unpredictable and all
just use the same seed
If you get them in the same run, they would cancel out, I assume you plan to make them mutually exclusive?
spectral_rate being 0 is right, remember spectrals can't normally appear in the shop
4 is indeed the correct standard rate for a consumable type
Completely right, I was thinking about spectral boosters.
Makes complete sense now.
Bumping this question.
ok
i figured that
something was wrong with the word list
because "raccoon" is not a valid word
i went to check
and guess what
anyone got a template for a custom deck
one of the words removed raccoon
for jimbo? the one in my repo is pretty normal..
i think "fuck" is a reasonable word
I mean itâs the same problem
The Scunthorpe problem is the unintentional blocking of online content by a spam filter or search engine because their text contains a string (or substring) of letters that appear to have an obscene or otherwise unacceptable meaning. Names, abbreviations, and technical terms are most often cited as being affected by the issue.
The problem arises...
where is it located?
Mostly unrelated but thereâs an English slur thatâs a loan word from two other languages, and in fact is the proper terminology in both of them
Itâs also in the name of a celestial object
So it should show up in the Balatro translations



