#💻・modding-dev

1 messages · Page 354 of 1

zealous glen
#

I'm talking about accessing the correct inputs and files

quartz ravine
#

Yep. Plus the fact the the Love2d shader chain requires us to pipe into dissolve shader is also weird. plus how variables get optimized away? Also wierd.

zealous glen
#

I think that's a Balatro quirk not a Love2d quirk

shut crater
zealous glen
#

Variables getting optimized away I can understand, but it's annoying when it demands we use a variable named after the file

zealous glen
#

You can also check my mod

zealous glen
shut crater
worthy stirrup
#

deadass, its crashing and i got no idea why

#

ill send the shader, my code, and the crash log

zealous glen
worthy stirrup
#

yes

zealous glen
#

do you actually use it or is it just there

worthy stirrup
#

I used it

zealous glen
#

hmmm

worthy stirrup
#

give me a sec and ill send the code

#

oh

#

wait

#

i have the shader key as TheHiss

#

let me see if that fixes it

#

it was the key..

quartz ravine
worthy stirrup
#

those who know (im sorry)

quartz ravine
#

I don't know

zealous glen
#

I don't know

quartz ravine
#

But make sure you use your shader name in your shader.

worthy stirrup
#

its Routine, from the song Its Normal

#

ive fixed it

quartz ravine
#

It's a weird quirk. if you look at negative or holo, you'll see it has an extern at the top that matches the file name. That variable also must be referenced within the shader itself

zealous glen
quartz ravine
#

Also just a general tip, use watch shader <yourShader.fs> from debug plus which will keep the game from crashing most of he time. You can even change the shader and it will reload in real time!!!!

worthy stirrup
#

no way

#

fr?

quartz ravine
#

it is amazing. WilsonTheWolf did a good job

zealous glen
#

IIRC it didn't replicate every shader feature

quartz ravine
#

It's better than a kick in the nose, that's for sure

#

truthfully though one or two of my shaders look weird when i use it's shader watcher. I reported it to them, it's a hard problem to solve. They actually use another love2d shader watch library and the weirdness comes from in there

zealous glen
#

hmmm

quartz ravine
#

Different size of rendered circles! It's weird. In their shader preview, it looks really good, but in game actually runnning in the engine, they result is diferent. I can't think of what's doing it

zealous glen
brisk rose
#

so... ngl shaders are one thing ai can kinda do, and i don't care at all if people use it for that

#

just a random tangent

worthy stirrup
#

only after 50 tries, i am now watching the file (i forgot to include the shader folder)

hasty mist
#

is there a way to completely nullify mult? (including the base operation)

#

like

#

chips are the only way to add to score

zealous glen
#

you could set Mult to 1

#

and keep it at 1

hasty mist
#

how would i force it to stay at 1

quartz ravine
#

Oh yeah I remember what it ended up being! The circles were different size on built in jokers, versus modded jokers. Any modded joker looked different.

Then we discovered that it wasn't with the shader watch after all. Sorry I remembered that wrong

zealous glen
brisk rose
zealous glen
#

Chips and Mult both have functions to manipulate their values before they're added

worthy stirrup
#

ignore this :3c

watch shader Mods/Mist/assets/shaders/hiss.fs

midnight coyote
#

how do i check for an edition

#

just any edition

daring fern
midnight coyote
#

thanks

quartz ravine
zealous glen
zealous glen
shut crater
# zealous glen

I'm pretty sure there's a patch on mod_chips, that's not normally what it looks like is it?

#

I might be misremembering but I thought they both just returned

zealous glen
shut crater
#

sometimes I don't know what I'm talking about

#

apologies

zealous glen
#

I don't remember if any challenge in the final game uses chips_dollar_cap

#

So it's possible that if never evaluates to true

shut crater
#

sounds incredibly difficult

zealous glen
hasty mist
#

i am not smart enough for this

shut crater
#

to play

zealous glen
zealous glen
#

I did decide not to use it as a Showdown mechanic

#

Instead I just modified base chips

hasty mist
#

im not familliar with hooking

zealous glen
zealous glen
shut crater
#
local original_func = mod_mult
mod_mult = function(mult)
  --do stuff, then call the original
  return original_func(mult)
end
zealous glen
hasty mist
#

im sorry this doesnt make any sense to me

#

let me try to make sense of this

spring thistle
#

They hijack the original function and make a replacement

hasty mist
#

i understand that part

spring thistle
#

vortex is cooking up a storm vortex

hasty mist
#

i only have about a month of experience in coding

#

im pretty sure i get whats happening

#

i just dont know how to actually implement it

spring thistle
#

what part did you not understand? the part where they got the functions?

hasty mist
#

well

#

hm

#

how do i explain

#

ugh i dont even know what question to ask

spring thistle
#

one of the worst feelings

hasty mist
#

like

#

alright

hasty mist
#

i dont understand exactly what this is doing

#

i mean i sorta do

brisk rose
#

@rough furnace my first eketch of the thing from yesterda

hasty mist
#

but each component i dont get

brisk rose
#

read down to here for full contexrt

spring thistle
hasty mist
#

the "local" part im assuming goes in my variables, right?

#

does the rest go in the same place

#

stupid question but

#

i am so lost

spring thistle
#

the local is so the other files can't run this random function named 'original_function' (its purpose is solely to remember the previous version)

shut crater
hasty mist
#

alright

shut crater
#

the first line creates a variable for us to hang on to the original function (so we can call it later, otherwise we would be completely erasing the original function)

hasty mist
#

so inside of this hook, i can check for conditions, and do return 1 end then?

spring thistle
#

^

#

yeah

#

you can do whatever you want

hasty mist
#

alright

shut crater
#

then we write a new function, but store it in the original function's variable to replace it

spring thistle
#

ACE!

naive raptor
rough furnace
hasty mist
#

let me try this

spring thistle
naive raptor
#

oh lol

#

i wasn't typing anything

#

well not on discord

hasty mist
#

so does this work or have i completely misunderstood

