#šŸ’»ćƒ»modding-dev

1 messages Ā· Page 347 of 1

sturdy compass
#

If you're looking to remove the skip box entirely here's a hook that'll do that for you. Just make sure you change the modifier to something that you are setting yourself

red flower
#

finished PRing all my (useful for other mods) 'at' patches today to smods

#

people can't complain about my 'lovely hygiene' now

placid star
#

is there a way to remove the seal/edition from a card?

faint yacht
#

I do such with Jarate.

brisk rose
#

Anyone get that reference?

sturdy monolith
brisk rose
surreal coral
#

Gonna have a joker that's ability changes depending on the boss blind, so I kinda need this bit to be a variable or somethin. Game doesn't seem to expect new lines here and cuts it off

brisk rose
# brisk rose Not the tf2 part generally, the specific source of the quote

https://youtu.be/WRYFuje8_bc

Here it is for the cutious. I've never played tf2 in my life and my vast majority of knowledge about it comes from this song, which I love

scarlet thorn
#

"Text1","Text2"

surreal coral
#

I tried that initially but it didn't like it. Seems to just return the first string

scarlet thorn
#

Is this for a blind?

surreal coral
#

For a joker. I'm doing somethin kinda weird

scarlet thorn
#

add another one of #2#

#

and just set both

#

'#1#',
'#2#'

surreal coral
#

Hmm, I'll try that. Wonder if that will limit my lines for each description. Thank ya

scarlet thorn
#

you could then just add a 3rd.

#

or actually

#

nvm

paper trout
#

why isn't this code working?
it checks for the ingredients correctly and spawns the result correctly, but the code for removing the green joker & candy doesn't work

red flower
#

you're just removing them from the area, try SMODS.find_card("j_green_joker")[1]:start_dissolve()

supple fractal
#

yo I request some help

#

I want to make a joker which randomly picks a joker from your negative jokers

#

with

                if
                    G.jokers.cards[i] ~= card
                    and G.jokers.cards[i].edition.negative
                    and not G.jokers.cards[i].ability.eternal
                    and not G.jokers.cards[i].getting_sliced
                then```
being what I've done
#

however it crashes if there are no negatives because G.jokers.cards[i].edition.negative is equal to nil

#

how do I check if the value is equal to nil before indexing it?

faint yacht
#

and G.jokers.cards[i].edition and G.jokers.cards[i].edition.negative

supple fractal
faint yacht
#

And as you mention picking a random negative Joker, could initialize a blank table, then add all the Jokers that are negative into it, then pseudorandom_element on the table to get your random choice, but only if said table has more than 1 item (#table > 0).

hasty mist
#

if i use an atlas that doesn't exist ingame, will it still work (except for when it tries to display it ingame of course)

#

or will it crash on startup

brisk rose
#

So... I wanna finally revive DeFused. The actually Fusion Jokers is already ported to very modern Smods https://github.com/wingedcatgirl/Fusion-Jokers And will be the new base. Removing the Fusion mechnanics and giving the jokers actual rarities that would make them pollable should be trivial

But I also need to port the Jestobiology jokers:
https://github.com/lshtech/Jestobiology

And Vultbines jokers: https://discordapp.com/channels/1116389027176787968/1227317656131211284/1244573783210196995 Over to that codebase

They are based on older, in the case of Vultbines much older, versions of smods. So, I'm just wondering what all that would entail

#

(The embeds were a bit much)

hasty mist
#

ty for removing the embeds lol

gaunt thistle
#

Embeds are always a bit much haha

hasty mist
brisk rose
hasty mist
#

wdym

willow plinth
#

but also idk how you would remove the automatic prefix added

hasty mist
#

i'm making inverted versions of every single boss blind, (the inverted versions would be hidden from the collection, and they can only appear in the place of the boss blind it's replacing), and i want it to use the original sprite (except perhaps with the negative shader applied)

#

how would i do that

brisk rose
#

I mean there are multiple standardized ways of checking for other mods being loaded

#

if statements basically

brisk rose
faint yacht
#

if next(SMODS.find_mod('Bunco')) then as example.

brisk rose
red flower
willow plinth
hasty mist
#

alright, how do i use modded atlases then?

#

from other mods

brisk rose
willow plinth
brisk rose
red flower
#

G.ASSET_ATLAS["modprefix_key"] iirc

brisk rose
#

ah it's a bit more

#

but not much

willow plinth
brisk rose
hasty mist
#

alright

#

now how do i change atlases in an if statement

#

i know how to change pos, but not the atlas

faint yacht
#

To list atlases...

for k, v in pairs(G.ASSET_ATLAS) do
  print(k)
end
brisk rose
#

pseudocode, not lua

midnight coyote
#

how do i add sprites into ui elements

red flower
#

oh if this is for changing atlas when you create the object then im not sure

midnight coyote
#

i’m looking through the game’s source code and i’m not finding anything that’s exactly clear

brisk rose
willow plinth
gusty iron
#
calculate = function(self, card, context)

        function rollanomaly()
        local anomalychance = pseudorandom('wehttam29')
        if anomalychance >= 0.5 then
        center.ability.extra.anomaly = true
        else
        center.ability.extra.anomaly = false
        end
        
        end
        
        if context.before then
        self.loc_txt.text = {"PRESSRIGHTPRESSRIGHTPRESSRIGHTPRESSRIGHTPRESSRIGHTPRESSRIGHT"}
        end
        if context.joker_main then

            return {
                card = card,
                mult_mod = 7,
                message = "+7 Mult",
                colour = G.C.MULT,
                extra = extras
            }
        end
    end

is something wrong with this? (im trying to expirement with changing loc_txt with code

midnight coyote
brisk rose
#

where object params are a variable that is defined in an if statement

midnight coyote
#

thanks for the nudge

red flower
hasty mist
midnight coyote
red flower
midnight coyote
#

or do i have to make one like the base game

red flower
midnight coyote
brisk rose
#

plenty of people's smods.object contructors are only variables

red flower
red flower
brisk rose
#

or is it directly in the constructor?

red flower
#

atlas = next(...

brisk rose
#

ah directly, though I think both approaches work

willow plinth
red flower
hasty mist
#

i think ill just worry about this later in development

brisk rose
#

lol

red flower
brisk rose
gusty iron
# red flower what are you trying to do?

okay so:

every hand, theres a 1 in 2 chance (nonaffectible by oops all 6s) for an anomaly to spawn

if an anomaly spawns, press right to fix it

each right verdict gains +8 mult, wrong verdicts reset mult.

im testing out changing the card's description to just PRESSRIGHT over and over again for an anomaly

brisk rose
#

I think something that wants a string will just as easily take something that evals to a string

#

is what I mean

red flower
willow plinth
red flower
#

or that

willow plinth
#

line breaks is an issue then again, but yeah

hasty mist
#

why doesn't this work?

red flower
hasty mist
#

oh

brisk rose
#

(yes strmnn, I know I should learn to code :P

hasty mist
#

it still doesn't do anything

gusty iron
brisk rose
hasty mist
midnight coyote
#

hey so @red flower with the G.ASSET_ATLAS the modprefix_key would accept an atlas made by smods, correct? i could make an atlas with the key of, say, ā€˜diff_atlas’ and then make an atlas variable with a value of G.ASSET_ATLAS[ā€˜astropulvis_diff_atlas’]

red flower
midnight coyote
#

okay, thanks for the help

hasty mist
#

most of the code there seems unrelated to the serpent

brisk rose
#

vanillia code is a cluttered mess

hasty mist
#

agreed

#

i hate having to look at it and utilize it

red flower
#

i think it's pretty simple there i dont agree

brisk rose
red flower
#

the problem is that i dont think you can do that effect how you want without making it weird or patching

hasty mist
#

this would be so much easier if someone recreated each vanilla blind using smods.blind

gray apex
#

Is there any way to get a localization key from another mod?

brisk rose
#

things for one object with be scattered over 5 files

#

and different parts of 1

midnight coyote
#

how do i make something thats an altered random chance? I want to have the game randomly pick a difficulty for boss blinds, but I have a 'risk' value that is intended to increase the chances of higher difficulty the higher risk is

hasty mist
#

vanilla code in a nutshell

brisk rose
#

and instead of objects calling functions, functions will just refer to the objects in a hardcoded way, it;s... a hell of a lot messier than smods code

red flower
#

I would honestly patch your code into G.FUNCS.draw_from_deck_to_hand

midnight coyote
#

i need to basically manipulate randomness

brisk rose
hasty mist
#

the fact that i need to do that is absolutely astounding

#

thanks localthunk

brisk rose
#

well it wasn't made to be modular and expandable

#

must just not be how thunk's brain works

red flower
#

thats more of an smods problem for not providing an api for that honestly

#

i could PR it..

hasty mist
#

would be very nice

faint yacht
#

fwiw, the draw_card is the actual function doing the moving of cards... and it can take a card as an argument to target which specific card to draw.

brisk rose
drowsy wadi
#

hey all. is there a, like, relatively simple (or at all) guide on how to start modding/make a simple mod? or at the very least a simple mod to work off of/access the source code

red flower
hasty mist
red flower
#

anyway do this

[[patches]]
[patches.pattern]
target = "functions/state_events.lua"
pattern = "if G.GAME.blind.name == 'The Serpent' and"
position = 'before'
match_indent = true
payload = '''
if G.GAME.blind.config.blind.key == "your blind key" and
    not G.GAME.blind.disabled and
    (G.GAME.current_round.hands_played > 0 or
    G.GAME.current_round.discards_used > 0) then
        hand_space = math.min(#G.deck.cards, 8)
end
'''
hasty mist
#

alright

brisk rose
brisk rose
#

especially given the codebase of the game

hasty mist
#

now i need to learn how patches work

paper trout
#

why doesnt this work? (I understand the hardcoding is kinda stupid but i don't know lua like at all so i really just want anything that works lol)
I can't find the returning repetitions thing anywhere in vanilla or steamodded, it's in the cryptid code so it might just be from that (or im blind and it is in vanilla), but i dont play with any other mods often so idk what else i could check

brisk rose
#

I feel like if i were to have (first known how to code, lol) and written balatro, it'd probably be structured a lot more like smods from the start, but that's probably wishful thinking

hasty mist
#

wheres the documentation for patches? i forgot where they actually are

red flower
brisk rose
#

especially given my one actual finished coding project

hasty mist
#

ty

brisk rose
#

from colllege

#

this is what the code is for

red flower
hasty mist
#

i still have to rewrite this monstrosity to be a function instead of hardcoded lmao

#

because i have so many jokers that do score manip like this

gusty iron
glass scaffold
#

have they changed how to check if a card is a certain suit or is it card:is_suit('Hearts')?

gusty iron
#

its still that yeah

glass scaffold
#

thank god, cause I gotta redo a lot of code to make a new ver cause STEAMODDED updated.

hasty mist
#

ok

#

i misread the documentation

#

very badly

midnight coyote
#

this is what im doing rn

red flower
hasty mist
#

ah

red flower
hasty mist
#

this still doesnt work

red flower
#

does the code appear in the lovely/dump

paper trout
gusty iron
#

context.before just does not run

hasty mist
#

looks fine

red flower
#

it has to be bl_modprefix_key

hasty mist
#

oh i see

digital niche
#

wait is this in the patch you uploaded in github recently or isnt out yet?

hasty mist
#

works now

gusty iron
#

how would i bind a variable change to a keypress

brisk rose
#

haven't looked into it though

brisk rose
brisk rose
surreal coral
#

Is it possible to block a joker from showing in the collection at all? Trying to make a joker that has different abilities depending on the boss blind, but it's really beginning to seem like it's gonna be best to make several individual jokers and maybe try to disguise them as one

#

Actually that's kinda still an insane idea on second thought

red flower
red flower
paper trout
#

idk why it isn't working then

drowsy wadi
#

(this is a dumb question im aware) whats the like "name" for money? the rest of the joker works (just a test) and it gives it but it still says +nil dollars

drowsy wadi
#

(thanks for this page for unrelated reasons) but the color is correct it just says +nil (as in dollars = 7 isnt the proper way to format it)

#

am i misunderstanding things on a fundamental level due to being dumb? probably

shut crater
#

are you returning dollars as the third entry in your loc_vars function

drowsy wadi
#

no i was not. it works now, thanks

supple fractal
#

I have a joker which triggers a unique effect depending on the suit of the card which is scoring. However if a wild card is played instead of all of them scoring only the first effect will trigger

#

do I need to specify this in a loop or something?

digital niche
tall wharf
#

yeah

paper trout
shut crater
supple fractal
# shut crater show code


if context.other_card:is_suit("Spades") then
                return {
                    chips = card.ability.extra.chips,
                    card = card,
                }
            end
            if context.other_card:is_suit("Hearts") then
                return {
                    x_mult = card.ability.extra.Xmult,
                    card = card,
                }
            end
            if context.other_card:is_suit("Clubs") then
                return {
                    mult = card.ability.extra.mult,
                    card = card,
                }
            end
            if context.other_card:is_suit("Diamonds") then
                if pseudorandom("lovely_opal") < G.GAME.probabilities.normal / 2 then
                    G.GAME.dollar_buffer = (G.GAME.dollar_buffer or 0) + card.ability.extra.money
                    G.E_MANAGER:add_event(Event({
                        func = function()
                            G.GAME.dollar_buffer = 0
                            return true
                        end,
                    }))
                    return {
                        dollars = card.ability.extra.money,
                        card = card,
                    }
                end
            end
        end
    end,
})

#

just a worse version of all of the suit gem cards

shut crater
supple fractal
#

ohh

shut crater
#

so you need to reorganize your function so it does all the correct calculations and just returns everything once at the end

supple fractal
#

okay

#

thank you very kindly

paper trout
#

the joker is added properly but that's it, it doesn't do anything

shut crater
#

I would put something like

local chips = nil
local mult = nil
local xmult = nil
local dollars = nil

at the top and then just set any of those variables to the desired value for the suit

paper trout
#

correct

shut crater
#

if you print pass do you get the intended value

faint yacht
paper trout
faint yacht
#

Otherwise, this would've been much larger.

shut crater
shut crater
gusty iron
#

i mightve screwed with the game speed a bit

paper trout
#

it seems like the stuff past if other_card.config.center.blueprint_compat then is never running even when the cards are blueprint compatible

shut crater
#

try other_card.ability.blueprint_compat

supple fractal
#

well my adaption of your suggestion works but like tyyyy

supple fractal
#

like -3x or something

shut crater
#

I'll try it

paper trout
faint yacht
#

context.other_joker?

shut crater
supple fractal
#

weird

ashen niche
#

tf is wrong with my joker code ```lua
function round(n)
return math.floor(n + 0.5)
end