spring thistle
#

yeah

zealous glen
#

you probably want some nil checks but yeah

brisk rose
hasty mist
#

nil checks?

spring thistle
#

is this to merge duplicate jokers?

naive raptor
#

why doesn't holographic show up in my info queue?
info_queue[#info_queue + 1] = G.P_CENTERS.e_holographic

naive raptor
#

ah

spring thistle
#

anyone here code from roblox luau?

#

normal lua feels familiar yet not

#

so used to typing local

rough furnace
#

Normal Lua has local?

spring thistle
#

lol

#

in roblox luau, global variables tend to be taboo

naive raptor
#

i've never coded in lua before balatro modding

old bane
#

same

spring thistle
#

interesting!

naive raptor
#

that may make it eaisier though because then i don't get messed up from previous experience

spring thistle
#

yeah

rough furnace
marble flint
shut crater
spring thistle
#

i see

old bane
#

i legit don't use globals normally except from the game itself

zealous glen
shut crater
rough furnace
#

Yeah DebugPlus has like 1 global I think

shut crater
spring thistle
#

long before time had a name, the first...

hollow sphinx
#

making a card effect that's basically just baron but for 7s and 2s, but the effect is also activating at the end of a round after you clear the score rerquirement, if anyone knows how to fix it i would like the help

brisk rose
spring thistle
#

ah

edgy reef
#

technically more general but whatev

rough furnace
spring thistle
brisk rose
# spring thistle ah

in my usage it's ones that are literally the same but have just had their keys or prefix changed over the months

marble flint
#

pro tip: if you want something that's technically a global, but with an incredibly hard to spell name, you can put local my_globals = _G[SMODS.current_mod] at the top of each of your files (make sure to initialize it first).

brisk rose
spring thistle
rough furnace
#

No its not

old bane
rough furnace
#

Try getting the console open state from DebugPlus

marble flint
spring thistle
#

or as a hack

hasty mist
spring thistle
#

gl

#

if you combine with other mods, set yours to a high priority so your set definitions gets run last

shut crater
spring thistle
brisk rose
edgy reef
#

Yes

rough furnace
#

Also metatables

edgy reef
#

Example of read-only tables

brisk rose
spring thistle
#

ah

#

sorry for the misunderstanding

shut crater
#

it's all or nothing

shut crater
spring thistle
#

uh oh

shut crater
#

(lua noob)

spring thistle
#

metatables are the most fantastical thing in lua

#

praise teh metatable

zealous glen
#

when metatable binary operators

edgy reef
#

Lua is surprisingly capable of doing stuff, it's just that as a language meant for embedding and small stuff you have to implement what other languages have by default yourself.

spring thistle
#

^

brisk rose
rough furnace
brisk rose
spring thistle
rough furnace
zealous glen
#

problem.halting == 'solved'

spring thistle
#

'You know how to code? Alright. Solve the halting problem in every language."

brisk rose
brisk rose
#

isn't it kinda defintional

red flower
#

lua is the only language where NP = P

rough furnace
brisk rose
#

but fair, pedant

zealous glen
#

Write a Lua program that creates a rock so heavy even Lua itself can't lift it

spring thistle
#

Lua can make me a waffle.

scarlet thorn
#

no it cant

spring thistle
#

Propaganda.

brisk rose
spring thistle
#

^

zealous glen
#

Big Waffle doesn't want you to know

rough furnace
#

LuaJIT is really powerful cause FFI

shut crater
#

that is very neat

rough furnace
#

Idk I don't yse Python

spring thistle
#

lotta metamethods

shut crater
#

that's neat

spring thistle
#

i remember when // wasnt a thing

zealous glen
#

what about Julia

zealous glen
#

for the version Balatro uses

spring thistle
#

i remember that^

zealous glen
#

I don't understand how to use Type Unions correctly

spring thistle
#

what about dylan?

#

dang. twice my age

zealous glen
#

convert(Julia, dylan)

marble flint
# rough furnace Try getting the console open state from DebugPlus
(function()
    local i = 1
    while true do
        local k, v = debug.getupvalue(require 'debugplus.console'.doConsoleRender, i)
        if k == 'consoleOpen' then
            return v, i
        end
        i = i + 1
    end
end)()

prove it with this:

(function(x)
    x(x)
end)(function(self)
        print((function()
            local i = 1
            while true do
                local k, v = debug.getupvalue(require 'debugplus.console'.doConsoleRender, i)
                if k == 'consoleOpen' then
                    return v, i
                end
                i = i + 1
            end
        end)())
        G.E_MANAGER:add_event(Event {
            func = self
        })
    end)
worthy stirrup
#

How could I edit my shader to have the card fit to the shader, if thats even able to be done?

brisk rose
spring thistle
brisk rose
#

which is what they mean i think

rough furnace
brisk rose
#

but idk how

marble flint
#

:P

brisk rose
#

I think it's possible at least

spring thistle
#

maybe use a shader to do the warping instead of warping it manually. that might also work

brisk rose
#

i mean glsl is a lnaguage so it is, i mean without modifying the card draw code

zealous glen
#

If you want to change the shape of the card

#

You can use vertex shaders

spring thistle
#

i think so

brisk rose
#

basically you need to act on more than just the color values, which shaders can def too

#

i think is the point

rough furnace
zealous glen
#

that's another thing

#

Balatro renders multiple layers of the same card

#

you can pass a value to SMODS to ask it not to do that

spring thistle
#

will it flatten?

zealous glen
#

for shaders with transparency

zealous glen
brisk rose
spring thistle
brisk rose
zealous glen
#

Anyways

#

That's why I asked what they want

brisk rose
zealous glen
#

Because there are two answers

brisk rose
#

sorry wrong reply

zealous glen
#

and one is easier than the other

brisk rose
zealous glen
#

idk

brisk rose
cunning barn
#

is there like a plugin somewhere that adds the vanilla balatro variables and such to a code editor? ive decided i want to try and start making a balatro mod and i was wondering if there was smoething like that to make coding SLIGHTLY easier. i can probably just try and figure stuff out from other mods and vanilla code either way, but i remember reading something about some addon that adds definitions

spring thistle
#

yes please i would like that

worthy stirrup
#

oh thanks

zealous glen
brisk rose
willow plinth
cunning barn
#

wait how are people making these. like what program are they using. i am like. NEW new

brisk rose
#

sorry

#

yes it is a good idea

spring thistle
#

i use the dump from lovely

cunning barn
#

visual studio right. i had a hunch

brisk rose
#

full vs is way overkill i think

rough furnace
#

You can tell the lua ls to look at balatris souce and it figures out most stuff

spring thistle
zealous glen
#

lumpy space princess

spring thistle
#

from adventure time?

brisk rose
#

i don't use either but i'm very nre to actually ytying to start modding, lol

hasty mist
#

when i first got into balatro modding i tried coding with notepad, switched to vscode in 5 minutes

hasty mist
marble flint
cunning barn
willow plinth
brisk rose
hasty mist
#

iirc full vs is egregiously bloated

rough furnace
brisk rose
#

but what do i know

brisk rose
willow plinth
zealous glen
zealous glen
hasty mist
rough furnace
brisk rose
#

fair, take your time

zealous glen
rough furnace
#

I'm at work

spring thistle
brisk rose
hasty mist
#

adventure time is goated though best show ever, watched it whole way through a few months ago for the first time

spring thistle
hasty mist
zealous glen
#

AT is one of if not my favorite show

hasty mist
#

yess

#

one of my friends forced me to watch it and i am so glad they did

brisk rose
#

the one CN show from that time I liked was Regular Show

cunning barn
#

alright, setting up VS Code. i am deeply new to this, not super good at code, kinda thinking i'm gonna be in over my head
but i have ideas. WOW do i have ideas. if anyone wants to take a look at the google doc im making compiling my ideas i can send it over to ya- i don't anticipate making even a tenth of them anytime soon but i just want to develop the skill to be able to do it yk
like. i have jokers that have to be recharged with actions. i have jokers that can evolve when other jokers are present. i have a LOT of stuff but i am fully aware I will have to pour myself deep into coding to make like half of em

hasty mist
#

it was a tough watch at first but the show just gets exponentially better every season

zealous glen
cunning barn
hasty mist
zealous glen
brisk rose
hasty mist
#

its definetely like that at first but as the show matures its humor does as well

zealous glen
#

LSP is a self-centered teenager except she accidentally committed murder once
PB is Big Brother
uhhh tell me another AT character I can oversimplify until my description becomes detached from reality

spring thistle
#

lemongrab

thorn flame
hasty mist
#

i love pb i dont get why people hate her

thorn flame
#

speaking of in over your head i need help making a booster pack

chrome widget
#

Misogyny usually. God forbid women do anything

spring thistle
#

god permit

zealous glen
cunning barn
zealous glen
#

I mean, I think that's what people who dislike her would say

hasty mist
hasty mist
spring thistle
#

god permit

surreal coral
#

Yo how often does in_pool run? Like, say I'm trying to prevent a joker from spawning if another one is present.

red flower
#

every time it would be generated randomly

hasty mist
#

ive made some insane shit already

surreal coral
brazen tusk
#

stopped modding for like 2 weeks and i come back and can't get a joker in game ;-;

hasty mist
#

this was my second ever functioning joker

spring thistle
#

gg

zealous glen
# hasty mist god forbid a woman have hobbies /j

But I mean her handling of FP and the Flame Kingdom is dubious, as is her creation of the Candy People and how she controls them; both are explained by her backstory, though YMMV if it's justified

hasty mist
zealous glen
#

I mean people can enjoy the character in fiction and hate her as a person

hasty mist
#

mhm

spring thistle
#

is there a way to see all the contexts? (context.enteringshop, jokermain, endofround, etc...)

#

to broaden my knowledge

zealous glen
#

The wiki can help

cunning barn
#

ugh ive been going through the smods github and trying to go thru the files on the example joker mod to figure out where to start but i keep forgetting that github has that crazy secondary rate limit and i have to wait for like 5 minutes to be able to check it

zealous glen
#

Most are listed there

#

not the Blind contexts though

spring thistle
#

yeah, i noticed though that some weren't when I was trying to make a joker. should I look in the calculate function itself?

hasty mist
#

this isnt exhaustive though i think

thorn flame
spring thistle
#

anything helps honestly

thorn flame
#

I'm genuinely lost as hell with the booster

#

i got the consumables working fine

chrome widget
spring thistle
thorn flame
#

this happens when i "discover" it in the menu

chrome widget
#

If I like the character, I like the character. That's kinda the end of it for me, aside from what large amount of thematic depth I would want to yap about

spring thistle
#

is entering_shop even real?

#

did I confabulate?

zealous glen
#

So unless someone added it to SMODS but not to the wiki

#

you made it up

hasty mist
red flower
# spring thistle is there a way to see all the contexts? (context.enteringshop, jokermain, endofr...

wrote this for the wiki server:

These should be all the other ones not on the wiki aside from starting_shop AFAIK

  • context.ending_booster
{
    booster = booster_obj
}
  • context.modify_scoring_hand
{ 
    other_card =  G.play.cards[i], 
    full_hand = G.play.cards, 
    scoring_hand = scoring_hand
}
return {
    add_to_hand = true,
    remove_from_hand = true
}

Blind calc

  • context.blind_disabled

  • context.blind_defeated

  • context.press_play

  • context.debuff_card

{ 
    ignore_debuff = true 
}
  • context.debuff_hand
{ 
    full_hand = cards, 
    scoring_hand = final_scoring_hand, 
    poker_hands = hand, 
    scoring_name = handname, 
    check = check 
}
  • context.stay_flipped
{ 
    to_area = to_area, 
    from_area = from_area, 
    other_card = card
}
  • context.modify_hand
{ 
    poker_hands = poker_hands, 
    scoring_name = text, 
    scoring_hand = scoring_hand, 
    full_hand = cards 
}
spring thistle
zealous glen
zealous glen
spring thistle
#

that's what i think

#

i know they changed the calculate function

chrome widget
zealous glen
spring thistle
#
  • Victin, 2025
zealous glen
#

and this kind of discussion is caring about PB

spring thistle
#

||i thought PB was pubblegum brincess :(||

chrome widget
#

No but yeah that's what I mean I don't really criticize characters like I would a person. I would talk about the thematic depth, but I can't really be critical of actions that don't materially exist. I'd be more likely to critique the choices of the author

zealous glen
spring thistle
#

phew

chrome widget
#

Peebs :)

#

How did AT become the topic anyway?

zealous glen
#

like, I do imagine there are fans who hate her because she's a woman or whatever, but also criticizing her actions is respecting her character

zealous glen
spring thistle
gentle rain
#

god i need an adventure time joker

zealous glen
zealous glen
gentle rain
gentle rain
zealous glen
#

You can play with it right now

gentle rain
#

maaaaybe ;3

cunning barn
#

ok new question. i'm trying to get the lua LSP that is mentioned on the lsp_definitions branch info page of steamodded. it doesn't really say which it is, and i think it's a specific one because it doesn't say "a lua LSP" it just says "lua LSP"
in general im kinda confused by how this is worded. is there a more in-depth tutorial about this? like another github rep or a yt video or something about how i'd install something like the smods lsp into a visual studio project? visual studio feels a bit intimidating to me ive only really used it for like bare-simple ren'py VN stuff

GitHub

Currently, Steamodded is not written in a way that allows you to comfortably run Lua LSP. A massive majority of functions do not have any indications of what they do besides name along with lacking...

chrome widget
#

Mmm yeah regardless I don't think I could carry on the discussion further. I'm at a point where the idea of criticizing a characters actions is like... complete nonsense to me tbh. Not that I have too much experience with the AT fandom anyway, I've been basically a RWBY fandom girlie for the past decade as my only consistent one

zealous glen
spring thistle
zealous glen
#

For AT I haven't really interacted with any group of fans really

spring thistle
#

i couldn't get a grasp on the narrative and how it unfolded

brazen tusk
#

thoughts on the ability?

chrome widget
#

Hmm... very specific

spring thistle
#

wee synergy

hasty mist
#

also, how easy is it to mess with ui elements? i'd like to completely get rid of the mult box for this specific boss blind, but if its too much of a pain ill just keep it

spring thistle
#

i like wee

naive raptor
spring thistle
#

seems like a hassle

gentle rain
hasty mist
#

ill probably keep it though

thorn flame
#

nvm i got it

brazen tusk
#

if joey likes it, it must be a w
so proud of myself

spring thistle
#

👍

brazen tusk
#

now to actually make the effect lmao

paper zealot
red flower
#

hi breeze how are you doing

#

happy about the smods release?

paper zealot
#

I'm good mate, how are you?

#

It's good to see the ship slowly turning away from rolling releases and towards more stable occasional feature releases, for sure

hasty mist
#

what is the "max" for in the boss parameter for blinds

#

is it just the max ante a boss can appear in

red flower
red flower
zealous glen
#

does it get used

red flower
#

no lol

hasty mist
#

so, min 1 and max 10 would mean it can appear at ante 1 and later, but no further than ante 10?

red flower
#

supposedly but the docs say it doesn't work

hasty mist
#

ah

red flower
#

you would need to use in_pool

cunning barn
hasty mist
#

yeah

#

i was just confused because it seemed a bit vague on the exact effect

zealous glen
#

min works

edgy reef
#

But loads of vanilla bosses still have it set to 10.

red flower
#

did he plan the game to end at 10 lol

lucid owl
#

does undiscoveredsprite include the question mark icon part? as in, the moving question mark used in other undiscovered sprites

zealous glen
red flower
#

oh btw i have a dev question too
Is there any easy example of sprite manipulation similar to vanilla in a mod? I need to fix half joker, wee, etc for the vanilla recreation but I've never done that

red flower
#

also hologram but that's probably applying a shader which i have done

zealous glen
#

SMODS provides variables

#

to set when you create the Joker

lucid owl
#

hologram is a shader and special floating_sprite

zealous glen
#

Take a look at Champion's Belt or Humbleing Bundle or Paranoia from my mod

zealous glen
lucid owl
#

did i really copy the movement of the soul all for nothing lmao

paper zealot
lucid owl
#

how does that custom draw func operate?

zealous glen
#

you tell the game how to draw the soul_sprite

#

specifically, you can think of it as just a callback

#

you can use it to render the soul_sprite

#

but you can do anything there

cunning barn
#

shoot, i just realized i think i put LOVE into the exe of the game that i extracted to get to the source. theres a ton of VS errors about LOVE being an undefined variable

zealous glen
#

I use it to render additional sprites

lucid owl
#

for mine i just referenced how cryptid does their gateway sprites, which just was defining a custom DrawStep and setting a specific floating_sprite on a specific consumable

#

i'll have to see how you can define a draw func in soul_pos

zealous glen
lucid owl
cunning barn
#

version.dll overwrites the exe when lovely is installed right? because if so i might need to do some stuff

zealous glen
#

This is my opinion

lucid owl
#

i'll have to check how you do it but i definitely like how you've done floating sprites

red flower
#

I personally wouldn't use a DrawStep just for one card

#

seems like an efficiency waste

lucid owl
#

yeah true

zealous glen
#

I didn't use DrawStep except for a single card

#

because that one required a DrawStep

#

That's the "side" of "side-and-downgrade"

red flower
#

I do use it for a shader that can draw over any card in my mod

zealous glen
red flower
#

for the xyz monsters

hasty mist
#

me when my voucher.lua is still empty because every time i make a voucher idea it ends up being better as a joker instead

#

how do i make VOUCHER IDEAS

lucid owl
#

joker, but permanent

zealous glen
hasty mist
#

and the one good voucher idea i DID have (rerolling boosters) apparently already exists in another mod

cunning barn
#

i'd make a thread for my homestar mod, but i feel like i dont have enough in my repertoire to get people's hopes up. like its just an ideas doc. i could make a gc or something? and get some interested people in?

lucid owl
#

just make your idea anyways, who cares if another mod has it

red flower
zealous glen
#

@red flower

red flower
#

i think people might be interested especially if it's for something based on another piece of media

hasty mist
#

i should probably make a thread for astronomica too here i suppose

red flower
zealous glen
#

top 10 coolest Jokers

red flower
zealous glen
cunning barn
red flower
#

it's pretty cool i wish i had friends to play it with irl

zealous glen
hasty mist
#

the plan for astronomica is essentially for it to be to cryptid what cryptid is to vanilla

red flower
zealous glen
red flower
zealous glen
hasty mist
#

tee hee

red flower
zealous glen
#

Maybe sometime that's not 4 AM

red flower
#

im just advertising mostly

#

i want people to stop using card = self

zealous glen
#

play gorgeous ping

hasty mist
#

i would help but unfortunately im the target audience for this kind of resource

#

perhaps sometime i migh try something though

red flower
#

dont worry about it
once you get good enough you can try adding the other stuff : )