SMODS.Joker {

key = 'chaotic_randomizer',

pos = { x = 0, y = 5 }, 

config = { extra = {} }, 

blueprint_compat = false,

atlas = "Jokers",

rarity = 2, 

cost = 6,

loc_vars = function(self, info_queue, card)

    return { vars = {} }
end,

calculate = function(self, card, context)

    if context.end_of_round and not context.repetition and context.game_over == false and not context.blueprint then

        local randomized_something = false 

        for i, other_joker in ipairs(G.jokers.cards) do

            if other_joker ~= card and other_joker.ability and other_joker.ability.extra then

                for k, v in pairs(other_joker.ability.extra) do

                    if type(v) == 'number' then

                        local original_value = v

                        local random_multiplier = 0.5 + math.random() 

                        local new_value = round(original_value * random_multiplier)

                        other_joker.ability.extra[k] = new_value
                        randomized_something = true

                    end
                end

            end
        end

        if randomized_something then

            play_sound('tarot1', 1.1 + math.random()*0.1, 0.5) 

            return {
                message = "Chaos!", 
                colour = G.C.JOKER_RARITY[card.rarity], 
                card = card 
            }

        end
    end

    return nil
end

}```

paper trout
red flower
ashen niche
#

uh

#

its trying to randomize the values of the other jokers you currently have

#

im js not the sharpest tool in the shed

red flower
#

and is it not doing anything? Does it return the message at least?

ashen niche
#

nothing

shut crater
#

what's the goal for your joker

paper trout
# shut crater what's the goal for your joker

retrigger all food jokers
I think I initially had it check for something else and that didnt work so i changed it, but now that i fixed other stuff maybe it'll work if i switch back, one sec

quartz ravine
#

Hi Folks, when checking for unlock, how can I check to see if another joker is unlocked or not?

shut crater
#

can you do some print debugging to figure out which code is being run and which isn't

red flower
# ashen niche .

it works for me, except the JOKER_RARITY bit crashes but without that it works

ashen niche
#

rigged game fr

shut crater
#

house always wins

red flower
#

skill issue

#

anyway, how are you testing it?

paper trout
#

i set it to other_joker and it still isnt working, would that be the right one?

ashen niche
#

oop i have a small brain i see what i did wrong

#

i forgot to edit it so it works with mults which is what i was testing it with smh

shut crater
quartz ravine
paper trout
#

i think like every part of this is broken 😭
if i get rid of the context check it says pass is 0 even when the other joker is popcorn
if i get rid of that check it goes:
breadverse (the joker i made): "Again!" (doesnt actually do anything)
popcorn +20 mult
breadverse: "Again!" (still doesnt do anything)

#

oh wait

#

the first one is probably it retriggering itself because i removed the check for what it should retrigger

shut crater
#

can you post updated code

paper trout
thin swift
#

hey guys hope you are all doing great today. quick question, is there any way in this code to destroy every card but the first?

            if #context.full_hand > 1 and G.GAME.current_round.hands_played == 0 then
                -- something here to destroy every card but the first
                for i = 2, #context.full_hand do
                    destroy_card = #context.full_hand[i]
                    return {remove = true}
                end
            end
        end```
paper trout
#

ignore my cooked debug messages

shut crater
shut crater
thin swift
#

probably yeah, but right now its just destroying every card so i need a way to either select the cards, or just remove everything from the 2nd slot on in the full hand

shut crater
#

actually I've never looked at context.destroying_card, gimme a sec

hallow relic
paper trout
thin swift
shut crater
#

so based on the docs and a quick search through the Source Codeā„¢ļø I would probably do something like this (also disclaimer, I've never used context.destroy_card so this may be totally wrong)

if context.destroy_card and context.cardarea == G.play and not context.destroy_card == context.full_hand[1] and not context.blueprint then
    return {remove = true}
end
thin swift
#

THANK YOU all i needed is to find out how to iterate in the array, and this is perfect

#

not sure if it works because im taking a break but its a good start

shut crater
#

you probably don't need to iterate the array

#

I think that's your whole calculate function

thin swift
#

oh true nvm that was stupid of me to say

shut crater
#

nah you're good

#

I also have no idea how this context works lol

native zinc
#

doing not == is less efficient

#

do context.destroy_card ~= context.full_hand[1]

thin swift
#

will try that too

sage crater
#

is this possible to do?

both the "add joker to your hand" and "+^1 Mult" effect

thin swift
#

thank you

shut crater
shut crater
#

adding a negative joker is definitely doable as well

sage crater
#

yeah, I've definitely done that

shut crater
#

oh wait this guy is moving between your jokers bar and your deck

#

that's wild

wise walrus
#

when does the game recognize when an ante has been skipped? i thought the 'Skipped' text was what this was looking for but i guess not

sage crater
#

what mod lets you use a debug console?

paper trout
#

debugplus

shut crater
paper trout
#

I couldnt find docs anywhere so i just looked at other mods and that's what most of them seem to do

shut crater
#

can you send a link to a mod that does it

native zinc
brisk rose
#

smods documentation is extremely incomplete

#

but it's much better than it used to be

shut crater
#

there's nothing on the calculate page about joker repetitions

#

I looked

native zinc
#

oh joker repetitions

#

i don't think that's exactly most doable without demicolon?

shut crater
#

there's builtin SMODS support

#

it's an optional feature

native zinc
#

interesting

unborn bay
#

context.retrigger_joker

shut crater
#

I've seen other people use it but I've never messed with it

paper trout
shut crater
brisk rose
#

just not unaltered balatro code according to the rules

native zinc
#

all mods are under the license

shut crater
#

open source, baby

brisk rose
paper trout
brisk rose
#

whether gpl3 works like that or not

native zinc
#

i don't really want that legal debate lmaop

brisk rose
#

I want it too but I don't understand the argyments well enough to say for sure

native zinc
#

just assume Yes and move on

brisk rose
native zinc
#

looking at the smods code it looks like its just

if context.retrigger_joker_check and not context.retrigger_joker and context.other_card == ?? then
return {
repetitions = card.ability.extra.retriggers,
}
end

shut crater
#

also I wrote the code that fixes negative chips and mult, what should I do so that it gets into SMODS by default lol

paper trout
#

well canvas uses context.retrigger_joker_check which i dont see in the steamodded docs so it might be custom

ashen niche
hasty mist
#

how do i retrigger all cards of a specific suit?

paper trout
#

ok it works now, still need to make the checks work tho

#

maybe that fixed them too :clueless:
nope

eager pendant
#

Can you tell me what the problem is?

shut crater
sage crater
shut crater
#

I mean it's certainly possible

red flower
#

and return repetitions = number

sage crater
red flower
eager pendant
brisk rose
shut crater
paper trout
#

ok anyone know how to fix the other problems?
summary:
the 2 checks i commented out aren't working, the thing that prints context.other_card seems fine but the thing that prints blueprint_compatible says nil no matter whether it is or not, and the thing that prints pass says 0 no matter whether it's a food card or not

native zinc
#

wrong chat

paper trout
# sage crater ok fantastic. That's all I needed as motivation 🫔

also, i cant help with the actual code since i am very inexperienced at that, but conceptually maybe you could make an enhancement that makes it look like the joker, add a card with that enhancement on blind select, destroy the joker on blind select, and add the joker when you play the card?
i guess that wouldnt keep the joker editions tho

shut crater
#

jokers can just go in your deck

#

all cards are cards in Balatro which is terrifying

hasty mist
shut crater
#

it'll definitely break magnificently if you try to play a joker from your hand unless you write some custom logic

sage crater
paper trout
sage crater
#

oh, it is that one. cool

shut crater
#

but I'm also not sane

sage crater
opal spade
opal spade
sage crater
opal spade
shut crater
#

that's adding something to G.jokers

brisk rose
sage crater
#

even the card2:add_to_deck()?

brisk rose
shut crater
sage crater
shut crater
opal spade
shut crater
#

well all the ones the palyer owns

brisk rose
#

but it could be if it wanted to be, lol

sage crater
brisk rose
#

it can go in the card play area

opal spade
sage crater
shut crater
sage crater
#

no

shut crater
#

it seems to be how vanilla moves cards between cardareas

shut crater
# paper trout bump

I been digging through the Sourceā„¢ļø to try and decipher how context.retrigger_joker_check works

sage crater
hasty mist
shut crater
sage crater
#

currently on a different computer than the one I mod the game on

shut crater
# ashen niche

brother I teach computer science principles, I know better than to open a stranger's zip file

#

nor do I particularly want to

#

but if you sent code snippets I will gladly help debug

brisk rose
paper trout
#

probably

opal spade
paper trout
#

but idk what the right way is lol

brisk rose
brisk rose
#

unless you can see the repo

shut crater
#

I mean yeah

#

I also haven't downloaded many mods

paper trout
brisk rose
#

I use linux so I'm unconcerned about malware, but fair

brisk rose
#

it's just not common enough to be a major target in the consumer space

paper trout
#

changed it back

brisk rose
#

I simply do not have experience actually modding in earnest

#

so i'd be shooting in the dark as much as you

paper trout
#

well i gotta sleep thanks everyone who tried to help

brisk rose
#

well... i can read documentation :P

shut crater
#

there is no documentation on joker retriggers

#

there is only Source

brisk rose
brisk rose
shut crater
#

ah

#

yeah I need to stop looking at this code lol

brisk rose
shut crater
#

I cannot wrap my brain around the call order of retriggers

brisk rose
#

as in was listed as such

shut crater
#

gotcha

brisk rose
shut crater
#

I fixed negative chips/mult though so that was a big w

brisk rose
#

ayyy nice

shut crater
#

they're simply broken in default SMODS

#

so I made a post with the fix in the server

#

idk if that was the right place for it though lol

brisk rose
shut crater
#

that is probably the correct thing to do but that also sounds like a lot of work

brisk rose
#

I mean if you have the code done it's just cloning, pasting your code in, commit/pushing, then opening a PR with a semi cogent description

#

what could go wrong?

#

:P

shut crater
#

fine, you've convinced me

ashen niche
#

tree .
ā”œā”€ā”€ assets
│   └── sample.png
ā”œā”€ā”€ localization
│   └── en-us.lua
ā”œā”€ā”€ main.lua
ā”œā”€ā”€ modules
│   ā”œā”€ā”€ atlas.lua
│   └── joker.lua
└── smods.json
atlas.lua: ```SMODS.Atlas.new("custom_sprites_atlas", Sol.EAtlasMode.A_Directory, "assets/")

return {} main.lua:SMODS.Mod:new("chaotic_randomizer_mod"):init()

SMODS.load_localization("chaotic_randomizer_mod", "localization/en-us.lua")

require(SMODS.get_mod_path("chaotic_randomizer_mod") .. "/modules/atlas")

local chaotic_randomizer_joker = require(SMODS.get_mod_path("chaotic_randomizer_mod") .. "/modules/joker")

SMODS.Joker.register(chaotic_randomizer_joker)

why doesnt this load a texture for my joker 😭
brisk rose
ashen niche
#

it worked on my other mod

#

šŸ¤·ā€ā™‚ļø

brisk rose
ashen niche
#

i guess ill read the api šŸ„€

brisk rose
#

yeah, would reccomend

ashen niche
#

ty btw

#

šŸ˜„

brisk rose
#

the wiki is actually kinda hard to find tbh

willow plinth
hasty mist
#

are there any mods that add a true color inversion shader? (negative isn't true color inversion)

brisk rose
#

If you don't mind trueblack

hasty mist
#

yeahh

hasty mist
brisk rose
hasty mist
#

im not at my computer so ill have to learn tomorrow

#

but i was just wondering how easy it was

lucid owl
#

i think negative used to be true inversion but then it was discovered that some couple jokers look like a very very racist, old practice when true-inverted

hasty mist
#

yeah well my implementation wouldn't ever be used on jokers anyways

#

Only boss blinds

lucid owl
#

dw i wasn't trying to dissuade, just throwing a little tidbit of info out there

sturdy compass
hasty mist
#

I'm creating a joker which inverts the effects of boss blinds, and i need to code a brand new boss blind for every single vanilla and as many modded ones as i can manage for it

#

the general color for each blind is inverted

lucid owl
#

that's sick ngl

hasty mist
#

and when i learn how to utilize the atlases correctly, the blind token will apply the shader to it too

#

Here's an example

#

Currently the token uses a placeholder sprite

#

but ideally, it'll have the same sprite as the plant, but inverted

#

the blinds I've already implemented so far are: the clock, the shard, the manacle, the wall, the serpent, the goad, the head, the club, the window, the plant

hasty mist
#

yep!

#

joker so big it needs its own lua file

sturdy compass
#

Imagine not having individual lua files for every joker anyways Clueless

hasty mist
#

you what

brisk rose
#

Ngl glsl looks like a bitch and I'd almost be tempted to try to use psuedo-shaders using love.graphics methods and get the game/smods to somehow treat them as real shaders when i get around to modding

hasty mist
#

I used to have my entire code in a single lua file but i reluctantly switched to multiple files pretty recently

brisk rose
sturdy compass
hasty mist
#

What is that directory viewing thing though

#

looks extremely useful

#

(I'm quite new to vscode)

sturdy compass
#

The one on the right?

hasty mist
#

the left

#

where you can see all your files

sturdy compass
#

Oh literally the list lol

#

Do you not open your mod folder with vsc?

hasty mist
#

I just open individual files and keep them in tabs

#

i am new to coding

#

only began coding a month ago or so

sturdy compass
#

Forgot stickers got axed

#

Bruh

hasty mist
#

LOL

#

i saw Markiplier

sturdy compass
#

Anyways in your file explorer, right click the folder and ā€œOpen with VS Codeā€

hasty mist
#

that will be very useful

#

thank you

lucid owl
#

i ā¤ļø having separate files for almost every single item

brisk rose
brisk rose
#

Bit I'mma need to suck it up to properly code and mod

hasty mist
#

especially when i started making exotic jokers

lucid owl
hasty mist
#

i might switch to the per item approach tbh

#

my joker code is extremely messy anyways

lucid owl
#

just have like 6 atlases, one for each item type

sturdy compass
#

Maximus/items/<item type>/<item name>.lua my beloved

brisk rose
#

Per item atlases used to be very common

#

Some mods still use them

lucid owl
#

technically card markings use the Decks atlas because i was too lazy to separate them lol

hasty mist
#

one lua file, one atlas per item, i am SO glad I don't do that anymore

sturdy compass
brisk rose
#

I think you can just make a loop to initialize all of them from the filename

lucid owl
#

speaking of card markings #ShamelessPlug new card modifier type called markings coming soon in v1.1.0 #1342484578236895274

hasty mist
sturdy compass
#

Not really tbh

lucid owl
sturdy compass
#

My method is keeping an array of file names in my main.lua and looping through that array in the loading function

brisk rose
#

I'm in both minds about it still tbh

sturdy compass
#

So in reality all I have to maintain when adding something new is a string in the array

lucid owl
#

i'm evil and have just been stacking on function by function into main.lua so it's a mess, i'll make a utilities folder eventually

plain apex
hasty mist
#

i just have a lib.lua file for functions and variables

brisk rose
lucid owl
hasty mist
#

this was probably the hardest thing ive coded thus far (except for my factorial mult joker), this took HOURS of headaches

lucid owl
#

it's really funny to me that balatro's atlas indexes start at 0, and they're coded in a language whose arrays start at 1

brisk rose
#

Ngl though I love /looking/ at huge atlases

sturdy compass
native zinc
#

atlas browsing is so fun

#

i wish i could make that big of an atlas

hasty mist
#

The way balatro handles atlas positions is EXTREMELY good, i absolutely love it

#

the x and y

#

It's extremely intuitive and simple

native zinc
#

i love the 0 indexing

lucid owl
#

it's great yeah

#

if only lua had 0 indexing šŸ’”

sturdy compass
#

Atlases have zero indexing tho! areyoustupid

hasty mist
#

i just wish atlases other than boss blinds natively supported animations

#

i hate having to use the jimball method

sturdy compass
#

Oh no

#

You don’t know

plain apex
#

woe massive atlas of everything be upon you

hasty mist
#

it's so tall

lucid owl
#

hello peter

#

welcome to fortnite

native zinc
#

its so tall

#

ig my atlas implies i'm making 200 jokers

#

which

#

no

plain apex
#

aww come on you could make 200 jokers

hasty mist
#

In an earlier dev build of Astronomica i had an animated spectral card with 100 frames, ALL of which were on the same Y pos

plain apex
#

wow

lucid owl
#

a lot of stuff isn't implemented yet but the lucky rabbit atlas is great

hasty mist
#

pomni

#

peak

lucid owl
sturdy compass
unborn bay
sturdy compass
#

Oh bruh

hasty mist
#

Yeah, exactly

#

LMAO

unborn bay
#

cards dont use AnimatedSprite lmaoaoaoaoao

sturdy compass
#

Ah

unborn bay
#

you have to do the animating part yourself

sturdy compass
#

That would explain it

plain apex
#

yeah for cards you gotta do a bunch of weird stuff

native zinc
sturdy compass
#

I’ve done jimball method before but only once so I wouldn’t know Clueless

lucid owl
plain apex
#

epic

hasty mist
plain apex
#

atleast you aren't doing soul animations

lucid owl
#

delta time 😨😨😨

sturdy compass
#

Anyways here’s this rather large joker spritesheet (still unfinished!!)

hasty mist
sturdy compass
#

Most of which are not yet released

hasty mist
#

I think the most egregious thing I've done so far is call every single context in smods in a single joker

plain apex
#

what did you call every single context for?

lucid owl
#

this guy took unreasonably long to get working but it looks SO good

hasty mist
sturdy compass
#

I miss my stickers :(

lucid owl
#

what happened to the stickers šŸ’”

sturdy compass
plain apex
hasty mist
#

like context.cry_press

#

or context individual

sturdy compass
#

An exclusion list sounds much more manageable wouldn’t you agree? 😭

sturdy compass
hasty mist
#

Keep in mind i only started coding a month ago

lucid owl
hasty mist
#

OH

plain apex
#

behold clickbait thumbnail

hasty mist
#

i also created my own global variables for pi and euler because i didn't know math.pi existed

lucid owl
#

2.172782u171 or whatever

sturdy compass
hasty mist
#

please excuse the horrible screenshot im on mobile

sturdy compass
#

You scare me

lucid owl
hasty mist
#

This was the second joker i ever coded btw

sturdy compass
#

You are incredibly ambitious for a new coder lmao

hasty mist
#

All it is is blueprint that aims leftward s

#

Most of this code is copied from old blueprint in cryptid though

#

But it's heavily modified

hasty mist
#

I like making weird and unique stuff

sturdy compass
#

I’m very glad you took it as a compliment because it was very much intended as one

plain apex
#

3rd thing i coded for my mod is far too long to send even if i zoom all the way out šŸ’€

hasty mist
#

I also added a uhh

#

Direct Score addition mechanic for jokers

#

Only issue is

#

it's all hardcoded

#

and i tried migrating it to it's own function but i didn't know how

sturdy compass
#

My old joker code is soooooooo long 😭

#

Not as long as that tho jfc

hasty mist
#

I also created this monstrosity

daring fern
sturdy compass
#

WHAT

plain apex
sturdy compass
#

Why is that table so LARGE

hasty mist
#

this is all the code for the joker that scales for every possible context, i had to define each context twice because i wanted the upgrade screen to specifically not show up for every card discarded, but still upgrade for each

lavish lake
plain apex
#

he has alot of things he can do

#

like 15 different things that can happen when you meet the 1/13

sturdy compass
#

Someone wanted me to make a Spider Joker that gave +8 mult ā€œfor every spiderā€ (when in reality it was just a 1/10 chance in disguise)

daring fern
#

It's not even finished yet.

sturdy compass
plain apex
#

wild

hasty mist
sturdy compass
#

This is definitely a seals on everything feature

plain apex
#

and each one has thier own sound effect so before coding even starts theres this massive line of sounds as well lol

hasty mist
#

this is all the code (so far) for my joker that inverts the effects of every boss blind

#

this is only a fraction of how large its gonna be too

#

in its finished state itll be roughly 30-50 times longer

#

since i need to code a brand new boss blind for EVERY single boss blind

rapid stag
native zinc
#

you know when you read your old code and go "what the hell are you doing"

native zinc
hasty mist
#

also, for my factorial joker, i did something really stupid

#

i have two different functions for factorials

#

exact computation and a less accurate formula

plain apex
hasty mist
#

i use exact computation for smaller numbers (3 to 720), and the faster, less accurate formula for larger numbers (above e1000)

lavish lake
sage crater
#

any reason this isn't working? ```lua
SMODS.Joker {

key = "firstBrother",
loc_txt = {
    name = "El Primero Hermano",
    text = {"The oldest.", "{C:red}X1{} mult for each Brother Joker you have", "(Currently {C:red}X#1#{})"}
},
atlas = "dexsJokers",
pos = { -- 0,0 placeholder
    x = 0,
    y = 0
},
cost = 1,
discovered = true,
config = {
    extra = {
        Xmult = 2
    }
},
loc_vars = function(self, info_queue, card)
    return {
        vars = {card.ability.extra.Xmult}
    }
end,
calculate = function(self, card, context)
    if context.joker_main then
        return {
            Xmult = card.ability.extra.Xmult
        }
    end
    -- card.ability.extra.Xmult = 1 + #find_joker('secondBrother') + #find_joker('thirdBrother') +
    --                                #find_joker("fourthBrother") + #find_joker("fifthBrother")
end

}

hasty mist
#

the code actually switches from small to large depending on the number

native zinc
lavish lake
#

or am i just stupid

hasty mist
native zinc
#

runtem imagine factorialing 3054

#

it will take forever

#

this is approximation

lavish lake
hasty mist
#

for the exact computation i use the more accurate computation

hasty mist
native zinc
#

makes sense

hasty mist
#

keep in mind this was the second joker i ever coded

native zinc
#

that's actually quite impressive that you defined functions so quickly

brisk rose
#

why do I have to be a computer nerd whon hates math šŸ™

hasty mist
#

The reason i don't use stirling's approximation for every number is because with smaller numbers its inaccurate and trigegrs my ocd

native zinc
hasty mist
#

for example, 3! is 5.6 instead of 6

brisk rose
daring fern
hasty mist
#

but for larger numbers it doesnt matter because its all scientific notation anyways

brisk rose
sturdy compass
native zinc
#

but you should round the number to the nearest int

hasty mist
#

this basically sets your Xmult to the factorial of your current Xmult at the end of the round

#

it's also demicolon compatible!

#

We love demicolon

native zinc
#

i really like math jokers but my mods naming gimmick makes it hard to put any in

#

like this is a bit of a stretch already

#

this joker is secretly xChips

hasty mist
#

I was considering adding diagonalization to my mod but it would be too overpowered, even by most op mod's standards

native zinc
#

diagonalisation lmfao

lucid owl
#

it'd probably be so fun to do math jokers if i ever actually wanted to do math outside of school

hasty mist
#

(those who know, know)

lucid owl
#

shit, that reminds me of my algebra 2 homework i still never did

thin swift
#

does anybody know how to force a hand to be debuffed?

brisk rose
lucid owl
brisk rose
lucid owl
#

my algebra period is 2nd period so maybe i can lock in in biology

hasty mist
#

to explain diagonalization scaling:
f(1) = 1
f(2) = 2
f(3) = 3^^7625597484987

hasty mist
#

f(4) is basically unfathomable

plain apex
#

šŸ…±ļøalatro

lucid owl
#

man i just now got to logarithms wtf is diagonalization

hasty mist
#

basically n{n}n where {n} is the number of arrows

cerulean bane
hasty mist
#

f(1000) is quite easily bigger than omeganum

#

or at least

lucid owl
#

at a certain point the numbers don't even mean anything the game is just impossible to lose

hasty mist
#

what omeganum's "limit" is displayed as ingame

brisk rose
hasty mist
#

That's why I've held off on implementing diagonalization

karmic arch
lucid owl
#

i still don't fully comprehend omeganum but i've also never bothered reading how it works when i was anything but tired out of my mind

native zinc
#

making a joker where it's ↑↑↑...↑↑↑N Mult where N is the amount of chips mod 3

#

the mod 3 is very important

thin swift
#

chat is this joker fair?

        name = 'We Do Some Trolling', 
        text = {
            '{C:red}+69{} Mult, {X:mult,C:white}X10{} Mult',
            '{C:red}1 in 10 chance every blind{}',
            '{C:red}selected that the game ends{}'
        }
    },```
sturdy compass
#

I just realized I have a math joker that’s compliant with Bountiful’s ā€œBā€ name scheme lol

brisk rose
regal ether
#

we should have an emote like nope but it says True... instead

hasty mist
#

i wanna implement like a joker with 10 arrows or something but the values are so infinitesimally tiny that it's still only common worthy

true glen
#

why is the mod here not using the assets from the 1x and 2x folders

lavish lake
hasty mist
brisk rose
#

and the positioning values

native zinc
lucid owl
native zinc
#

i do want a binomial dist. joker

hasty mist
#

I'm also implementing a joker that utilizes the collatz conjecture

native zinc
#

not sure what it'd do

hasty mist
#

for the math nerds here

brisk rose
lavish lake
brisk rose
#

and just be nonsense

sturdy compass
brisk rose
#

wait

native zinc
brisk rose
#

I forgot

brisk rose
#

it's the first thing on the joker page

#

that's optiona;

#

which is what I actually forgot

#

idk how it works if you don't use it? Just have filenames for each joker which match their key?

hasty mist
# hasty mist

for those unaware, the collatz conjecture kinda looks like this

brisk rose
#

but you get jimbo

lavish lake
#

New joker idea:
Robber
Takes 5$ from you every round.
-# Fuck you.

sage crater
native zinc
#

fun fact about the collatz conjecture if you write it in base 3 it becomes computationally easier

sage crater
native zinc
#

unfortunately there aren't very many ternary computers around nowadays

lavish lake
sage crater
daring fern
sage crater
#

ah, thanks

lavish lake
#

repeated 1s

native zinc
hasty mist
#

it's kinda crazy how the only reason ternary computers aren't more widespread is because they're hard to develop for and manufacture parts for

#

on paper, they're more powerful and more power efficient

sage crater
#

crazy is a weird way of typing logical

sturdy compass
#

Real

lavish lake
regal ether
native zinc
#

make a ternary computer solely for collatz conjecture brute forcing

lavish lake
#

hell it doesnt even adjust for the rental tag

regal ether
#

ohhh ok

plain apex
lavish lake
# plain apex fun fact about the collatz conjecture i have absolutely no idea what that even i...

fun fact about the collatz conjecture The Collatz conjecture[a] is one of the most famous unsolved problems in mathematics. The conjecture asks whether repeating two simple arithmetic operations will eventually transform every positive integer into 1. It concerns sequences of integers in which each term is obtained from the previous term as follows: if a term is even, the next term is one half of it. If a term is odd, the next term is 3 times the previous term plus 1. The conjecture is that these sequences always reach 1, no matter which positive integer is chosen to start the sequence. The conjecture has been shown to hold for all positive integers up to 2.95Ɨ1020, but no general proof has been found.

native zinc
#

it would be significantly faster computationally but the downside is it's a ternary computer

sage crater
hasty mist
regal ether
#

ture...

plain apex
hasty mist
#

but yeah, this is generally how the conjecture works in practice

true glen
regal ether
true glen
#

woops

hasty mist
#

happens to the best of us

lavish lake
#

Cmon, if we're talking about integers in the collatz conjecture, why not we try infinity? I mean, it never changes to 1

hasty mist
#

i still lose sleep over missing commas

sturdy compass
true glen
#

sure wish VS flagged that as an error 🪦

native zinc
#

infinity is not an integer

lavish lake
# native zinc infinity is not an integer

uhhh... here's 20$ againšŸ’øšŸ’øšŸ’øšŸ’øšŸ’øšŸ’øšŸ’øšŸ’øšŸ’øšŸ’øšŸ’øšŸ’øšŸ’øšŸ’øšŸ’øšŸ’øšŸ’øšŸ’øšŸ’øšŸ’ø

true glen
#

oh well its not crashing anymore at least

hasty mist
#

would be pretty complicated though

true glen
#

we have went from square -1 to square 0

native zinc
#

wow...i have... 40 dollars... this is the most money i have had in my life as a math professor

thin swift
#

can somebody let me know why this is debuffing every hand?

            for i, v in pairs(context.full_hand) do
                v:set_debuff(true)
            end
            return {
                message = "devastating."
            }
        end```