hasty mist
#

though i dont have great modding habits so

#

yeahh

#

ive actually remade judgement though

#

maybe i could add it

#

it would need to be cleaned up a lot though

#

the code i mean

cunning barn
red flower
#

329 right now

#

im probably doing an average of 150 per update going forward

cunning barn
#

i mean. i just raelized id have to count. but i posted my idea doc in my mod thread so you can see how many in there and also actually see what they do

red flower
#

ok i gave up counting at 100

red flower
worthy stirrup
#

I love this

brazen tusk
#

is there a better way to do nested text colour than having the outside colour each side of the inside colour?

hasty mist
#

finally

#

set up my thread

#

what a headache

brazen tusk
hasty mist
#

i never know what to put in these things

red flower
#

you can get rid of the ending {} but there's no other way to do colors inside each other

brazen tusk
#

aight ty

red flower
#

after writing 300 descriptions i just have vscode snippets set up for stuff

hasty mist
#

what are snippets

red flower
brazen tusk
#

my files are too complicated for me as is 😭
description arent that much of a pain for me yet

red flower
#

i recently separated my localization file into 40 lol

brazen tusk
#

that is something i need to do

#

maybe not 40 though xD

hasty mist
#

i still haven't started localization...

brazen tusk
#

that will be a pain to retroactively add in

rough furnace
cunning barn
#

probably gonna try to get started coding 2morrow tbh
tonight i am feeling. a bit woozy idk why
but hey if yall wanna help im open
im excited to get this stuff on the road

brazen tusk
#

most of the people in here are more than happy to help, we all learn from each other so just ask whenever you have a question

#

(joke will be on me when you say this is your 5th mod)

cunning barn
#

oh no yeah its my first, i havent even touched lua stuff before now lol

brazen tusk
#

ah ok cool lol

#

said that one time and it was someone who made a pretty big mod xD

cunning barn
#

i was moreso thinking like making a GC with people who would want to actively contribute but i will definitely come here if i have a general question, for sure
i have this rlly cool set of cheat commandos jokers in particular im super excited to code- i have like a gunshots edition and everything and one of the jokers can be evolved when in the presence of another, and one of them actually does something with wild cards, and i have another joker that also makes wild cards count as the rank before and after them and i have a ton of legendaries and stuff and. wow i love just sharing these ideas

brazen tusk
#

all sounds very cool

brisk rose
#

combine = func(temp_profile, key1, key2}
    combined = temp-profile.joker_usage[key1]
        doner =  temp-profile.joker_usage[key2]

    orig_order=key1.order


    for e, r in in pairs(doner) do
        if type(e) == "number" then combined[e] = combined[e] + r
     end


    for e,r n pairs doner) do
        if type(e) == "table" then
                           if not combined[e] then  combined[e] = r
            end
            else
            if combined[e] ~= r then
                for k, v in pairs(e) do 
                    if type(r) == "table' then 
                        for t, y in in pairs(r) do
                            if type(t) == "number" then combined.r[t] = combined.r[t] + y
                            end
                        end
                end
            end
    end

    combined.order=orig_order
 G.PROFILES[1] = temp-profile