plain apex
native zinc
shut crater
#

naneinf is not a pizza

native zinc
#

you can win a naneinf blind with mr bones right

hasty mist
lavish lake
hasty mist
#

can't you just always reach the blind requirement in 4 hands or less?

plain apex
hasty mist
#

ohh

#

still seems pretty crazy

native zinc
#

i cannot believe that pizza is consumeable i thought it was inedible this entire time

hasty mist
#

perkeo and a few blueprints with this would be crazy

plain apex
#

true perkeo and blueprints could def make pizza very op

true glen
native zinc
#

yeah that's on me

sturdy compass
#

I yearn for the day someone gets a Perkeo and beats Ophiucus in my mod (Ophiucus puts a negative Soul in your consumable slot when you beat it lol)

hasty mist
plain apex
#

if you reach naninf and had perkeo and pizza you could just play an infinite game

#

because 25% of infinity is still infinity

true glen
#

any reason why the texture for this still isn't doing anything

native zinc
#

naneinf < nan

#

that wouldn't work

sturdy compass
thin swift
true glen
hasty mist
plain apex
#

stuff with other mods lol

hasty mist
#

i don't like how they're not aligned

plain apex
#

bottom right is spells above that is abilities (both by betemma) and above that is horoscopes (from maximus)

hasty mist
#