end
                                
        ```

@rough furnace whenever you're free and up for it, i actually completely overhwaulted the thing, and simplified it to only take 2 keyes, because honestly it doesn't ened to take any more
#

I think this is everything, still not proper lua most likely but a lot closer in that aspect too

brisk rose
#

what's the worset that could happen?

#

the other issue is, idk how to execute an actual scrpit like this in game

#

i'm sure debugplus can do it ofc, i just dk how to go about it

#

with their not being any cursor in the deubplus console that i can figure out how to move, trying it in the eval option seems hopeless

#

nor do i think my clipboard would real there

brazen tusk
#

this looking more like a common?

red flower
#

how do you destroy it

#

dagger or madness or are there other sources?

brazen tusk
#

hex

#

couple things my mod adds

red flower
#

hmm if it's not that many things i would say it's a common yeah

#

maybe if the amount was higher

brazen tusk
#

was thinking of maybe doubling it

#

idk if that would be too much though

#

30 on ante 5 roughly

brisk rose
#

i sometimes play like 10 rounds to in the first 8 antes, so idk how useful it'd be for me

brazen tusk
#

why are you skipping that much ;-;

brisk rose
#

Thowback's my boyye

#

also love style meter

#

and a lot of other skip-related stuff

#

but that's because i love to skip, not the other way around ig

brazen tusk
#

i dont think ive picked up abstract more than a handful of times

brisk rose
#

lot more jokers to add to it

brazen tusk
#

ah ok

#

makes sense in that case

#

i tend to only play with a few small mods at a time

brisk rose
#

i play with a lot of mods at once and sometimes my joker amount gets balls to the wall insane even though i don't do cryptid or anything actually op

#

just having a lot of mods will do that

#

not to mention sandbox deck/sleeve from sdm's stuff, so i often have 7 or even 9 slots in the first place

#

I need to... play the heckin game though, i barely have since i came back

#

like 2 months ago

#

(I've been in the modding scene on and off since april 2024)

#

and rarely play the game when i'm not also in the modding community participating

#

i came back to the community and the participation, less so the playing so far

gilded blaze
#

how do you handle factorial in the code

#

Gamma function for non-integers?

hasty mist
gilded blaze
#

damn

#

maf

hasty mist
#

wait

#

hold on

#

completely got the name of the thing wrong

gilded blaze
#

lmao

hasty mist
#

there we go

hasty mist
thorn flame
#

how can i affect the pixel size without making it skew weirdly?

#

want it to be able to have stickers

brisk rose
thorn flame
#

it kinda is but like it's intensified

scarlet thorn
#

thats a small guy

#

whats specifially skewed?

thorn flame
#

it feels squashed vertically

scarlet thorn
#

whats the pixel height stuff you set it to

scarlet spire
#

I think that's just the perspective on all cards

thorn flame
#

it might just be how pixel size works

scarlet thorn
#

thats why

#

just set the number to 20

scarlet spire
#

you should just be setting the pixel size to how big the sprite is

scarlet thorn
#

or 22

#

ur thing is 20 pixels tall

thorn flame
#

ah yeah

regal ether
#

0.2 * 71 💔

scarlet thorn
#

close enough to 15 tbh

scarlet spire
#

in this case, it's 17 x 22, if you include the single-pixel border of transparency

thorn flame
#

also it was aligned wrong on the sheet by like 1 pixel

#

it's fixed

#

thats how they did it on cryptid cube

sleek cliff
#

Is there a code that checks if a certain joker has triggered, like would it be something like G.Joker

regal ether
#

cryptid is full of weird shit tbf

gilded blaze
thorn flame
gilded blaze
#

nice

hasty mist
#

that was a recent addition

gilded blaze
#

I'd been around since its draft PR

#

demicolon is certainly interesting

hasty mist
#

i absolutely love demicolon

gilded blaze
#

although it requires very heavy reimplementations of vanilla jokers

hasty mist
#

yeah

gilded blaze
#

do I have to include context.forcetrigger in my next mod 💀

#

probably

#

since I intend it to contain endgame contents, powerful enough to urge people to install Talisman

sturdy compass
gilded blaze
#

it could be the third mod to include its own ^mult (besides Buffoonery and Prism)

gilded blaze
#

I implemented ^mult without talisman dependency

hasty mist
#

ohh

#

my mod is heavily dependent on talisman

gilded blaze
#

it's still balanced enough tho

#

I mean, the rarity is called obscure and it's equivalent to Cryptid's epic

brisk rose
brisk rose
#

mods don't need to do that "to_big" nonsense

#

if you play with talkisman on vanillia

hasty mist
#

i actually implemented direct score addition/multiplication/exponentiation in my mod

#

which has either not been done before or only been done by one or two obscure mods probably

native zinc
#

why isn't it doubling properl y.

brisk rose
native zinc
#

well bait is supposed to double shop prices

#

vouchers are 10 dollars and 10*2^5 = 320

#

it's close but it's trying it's best

brazen tusk
#

could anyone direct me to an example of how to change a cards rank? tried searching in here but couldnt find much

native zinc
brazen tusk
#

ty

cyan lagoon
#

or SMODS.modify_rank

brazen tusk
#

they do anything different?

cyan lagoon
#

change base changes the card whole

#

modify reduces or increases rank specifically

brazen tusk
#

ah ok so if i was changing to a specific number then i'd change base but for smth like strength id do modify rank

#

awesome

cyan lagoon
#

yeah

sleek cliff
last sentinel
#

When using "context.individual and context.cardarea == G.hand", how can i prevent the cards from activating at the end of round. i.e. only cards in hand when playing a hand (like shoot the moon)

brisk rose
#

so, in a table of variables, can you add a new entrey just by saying like butts[big] = "no lie"? or do you have to insert it in another way?

hasty mist
brisk rose
last sentinel
brisk rose
last sentinel
#

yeah totally trying rn

last sentinel
hasty mist
#

of course!

cyan lagoon
#

how do i disallow a flush from being played in my challenge?

hasty mist
cyan lagoon
#

yeah. what is it again?

rough furnace
hasty mist
cyan lagoon
#

alright, there it is

#

now how do i work it into a challenge?

brisk rose
rough furnace
#

its the same table

glad osprey
#

tables are more like a map leading you to where the table info is stored

brisk rose
glad osprey
#

rather than being the table themselves

brisk rose
#

is there a simply way to like... copy it as a new table?

glad osprey
#

no

#

:)

rough furnace
#

simply no

brisk rose
#

JustLuaThings I guess

#

lol

brazen tusk
#

context.after would be the best context to use for after playing a hand right?
(if i dont ask stupid questions i will continue to be stupid)

brisk rose
#

well I'll have to live with that limitation

glad osprey
rough furnace
brisk rose
#

but whatever

brazen tusk
glad osprey
#

maybe??? idk it's not very clear

rough furnace
edgy reef
rough furnace
glad osprey
#

if your using it to change the score then you wanna use final_scoring_step otherwise after is the right one I think

brisk rose
rough furnace
#

what is your goal?

#

why does it need to be a copy?

edgy reef
brisk rose
edgy reef
#

:[

brisk rose
#

if i screw up

#

i have a backup of my profile file

brisk rose
# rough furnace what is your goal?

my goal is to take two keys from that section of the profile and fuck them together, to combine jokers for stats purposes which are the same joker but have had their keys or prefixes changed

rough furnace
brisk rose
rough furnace
#

uhh that snippet from earlier for the unlock all has the code you need

hasty mist
#

how would i implement rerolling booster packs

rough furnace
brisk rose
rough furnace
#

no the one I linked

#

to reenable the button

brisk rose
#

oh that one

brisk rose
#

so yeah the bottom 2 commands?

#

save it

wooden swift
#

this is for sure a dumb question but how do i change the color of my custom jokers description to the spades color?

cyan lagoon
#

{C:spades}{}

wooden swift
#

yknow i probably shoudlve assumed that but thank you

cyan lagoon
#

what's the function i can hook to remove jokers and consumables from the shop?

brazen tusk
#

is there smth already for random rank or would i have to make my own table and use pseudorandom

cyan lagoon
#

i think

cunning barn
#

ok i decided im gonna be trying to add like ONE joker tonight. it's gonna be the one that just adds +25 chips.
so im just gonna overview what i think i need.
so im assuming i need a json file that allows the mod to be loaded, then i would need an atlas to call for the images, and then after that i'd need to actually code the thang ding
but those are the required parts right

thorn flame
#

im free tonight i can help you if you need it

hasty mist
#

how do i check if a certain voucher has been redeemed

hollow sphinx
#

trying to make a joker that destroys a random joker and then gives xmult, but im getting an error on line 119 that says "attempt to call a table value"

thorn flame
hasty mist
#

i think

#

i have no idea what im doing

thorn flame
#

probably would be in pool

native zinc
thorn flame
#

im looking

hasty mist
#

im trying to modify the code of a small mod that lets you reroll booster packs so that its apart of a voucher, instead of just being always active

#

idk how to put it in a calculate function so i figured id just make it check if the voucher was redeemed?

hollow sphinx
# native zinc why no ipairs

took some code from someone else's solution, I assume i just remove the g.jokers.cards and replace it with ipairs then?

naive raptor
#

sorry i know this is late, i've been coding other things. choosing the face card works fine, but the suit shows up as table: 0x1b5f1460

hollow sphinx
#

if thats what you wanted i get this instead

hasty mist
brazen tusk
#

would this set the rank of a card matching randold to randnew?

cunning barn
# thorn flame im free tonight i can help you if you need it

alright that'd be great, cheers!
right now i'm making the json. im gonna be copying formatting from the example mods in smods but im gonna make the files themselves individual.
i am just mad excited about making this honestly. id love to introduce the balatro comm to homestar runner if they havent already seen it

native zinc
hasty mist
#

absolutely no idea how "for" even works in lua

hollow sphinx
#

thanks, that worked

brazen tusk
#

.

brazen tusk
#

i still barely understand them but that helped me a lot

hasty mist
#

sorta

#

how would i modify this to work in the context of a voucher

brazen tusk
#

light mode

#

my eyes!!!

hasty mist
#

this is github my bad

#

i have github desktop installed but idk how to use it

faint yacht
hasty mist
#

that's what i was thinking i had to do, but everything i do to this thing makes it crash

#

i dont know how to work with this kind of code i think

faint yacht
#

Does that actually execute on its' own?

hasty mist
#

it does, it's the entire code in this mod

faint yacht
#

What's the key of the voucher?

hasty mist
#

just 'test' for now

brazen tusk
#

so the numbers above 10 obvs break this, is there an easy way to amend the ranks here?

faint yacht
# hasty mist just 'test' for now

Assuming rero is the prefix, due to usage of legacy file header and, if not defined, defaults to first 4 letters of MOD_ID, this is the check.

if G.GAME.used_vouchers['v_rero_test'] == true then
  -- do reroll pack stuff here.
end
gilded blaze
#

I just realized something

#

all retrigger joker calculations for emult (JokerDisplay) in Cryptid is broken

hasty mist
gilded blaze
#
-- From Cryptid's exponential mult Jokers
{ 
    ref_table = "card.joker_display_values",
    ref_value = "e_mult",
    retrigger_type = function (base_number, triggers)
        local num = base_number
        for i=1, triggers-1 do
            num = num ^ base_number
        end
        return num
    end
}

this crap right here would work if it's applied directly to mult in the score, not the display 💀

brazen tusk
#

i

faint yacht
hasty mist
#

this seems to be breaking no matter what i do,

faint yacht
#

Ah, right, should be if G and G.GAME and G.GAME.used_vouchers['v_rero_test'] == true then so that it doesn't trigger crash.

hasty mist
#

ah

#

this is what i was getting earlier, too, what did i do wrong here?

faint yacht
#

...uh, the whole

if G and G.GAME and G.GAME.used_vouchers['v_rero_test'] == true then
  ...
end

should be in the hooking function, just after the original one executes. 💀

sleek cliff
faint yacht
#

not context.end_of_round

hasty mist
sleek cliff
faint yacht
#

Next to the conditions where you define where to trigger the X1.5 Mult.

sleek cliff
#

oki

cyan lagoon
#

am i doing this right?

#

it crashes rn

faint yacht
#

At least mention how, where and when.

daring fern
cyan lagoon
#

i took it from the source code

daring fern
cyan lagoon
#

blind.lua:542 config (nil)

shut crater
#

I'm up to a full page of jokers :)

sleek cliff
#

hell yeah

#

I gotta make mine compatable w/Brain nad Blueprint

brazen tusk
#

hm

#

not quite the intended outcome 💀

#

what im i getting wrong here

normal crest
#

randold and randnew are rank tables

brazen tusk
#

oh i

#

changed how it works i can just

#

give the variables the pseudorandom_elements

#

ty lol

normal crest
brazen tusk
#

this will work fine no?

normal crest
#

no, the result of pseudorandom_element is a table with a lot of info about the rank itself

brazen tusk
#

ah

normal crest
#

you can try printing it in the console to see what it has

#

But you're probably most interested in .id and .key

faint yacht
#

...wouldn't adding .id to the end of the pseudorandom_element() work as well?

normal crest
#

yeah that'd be ideal, you don't want to store the entire rank object in the ability

brazen tusk
#

true true

hollow sphinx
#

trying to make a joker that is basically just baseball card for commons right now, but this ends up happening.

shut crater
#

show your whole joker

#

also I should know this by now but how do I check if a card has a certain enhancement

hollow sphinx
daring fern
daring fern
shut crater
# hollow sphinx

in your localize, you need to pass in card.ability.extra.chips

hollow sphinx
#

ooh right thanks

daring fern
shut crater
#

that seems like probably the intended effect

faint yacht
shut crater
faint yacht
#

In their case, it is, yes.

hollow sphinx
#

ok, all I did was change the chips to xmult and its still having the issue, I'm not too sure how I would make extra not be a table

shut crater
#

it's fine that extra is a table

faint yacht
#

chips = card.ability.extra.chips works on its' own.

shut crater
#

the reason your message is a weird table string is because you're passing it a table (extra) instead of the value you want to show (extra.chips)

faint yacht
#

The messages are usually automatically handled for +Chips, +Mult and XMult.

shut crater
#

oh true

hollow sphinx
#

ok i think i get it now

shut crater
#

yeah probably just remove the message line

brazen tusk
#

any obvious reason this wouldnt be working that im being oblivious to?

hollow sphinx
#

yep fixed it

#

thanks so much

thorn flame
brazen tusk
#

lil stamp

thorn flame
#

my new consumables

brazen tusk
#

very cute

thorn flame
#

my fav is pin currently

faint yacht
daring fern
#

How does one make it so editions happen on trigger instead of at the end of scoring?

hollow sphinx
#

ok, so I am back right away but this one should be a lot quicker, I just want this to target a specific joker instead of the rarities it was before

shut crater
#

joker keys follow the pattern "j_modprefix_key"

daring fern
shut crater
hollow sphinx
#

thanks, that works.

sleek cliff
#

how could I target a specific joker with the context? cause I have 3 Jokers to make (so far) with this idea

daring fern
faint yacht
#

context.post_trigger... which is an optional feature to be enabled.

sleek cliff
#

alrighty

faint yacht
#

Which I just found out... Windows 7 would have had a different function, oh well.

faint yacht
#

...I think context.post_trigger also could work here.

thorn flame
#

how do i add this additional info?

cyan lagoon
#

info_queue

daring fern
thorn flame
#

i see i see i see

brazen tusk
#

im assuming the card here is wrong, what would i need instead?

faint yacht
shut crater
sleek cliff
faint yacht
#

card = isn't necessary.

sleek cliff
#

or keep just in case

brazen tusk
faint yacht
brazen tusk
cyan lagoon
#

i got this working, but now the game crashes outside of the challenge. what's wrong?

shut crater
#

just a guess (since no crash log was provided) but try G.GAME.modifiers and G.GAME.modifiers.no_flush

cyan lagoon
#

here's crash

sleek cliff
#

So, it shows up, but does nothing

faint yacht
daring fern
brazen tusk
#

oh true bc the face cards and aces are giving number still so that would make sense

faint yacht
daring fern
cyan lagoon
faint yacht
#

...that's a snippet.

sleek cliff
daring fern
cyan lagoon
sleek cliff
daring fern
faint yacht
sleek cliff
#

Oh oki

cunning barn
#

would one theoretically be able to expand the atlas sheet if one wants to later on? like, keep the atlas images the same but just expand the borders to add more around the sides

brisk rose
#

function combine(key1, key2)
    local combined = temp_profile.joker_usage[key1]
        local doner =  temp_profile.joker_usage[key2]

    local orig_order = combined.order


    for e, r in pairs(doner) do
        if type(e) == "number" then 
        if not combined[e] then combined[e] = 0 end
         combined[e] = combined[e] + r
         end
end


    for e,r in pairs (doner) do
        if type(e) == "table" then
                           if not combined[e] then combined[e] = r
            end
            if combined[e] ~= r then
                for t, y in pairs(e) do
                        if not combined.e[t] then combined.e[t] = 0 end
                        if type(t) == "number" then combined.e[t] = combined.e[t] + y
                        end
                end
            end
        end
    end
    combined.order = orig_order
return combined
end
                                
        
combine("j_mf_couponcatalogue", "j_mf_coupon_catalogue")

@rough furnace so after a lot more twaking, here's what i have now, it actually evals just fine in debug plus, but i get no change when i check

#

is it because i'm checking the profile directly?

#

or does it just not work yet

sleek cliff
#

like, context global?

daring fern
sleek cliff
#

oh

brisk rose
brazen tusk
#

the contexts are definitely working but nothing happens

#

also did it with just the assert to make sure, same result

brisk rose
#

that seems to be the primary cause if functions that should work fine but aren't doing anything

sleek cliff
brazen tusk
daring fern
#

and also the key needs to be a string also it needs to be like "j_modprefix_doc1"

brisk rose
#

unless you knew what i meant and i misunderstood

#

basically from what i understand if you don't return the right things, the function runs but then output goes nowhere

brazen tusk
#

Ah hm

#

I’ve been assessing what other people have done with change base and I don’t think anything needs returning?

#

Ig I’ll try returning true

#

¯_(ツ)_/¯

hollow sphinx
#

joker is supposed to generate one hash brown joker at the end of round, it instead generates ~10 of them without regard for the max joker size.

daring fern
hollow sphinx
#

thanks

sleek cliff
#

it might be because I have them sorted to or and not and?

daring fern
brisk rose
#

i'm just always on invisible

sleek cliff
shut crater
sleek cliff
hollow sphinx
daring fern
shut crater
#

As it's written, you're treating it like a variable

sleek cliff
#

doc1 is the key of a joker

#

oh

shut crater
#

So use "j_modprefix_doc1" instead

#

Also the way you're doing this seems cumbersome

#

You're checking every single doctor key, aren't you

sleek cliff
#

maybe...

shut crater
#

What if you just gave all doctor jokers a special variable in their config that you check for

#

Then just context.other_card.ability.extra.is_doctor or something like that

brisk rose
sleek cliff
#

true!

sleek cliff
#

like, Variable = is_doctor