ah

#

betmma's mods are always crashfests for me

thin swift
hasty mist
#

spells and abilities just straight up don't work

brisk rose
#

scrool down

thin swift
#

oh my bad

#

yeah then idk

true glen
#

well shit

sage crater
#

he's beautiful

brisk rose
hasty mist
sage crater
#

is there a way to change the effect a joker has when you pick it up?
I'm trying to do a "when you pick up this joker for the 1st,2nd,3rd time" thing

sage crater
true glen
hasty mist
#

ah

sage crater
#

I guess since it doesn't scale I can just write ^2 lol

brisk rose
# true glen

and you're sure that you still aren't hiding extensions?

true glen
#

nope

#

oh wait

#

yes

#

yes i am sure

sage crater
#

so I know that pressing alt+f5 is supposed to reset your game, but sometimes it doesn't work. Anyone know why this is?

sage crater
brisk rose
#

it'd look the same if extensions were hidden and it was named smods.png.png

#

I mean testmod

#

unless that's some other ui element, lol

true glen
#

i am not hiding extensions

hasty mist
brisk rose
true glen
#

its alright

sage crater
#

but makes sense

tall wharf
# sage crater reduced the description for clarity

ā€•ę­»ć¬ć‚“ć˜ć‚ƒć­ćˆćžćŠäŗ’ć„ć«ćŖ
Streaming / DL https://lit.link/mikitop
Twitter https://twitter.com/mikito_p_

ā—†
Music & Words - ćæććØP
Illustration - GAS (ex.悍恓悋)

ā—†
Off Vocal - https://www.dropbox.com/sh/ltrd6mp3ul2f47d/AAAOElqai9TVwe1UzXgnClNRa/ROKI_offvocal?dl=0&subfolder_nav_tracking=1

ā—†
ćæććØP
HP - https://w...

ā–¶ Play video
hasty mist
#

yep!

sage crater
#

I didn't realize it was called Roki lol

#

very good song. Fun bop :]

#

what's the badge for negative?

#

can I find it in the docs somewhere in steammodded?

faint yacht
#

"badge"?

sage crater
#

I might be wrong, but I'm pretty sure this thing hanging off the side that gives you more information on a topic related to the description is called a badge

brisk rose
#

the badge is the name for the thing that says uncommon

#

there's badhes for rarities, mods, and people also use them for credits sometimes

faint yacht
#
info_queue[#info_queue + 1] = G.P_CENTERS.e_negative
brisk rose
#

or i guess more likely 'info queue box"

#

aka where the mod badges for the things they describe should go

#

so they actually get to exist

sturdy compass
brisk rose
#

and you can see where every enhancement, edition, seal, sticker, whatever comes from that goes into a card

brisk rose
#

I've asked the smods folks about it

#

eremel says he'll look into it

sage crater
#

Any ideas as to why Playing Loki gives {X:dark_edition, C:white}^2{} Mult. doesn't make the text white properly?

sage crater
#

oh hey, that worked. Thanks!

hasty mist
#

ofc!

lavish lake
# plain apex ?

If you have 4 perkeo triggers every round and you're copying this, its just ez win

plain apex
sage crater
#

maybe make it 25% of the remaining chip amount?

#

that won't stop a 3x blueprint + perkeo setup from trivializing all blinds, but it will stop it from outright winning everytime

plain apex
#

but then it wouldn't ever win would it?

brisk rose
#

tbh balatro, to me, is a game of keeping up with scaling

#

not novel strategy

plain apex
#

i do like the concept of being like 25% of the blind off and knowing you can't score that but luckily you have the pizza to get you that bit

brisk rose
#

blinds should be trivial if you're scoring high enough

true glen
#

humans arent supposed to be doing this

brisk rose
#

though they might have a better shot if their retinas weren't burnt out

plain apex
#

what if it like spoiled over time? and like when the round ends if you don't use it it goes from 25% to less?

#

so like if you were just duping it with perkeo it would get worse?

#

would that work?

hasty mist
#

or maybe you could make it only work once per blind

wintry solar
#

I think if people want to set up an interaction so they can click use four times to negate the game that’s on them

sage crater
plain apex
#

i mean its not guaranteed?

#

its just a thing that would help?

sage crater
plain apex
#

you still had to get the other 75% though through actual good plays not a guarenteed win

sage crater
plain apex
#

like if you have 1 pizza and you dont have dupes or anything you use it thats it just 25% of the blind score one time

brisk rose
wintry solar
#

I think perkeo is much more to blame here, it limits consumable design massively

#

Like the entire game is clearly designed around having 1 of each card available at once, perkeo completely changes that

brisk rose
#

who if they do break the game would do it with their own unique playstyle and stubborness

#

basically the type of people who don't do photochad

true glen
#

whats the width and height a joker sprite needs to be again i still dont understand how to actually get it to show in the game but im pretty sure without it the game will crash on startup

sage crater
# brisk rose I mean.... the player owns the game once they're playing it, so design as you pl...

I don’t disagree, but half of the fun of any game is restriction.
I can tell you from personal experience that all jokers being negative loses the fun factor really fast once you’ve hit ante 8.
Similarly, having jokers that give X100 mult and insanely high numbers just for the sake of it make the battle nonexistent, and thus the gameplay. (Both things I’ve messed around with in mods I’ve made lol)
I don’t disagree that a player should play how they want, but in order for the player to play, they need gameplay to interact with. And that requires challenge

brisk rose
#

I could break the game in a cheap and easy way that feels unfun to me

#

but I just... don't

#

because it'd be unfun

true glen
#

ty

brisk rose
#

you could easily hold well under 1/20th of them in literal terms

sage crater
#

Ah shit, I gotta go to bed. It’s 4am lmao

#

Fun talk. I’ll be back sometime in the future to ask more modding related questions. Goodnight, y’all

brisk rose
#

sleep well :3

plain apex
#

like i think it feels fair if you dont count the possibility of duplicating it endlessly because its only going to help you on that one blind and you still had to score the rest yourself

hasty mist
#

i think it'd be great if it only worked once per round

brisk rose
#

it's like... someone could just debugplus through everything, like some of thse strats people worry about are that assininely irrelevent to balance

native zinc
#

personally i think both perkeo and observatory suck design wise

brisk rose
#

i wasn't folowing the actual topic

#

but basically if someone wants to make a toy out of the game instead of playing the intended story mode, they will

#

and more power to them

hasty mist
#

perkeo is my fav vanilla joker, it just gets kinda op outside of vanilla

#

like perkeo + pointer is just a budget creative mode should you choose to utilize it that way

brisk rose
#

I think OP is when you're easily scoring more than 10,000,000 in ante 8, anything under than that tbh can be just like... what if all the jokers were actually good tho?

#

not op for their rarity

#

just good for it

#

which amounts in a higher power level

native zinc
#

i think perkeo is really weird because if you ever have a cryptid or something you just win the game

brisk rose
#

but ya gotta think nonlinearly

#

because blinds don't scale linearly anyway

hasty mist
#

personally, at least in my mod, i like to make super op stuff, but they have to be creative and hard to get (basically, can't get it without any challenge, and not something boring like x294828482 mult or whatever)

native zinc
#

i like making jokers that buff weaker vanilla jokers