#💻・modding-dev

1 messages · Page 244 of 1

scarlet spire
#

it's an explicitly set value (they work by directly setting it rather than actually multiplying the value) so i imagine it was done on purpose

noble schooner
#

anyone? ;v;

marble flint
#

increasing the 4 to 8 also increases the denominator of the odds by the same amount (something like 4/100 to 8/108). that's not double the odds, so the game compensates

cursive root
#

if you have two items in a pool, one with a weight of 4, one with a weight of 6, obviously the first one has a 4/(4+6) chance of being selected (so 0.4)
if you doubled the weight to 8, it becomes 8/(8+6), so 8/14 (0.57)

marble flint
#

(I don't know the actual denominator offhand btw)

cursive root
#

so doublign the weight doesnt double the chance of seeing that card

#

or edition

#

or whatnot

scarlet spire
#

I see

#

though, the 4X one does set it to the exact proper value of 32

cursive root
#

ig thunk just didnt find it worth it to figure out how to make it exact

#

i figure theres some mathematical complexities that are beyond me

scarlet spire
#

it also sets its own config as 9.6/4 and then sets the rate to the config value * 4

#

which is funny

rapid stag
#

this is still the case, btw - if anyone has any further insight
my primary suspect is a steamodded update, i'm on the latest(?) release, 0312b
i ended up just using a localisation file

cursive root
#

its probably basic algebra but i cant be bothered

lucid owl
#

is this hook being done incorrectly? in essence i'd like to add permanent mult to a card if it's enhanced after already being enhanced previously. for example, a bonus card being enhanced again would give it permanent +4 mult, but for some reason i'm not even reaching my print statement. have i formatted this wrong?

red flower
#

should be self instead of Card

#

(inside the function)

final wagon
#

4th times the charm, is there a way to get an array of all jokers, including modded ones?

red flower
lucid owl
noble schooner
#

;v;

red flower
red flower
noble schooner
#

oh yeah, wasn't it also misspelled as Caino in the frontend during the demo as well? xD

tall wharf
#

Caino

red flower
#

Caño

final wagon
red flower
red flower
lucid owl
tall wharf
red flower
#

oh I've never done it that way
so either
function Card:set_ability(...)
or
Card.set_ability = function(self, ...)

noble schooner
#

anyone know why poll_edition just refuses to work here?
card:set_edition(poll_edition("Sage", 1, true, true, {"e_foil", "e_holo", "e_polychrome", "e_cry_astral", "e_cry_mosaic", "e_cry_gold"}), true)

tall wharf
#

isn't it SMODS.poll_edition or something

noble schooner
#

oh, it's just not giving the joker

#

any editions

#

the function isn't

#

does set_ability not let you give a card an edition?

red flower
lucid owl
#

now i just need to figure out how to make the function actually work, pretty sure i messed something up in if self.ability and self.ability.set == "Enhanced" and center.effect == "Enhance" then

noble schooner
#

oh wait I forgor that needs to be a string again

tall wharf
#

omg joyous

noble schooner
#

it still isn't workinggggg

red flower
#

it's midnight so im going to sleep, have to go to the office tomorrow🙄

noble schooner
#

does set_ability just not work with set_edition

#

sigh

tall wharf
#

gn n

noble schooner
#

gnnn

red flower
#

set_ability is for enhancements

#

just realized that

tall wharf
#

you could also just have it pick from a set list and apply it i guess but that doesn't do the chance

#

i don't know how poll edition works

noble schooner
#

so it wouldn't work either way-?

minor furnace
#

guys

red flower
#

set_edition should be correct but idk why it doesn't work

minor furnace
#

is it worth my time hunting down mod compatibility problems

red flower
#

no

minor furnace
#

thank you for giving me the answer I wanted to hear

red flower
#

unless it's with joyousspring

minor furnace
#

so true

scarlet spire
#

how complex is it to add custom colors for text?

red flower
#

easy

scarlet spire
#

should I just patch it in with the others, or is there an easier way

red flower
#

there

scarlet spire
#

ah I see, thanks

noble schooner
#

alrighty, it's just an incompatibility with set_ability

#

if I set it to do it when it calculates, it suddenly works

upbeat bronze
#

well

red flower
#

set_ability is probably too early

noble schooner
#

should I set it to after?

upbeat bronze
#

if anyone wants to be a coder for a small undertale/deltarune balatro mod and needs an ideas guy and an artist

#

let me know i guess

red flower
noble schooner
#

ah

lucid owl
#

why is ability marked as nil?

thorn ridge
#

are these all I need for the booster

noble schooner
#

it works if I do it on add_to_deck

red flower
lucid owl
red flower
lucid owl
red flower
#

oh

lucid owl
#

i assume it's something with how i referenced the joker's variable? was that done incorrectly? (G.P_CENTERS["j_hnds_perfectionist"].ability.extra.mult)

red flower
#

yeah it's config not ability

#

centers don't have ability

lucid owl
#

ah, thank you!

#

it works! thanks for the help!

noble schooner
thorn ridge
#

Trying to setup a booster and having trouble still

tall wharf
#

card.config moment?

charred halo
#

how do i make my card show "x1.5 Mult" when scoring instead of just "x1.5"

thorn ridge
tall wharf
#

don't mind me

thorn ridge
#

guh why is making booster packs so hard

tall wharf
#
SMODS.Booster{
    key = "letter_pack_2",
    set = "Booster",
    loc_txt = { 
        name = "Letter Pack",
        group_name = "Alphabet Card",
        text={
            "Choose {C:attention}#1#{} of up to",
            "{C:attention}#2#{C:attention} Alphabets{} cards to",
            "keep for later use",
        },
    },
    config = { extra = 3, choose = 1 },
    loc_vars = function(self, info_queue, card)
        return {
            vars = {
                card.ability.choose,
                card.ability.extra,
            },
        }
    end,
    atlas = 'aikoyoriBoosterPack', pos = { x = 1, y = 0 },
    group_key = "k_alphabets",
    cost = 4,
    select_card = 'consumeables',
    weight = 1,
    kind = "letter_pack",
    create_card = function (self, card, i) 
        return create_card("Alphabet", G.pack_cards, nil, nil, true, true, nil, "_letter")
    end,
    in_pool = function(self, args)
        return G.GAME.letters_enabled
    end,
}
#

this is my stupid code

#

lol

thorn ridge
#

So i think the problem is in my Set

#

What do I put

#

inplace of "alphabet"

#

or like

#

How am I supposed to make it only have my modded jokers

tall wharf
#

you will probably need a list of your Jokers

thorn ridge
#

wdym

tall wharf
#

you'll need to have a list of your mod's joker somewhere

thorn ridge
#

prefix?

#

what does your list look like

tall wharf
#

i don't have a list yet

#

i can't give you much details I'm not on PC

shy wagon
#

anyone know where I would start, to make an edition that makes a card scale when scored? the wiki just has examples for static chips and mult, and says "if you want anything else DIY"

tall wharf
#

shaders are a bit difficult

shy wagon
#

well, for the shader I'm just copying part of the shader that makes the background swirl

tall wharf
#

also you'll need to use calculate just like usual but change card. ability to card.edition

thorn ridge
#

im about to scratch my eyes out

#

Ive been trying to do this booster shit for hours

#

i might just give up

tall wharf
#

take a break

#

vro 💔

minor furnace
#

man I'm about to make a new booster pack type soon

thorn ridge
#

There is next to no documentation thats actually helpful, ive tried scrolling back months of old messages

#

Im tried kitbashing others code

tall wharf
#

take a break

minor furnace
#

genuinely, come back to it later with a fresh mind

tall wharf
#

you'll have a much better state of mind after a break

#

don't push yourself too hard

charred halo
#

how do i make my joker show "x1.5 Mult" when scoring instead of just "x1.5"

charred halo
#
calculate = function(self, card, context)
        if context.joker_main then
            return {
                card = card,
                Xmult_mod = card.ability.extra.Xmult,
                message = 'X' .. card.ability.extra.Xmult,
                colour = G.C.MULT
tall wharf
charred halo
#

"1.0.0~ALPHA-1326a-STEAMODDED"

lucid owl
#

what exactly do jokers do in terms of movement when returning a message? juice_up() doesn't get the exact way they do it in vanilla, and i can't return a value like normal in this scenario

tall wharf
#

why are you still using that version

charred halo
#

no clue tbh, update just fixes my issue though?

tall wharf
#

updating it makes it easier

#

you'll only need to return {Xmult = 1.5 }

charred halo
#

beautiful thanks

shy wagon
tall wharf
#

card. lua

charred halo
#

balatro archive in the card.lua

shy wagon
#

so is it this thing?

#

I can't figure out what to put around it since it's sharing space with a bunch of other things

#

like... this is like trying to follow a reddit thread

charred halo
#

look for the calculate function

mystic river
#

that's specifically the part where it upgrades when you play 4 cards

#

the part where it actually scores those chips is elsewhere. because thunk

shy wagon
#

should I look in card.lua for that or where?

mystic river
#

that's also in card.lua it's just in a different part of it

#

like both of these things are "the calculate function"

charred halo
#

oh mb

shy wagon
#

this bit?

mystic river
#

that's the part where it scores, yes

shy wagon
#

so if I put this on a playing card...

#

guess I'll look at hiker

charred halo
#

what is your joker trying to do

#

out of curiosity

shy wagon
atomic lintel
#

I know some basic LUA from WoW addons, where can I learn more about Balatro modding? I have a few ideas I wanna test out.

charred halo
#

hm, hiker is definitely your best bet

charred halo
atomic lintel
#

Thank you, I’ll check em out.

minor furnace
thorn ridge
#

Still pain

shy wagon
#

is it okay to have a comma after the last item in a list, before the close bracket?

shell timber
#

yes

shy wagon
#

thanks

#

what does get_edition_cards accept?

#

example mods just shows "G.jokers, true"

#

can I change "jokers" to "playing cards" somehow?

thorn ridge
# thorn ridge

Im going to sleep now, BUT PLEASE SOMEONE HELP ME UNDERSTAND YHOW TO MAKE A BOOSTER PACK WITH MY JOKERS!!!!

#

pls 😭

agile thistle
#

just spitballing

shy wagon
#

somehow I suspect local eligible_jokers = SMODS.Edition:get_edition_cards(G.hand, G.play, true) won't work

#

since whatever "true" is probably needs to be true or false

#

also I have no idea what the area for being inside the deck is called

agile thistle
#

would you believe me if i said

#

G.deck

shy wagon
#

I mean... can I do it like this?

agile thistle
#

nope

#

it only takes areas one at a time it seems

shy wagon
#

cool where do I put the or

agile thistle
#

your best bet is to handle each one and then either merge them into one table or again do them one by one

shy wagon
#

well what if I make it an or

agile thistle
#

mmm nope

#

you know if you're willing to not use that function you could do something with G.playing_cards

#

that's just a normal list, though

shy wagon
#

cooooool... :\

#

I don't know what other function there is though

agile thistle
#

looks like i'm not being of much help here, sorry

shy wagon
#

no you're helping

#

I'm just lost

agile thistle
#
for k, v in pairs(G.playing_cards) do
    if v.edition then 
      --your code! v is the card object
    end
end
#

something like that, probably

shy wagon
#

what is k?

#

key?

#

I should mention that the only other game I've ever modded is Darkest Dungeon

#

and I guess a little bit of Terraria

agile thistle
#

shouldn't be much need to use it though

shy wagon
#

then, what's my key here?

#

the mod's name? the edition's name?

agile thistle
#

no you're misunderstanding

shy wagon
agile thistle
#

the for loop defines k and v

#

k is the key, or index

#

so in this case itd go sequentially 1, 2, 3, 4...

#

v is the value inside the table

#

in the case of this, a card object

agile thistle
shy wagon
#

okay

#

what does "pairs" mean here?

agile thistle
#

it's how k and v are defined

#

hold on let me comment a little

#
for k, v in pairs(G.playing_cards) do --Iterating over every playing card, k is the key, v is the object
    if v.edition then  --Does the playing card we are currently on have an edition? If so...
      --Run this! Eg. v.edition.negative = true
    end
end
glacial bloom
#

The badge color is still the default grey when I check it. Is there something I'm missing? Sorry if it's obvious, im brand new to coding

gusty iron
#

I had to.

agile thistle
shy wagon
#

uh okay

#

just one question though

#

is if v.edition then not supposed to be if v.edition true then?

manic rune
#

no

#

v.edition alone should suffice

shy wagon
#

then how do I make it false?

manic rune
#

if not v.edition then

shy wagon
#

so that'll restrict it to cards that don't have an edition?

manic rune
#

if v.edition is nil, or false, then not v.edition will return as true

#

mhm

#

but if (smt) == true then is more specific than if (smt) then, since it specifies that (smt) has to be true (the boolean value)

#

if (smt) then will always return true if its a value that's not nil or false

shy wagon
#

ah okay

agile thistle
#

it's the difference between true and truthy

shy wagon
#

so it's like

#

"if apple": the apple might be rotten or half-eaten or there might be more than one apple
"if apple = true": it has to be the platonic ideal of a single apple

hard flume
#

Is there an Add to shop function at all?

manic rune
#

do u understand tables yet :3

manic rune
agile thistle
#

more like

if box - Does the box contain ANYTHING? (or, not false or nil)?
if box == true - Does the box contain the value true?

shy wagon
#

okay

manic rune
# manic rune do u understand tables yet :3

ah, so tables are constructed like this:

local newtable = {1,5,9}
print(newtable[1]) --it would print 1 in this case
print(newtable[2]) --it would print 5 in this case, think of the "2" as choosing the second value of the table

--[[
as for "key" and "value", you can think of "key" as the 1,2 in newtable[1], newtable[2] i declared up there, while "value" is what the key in the table has

but you can also set custom keys to your table, like:
]]
local newTable = {
  ["hi"] = 5
}
print(newTable["hi"]) --this will print 5, as it finds the value with the key "hi" in newTable

--for loops are often used to run through a table, like:
local table = {
  ["hello"] = "waza"
  ["wassup"] = {"hello"} --tables can also have other tables in it
}
for k,v in pairs(table) do 
  print(k) --this will print the key, so either "hello" or "wassup", the order is random
  print(v) --this will print "waza" or the table {"hello"}, the order is the same as the above
end
#

bad practice, but you shouldnt name a table "table" lol :3

shy wagon
#

ohh

manic rune
#

there are also other functions related to table, like table.insert(x,y), but you should do some research on that yourself

shy wagon
#

it's like matrices

manic rune
#

kind of, yeah

shy wagon
#

I... failed that chapter in high school

shell timber
#

tables are just a bunch of key value pairs

manic rune
#

its all good, tables are simple to understand :3

#

tables are full of values assigned to a specific key

manic rune
#

so when you call the key in the table, it will get you that value

shy wagon
#

I'm good at spreadsheets though

shell timber
#

sometimes the keys are increasing integers so you can treat it like an array

manic rune
#

mhm, in that case you can use

for i,v in ipairs() do

end

instead, which will go from the lowest to the highest key in that table (poor wording choice)

#

an example would be to use this in G.hand.cards, going from the leftmost card to the rightmost card

#
for _,card in ipairs(G.hand.cards) do
  print(card)
end

and you will see that this loop goes through all the cards in the order from left to right

#

the "i" and "v" part in for loops can be changed to whatever you want (the naming)

tall wharf
#

@manic rune

manic rune
#

helo

agile thistle
tall wharf
#

how often do modders use git

agile thistle
#

i dont use source control for solo projects which may be my downfall

manic rune
shy wagon
#

personally I just put old versions of things into zipped folders 😓

agile thistle
#

if it's a collabrative project i do use git though

manic rune
#

:3

#

in fact, never touched it in my life

#

except to download mods

manic rune
#

i keep it in a file in my mod lol

agile thistle
#

i dont blame you

tall wharf
#

i learned the importance of backing up my code when i lost my website

agile thistle
#

but i also know there is no point

#

as i will never commit

tall wharf
#

to a vps wipe

manic rune
#

i actually accidentally deleted a function with 300 lines before

agile thistle
#

because i forget to

manic rune
#

but luckily i posted my mod to gg drive
-# because of a certain accident

#

so i just ctrl + c, ctrl + v it :3

tall wharf
#

Google drive version control 😭😭😭😭😭

manic rune
#

if it works, it works

shy wagon
#

what's poll_edition and what four things is it looking for? I can't find it on the wiki

agile thistle
#

the only reason i commit on collabs is so the other person can see my work

#

i will not commit otherwise

#

im fuckin weird like that

manic rune
#

my mod is so convoluted i probably, accidentally made a whole lib just for it rn

agile thistle
#

am i still weird for just modding it as a love2D project and releasing the diffs

tall wharf
#

does PC version support controller

agile thistle
#

Yes

tall wharf
#

I'll test my mod with a controller then

agile thistle
#

i know this because an earlier version of Leg Day had a 52 card big hand

#

but yeah it even pretty easily hotswaps

#

it's all good and crossplatform like that

tall wharf
#

are you skipping leg day

agile thistle
#

you CAN'T skip leg day it's in the rules

#

i thought it was a funny joke

#

Debuffed

#

Leg Day

manic rune
#

jesus fuck

#

i forgot to delete the print 💔

tall wharf
#

bullshitlatro

agile thistle
#

i was talking about the standard love2D one

#

woops

manic rune
#

oh

#

:3 i havent touched anything related to love2D, other than balatro

tall wharf
#

am i cooking

#

Disabling this boss crashes the game

manic rune
#

whats the food

agile thistle
shy wagon
#

what did chicot ever do to you

tall wharf
#

i mean i already have this

neat plover
agile thistle
tall wharf
#

and i like tea

#

(no still not British)

shy wagon
agile thistle
tall wharf
#

I'M NOT BRITISH

agile thistle
#

Well then the question is what is "You"

tall wharf
neat plover
agile thistle
#

anyways wanna know what pisses me off about LOVE

neat plover
#

yeah?

agile thistle
#

the wiki displays functions that don't even exist in stable

#

you'd think it'd at least have a BETA flair

neat plover
#

i love inexistant functions, yipee!!!

agile thistle
#

but no i had to find out the hard way the love.event.restart isn't a thing in LOVE 11.5 and my import save data function couldn't be perfect

#

well actually

#

jf i masked it with a loading screen it could maybe work without me restarting

#

hmm

#

i don't know

neat plover
#

well try

agile thistle
#

still mad that seemingly the only way to transfer it is to directly invoke robocopy using os.execute thanks to limits of LOVE filesystem functions

tacit sand
#

Hello! I'm trying to get into Balatro modding but am struggling severely to make the simple joker I want to make, if anybody could assist me with my spaghetti code it would be super apricated :)

daring fern
#

How could one change the temperance and hermit cap?

iron iron
#

im making a joker that enhances cards held in hand into an enhancement when that same enhancement is scored

how do i pick a random card held in hand to enhance?

#

only mod ik off the top of my head that does this is ortalab but i couldnt find anything

stray warren
#

pseudorandom_element should do that

#

For example
pseudorandom_element(G.hand.cards, pseudoseed('power_surge_destroy'))

iron iron
#

hmmm

shell timber
#

how do you debuff cards? card:set_debuff isn't making it not score

acoustic sundial
#

is there a table I can reference that is just all of the tarot cards?

plush cove
#

and then to undebuff you do
SMODS.debuff_card(c, false, "debuff_source")

hard flume
#

Hihi. Gonna try and get the Yume Nikki World done today

manic rune
#

where do yall learn the math to move, rotate stuff and allat for shader...

#

shi looks like dark magic 💔

zealous glen
#

Unless you want something less basic

manic rune
#

yeah, math.sin and all that stuff

zealous glen
#

Do you want to do something simple or not?

#

The game already handles rotations, scaling, translations,

manic rune
#

these

zealous glen
manic rune
#

aaand whatever those are, my brain cant even comprehend what they are for 💔

zealous glen
#

What I find difficult is knowing what math to do, not necessarily how to do it

zealous glen
manic rune
#

where do you learn to understand those

#

thats the thing im curious about

zealous glen
#

The formulas you just Google

manic rune
#

my school doesnt seem to be teaching anything related to this 💔

zealous glen
#

I learned linear algebra in university

manic rune
#

oh.

#

im still in high school, maybe thats why

manic rune
#

❤️

#

right, so its mostly googling formulas aaand

#

learning those linear algebra thingies?

#

maybe i will watch some shader tutorials on top of that, thanks :D

zealous glen
grizzled jewel
#

is it possible to debuff consumables? does anyone know?

zealous glen
#

Debuff, yes, does it do anything though?

#

I think it would prevent Observatory from working, maybe, on SMODS

#

Not sure the vanilla behaviour of debuffed Comsumables

grizzled jewel
#

kk just asking

#

ty

zealous glen
knotty ocean
#

print("hello world")

manic rune
unkempt kestrel
#

hello chat i am wondering if anyone can help with a little issue im having (just started modding earlier today), im trying to make a joker which ummmm gives lots of Xmult per card held in hand but it seems like context.main_scoring doesnt work, i think the only way i could get it to work was with context.individual but that seems to score the cards again at the end of the round

#

(ignore the cost)

#

oh it also worked when i removed context.main_scoring altogether but then it scored twice

paper zealot
# manic rune

Sin, Cos and Tan are pretty fundamental functions, I'm surprised you haven't been taught those in school (yet? hopefully). Trigonometry is handy in many areas of life.
In programming terms, they're periodic functions that take in an angle argument and output the size of one of the 3 sides of a "unit" triangle
https://www.mathsisfun.com/algebra/trig-interactive-unit-circle.html

manic rune
#

i know how to use sin, cos, tan to solve math problems

#

but uhh

#

dunno what they are for

#

my school doesnt teach anything about that at all

#

mostly just formulas surround that

#

nah, not mostly, just

zealous glen
#

I think learning about linear algebra rotations will help visualize it

paper zealot
#

Because sin and cos cycle smoothly between -1 and +1, they can be used to convert a time value that is constantly increasing into a periodic value that's constantly smoothly changing

#

The right side of that interactive link shows the plot of the functions and how they change over "time"

#

Tan is wacky and generally only used for triangle calculations, but cos and sin are often used in game animation and shaders

zealous glen
#

sin, cos, and tan are all computed from ratios on triangles

#

and specifically each angle is associated with a ratio

#

which allows you to recover a circle

#

but IIRC it was linear algebra that helped me visualize trigonometric functions more

#

even though I had already learned how to compute them geometrically in school

tall wharf
#

try plotting y = sinx

zealous glen
zealous glen
tall wharf
#

you can see that as x goes up y oscillates between -1 and 1

zealous glen
#

We computing the graph of sine by knowing how to compute sine

#

There are infinite functions that oscillate between -1 and 1 but only one of them is sine

zealous glen
#

have you used a compass

manic rune
#

....

#

theres vector4???

#

😭 WHAT

zealous glen
#

it's a weird shader language where you define the length of a vector that way

manic rune
#

i guess thats because i primarily learnt coding through roblox, so i only knew about vector2 and vector3

thorn ridge
#

Anyone who knows how to make booster packs, help would be amazing

zealous glen
frosty dock
#

which ∞

manic rune
#

???

frosty dock
#

functions themselves are infinite-dimensional vectors

manic rune
#

i think im gonna have a mental breakdown learning this

zealous glen
manic rune
#

can someone explain whats the forth value for

zealous glen
manic rune
#

im terribly sorry for sounding dumb

zealous glen
#

alpha

frosty dock
#

it's the opacity

manic rune
#

oh

#

ohhh

zealous glen
#

aka transparency

manic rune
#

so if its 0.5 then it will be see-through?

frosty dock
#

yea

manic rune
#

like, red-tinted glass or something

#

mm i see

#

i assume any value higher than 1 doesnt mean anything?

zealous glen
#

the more opaque the less transparent

manic rune
#

since 1 is full-on visible

zealous glen
#

and vice-versa

zealous glen
manic rune
#

mhm, i think roblox used this

#

so i understand a bit

zealous glen
#

or use an online shader tool

gusty iron
tall wharf
#

you don't know glsl

#

everything is 0 to 1

manic rune
#

we often use 0 to 255

#

:3

zealous glen
#

I'm reminded of this meme

tall wharf
#

twitter

zealous glen
#

more like ew

manic rune
#

does u_time increase overtime

#

-# im somewhere else rn, so im manifesting the code in my mind

zealous glen
#

mood

zealous glen
gusty iron
zealous glen
#

Complex numbers do have complex multiplication which dips into 2-by-2 matrices

#

Infinity is an element of the extended number line

gusty iron
zealous glen
#

I don't think it's weird, it just needs to be specified by the context

#

I don't think it's too different from reusing number notation across different algebraic structures

gusty iron
#

Yeah, any specific infinity i consider a number, but its moreso just an "x" situation

manic rune
#

how do i uhh make this black part of the gradient disappear

#

more like how do i make a seamless gradient, tbh

zealous glen
#

if you want a horizontal gradient, I'd do a convex combination depending on the x axis

#

A convex combination of a and b is an expression of the form aθ + b(1-θ) where 0 <= θ <= 1

#

Hence when θ = 0, the expression evaluate to b

tall wharf
#

:3

zealous glen
#

and when θ = 1, it evaluates to a

gusty iron
#

Theta reference

tall wharf
#

:3

#

@manic rune :3

manic rune
#

:3

tall wharf
#

you change the third value in vec4 to 1

zealous glen
#

you can think of θ as the Doctor Ratio between how much the expression is a or b

manic rune
#

dr ratio...

zealous glen
manic rune
#

:3 im very sorry to say that my brain barely comprehends that

zealous glen
#

how to use it, or some part of the definition

manic rune
#

i actually want to ask some simple (MAYBE) questions first, is it possible to get this gradient reversed?

#

like, instead of B -> R, its R - > B

zealous glen
#

so you're using st.x to compute the gradient

#

I believe st.x varies from 0 to 1

manic rune
#

mhm

zealous glen
#

so you want to obtain a quantity that varies from 1 to 0

#

if you imagine a point moving from 0 to 1, can you visualize a quantity that decreases from 1 to 0

#

you don't need to know how to describe it mathematically, just visually

manic rune
#

uhhh

#

like, the distance between that point and its destination?

zealous glen
#

exactly

#

the destination is 1, so how would you compute that distance

manic rune
#

yeah i think i understand now :3

zealous glen
manic rune
#

thankssss

zealous glen
#

It's difficult to learn how to translate geometric intuition into math and back again

#

this is a simple example, in the grand scheme of things

manic rune
#

mhm, the solution didnt come as obvious to me for some reason

zealous glen
manic rune
#

i envy whoever can just naturally do this

tall wharf
#

you can't

#

no one can

zealous glen
#

it's a skill

#

some people learn it more easily

tall wharf
#

at the end of the day it's all just maths

#

linear algebra

zealous glen
#

@manic rune now try 1-x*x

#

or whatever multiplication notation is

#

or even (1-x)*(1-x)

tall wharf
zealous glen
#

challenge where your money is converted in real time

#

from local currency to dollars

tall wharf
#

your money in bank account represents your in game money

#

buying in game items deducts real money

#

you cannot gain money

manic rune
#

ghhhh

#

i shall impale

hushed field
#

So happy all of y'all are learning shaders. Who's going to write the tutorial that I can use? ❤️

manic rune
#

i love when i forgot what my own var is called

#

dot_multi and dotMulti ❤️

gusty iron
#

Im pretty sure someone made a mod that actually charges your credit card (isnt available for public use, obviously)

zealous glen
#

well actually stupid made the example shaders, idk if they wrote the tutorial

hushed field
hushed field
zealous glen
manic rune
#

im gonna have a stroke learning shader

#

can i just blueprint whoever already knows shaders please

#

💔

hushed field
tall wharf
hushed field
#

Oh wait

#

Heart failure

manic rune
#

???

tall wharf
#

this is exactly why i quit modding for 1 month

manic rune
#

wrong stroke, 🧊

#

💔

hushed field
#

💔

zealous glen
manic rune
#

i know the kind of person you are now.

tall wharf
#

and i just

#

keep saying

manic rune
#

💔

tall wharf
#

development resumes tomorrow

#

for like a month

manic rune
#

ohh

#

so thats the story behind it

#

:3

zealous glen
#

Taking a break can help too

#

also I think the struggle with shaders for me are that I don't know what math to use to get the effect I want, and some specific technical details

hushed field
lament agate
#

Does he know?

zealous glen
hushed field
#

Oh that's for sure not a shader thing

#

Just changing the atlas

tall wharf
hushed field
#

But I want it to be modular so I can just add {alt-art-pos} to jokers. Wouldn't take any real effort but I'd need to commit to alt art assets, haha

zealous glen
hushed field
#

Aaaa

manic rune
#

.

#

I DIDNT MEAN TO REPLY, IM SORRY

#

😭

manic rune
#

for some reason

acoustic sundial
#

When making an effect similar to Lusty Joker, I can't seem to get it to count all scoring cards. Only played cards, or all cards in hand regardless if they scored. Is there a context I'm missing or do I need to just check for scoring logic myself?

manic rune
#

that would be context.scoring_hand

#

#context.scoring_hand will return the number of scoring cards, i think

acoustic sundial
#

hmm

#

using that seems to count cards in hand regardless if they are scored or not

manic rune
#

huh

acoustic sundial
#

Yeah I'm guessing I've done something really stupid or misinterpreting something. "is_even" is my own function does what it sounds like

native zinc
#

hey my cardTable is trying to reference a joker i already renamed

#

do i just throw my modpack out and put it back in like a computer tech

warped marsh
#

Heya, I'm trying to make my Jokers to have a rarity like 'Miku', but the 'Common' Rarity still being there, just an extra tag I suppose? How would I go and do that?

frosty dock
#

also if you just check if the ID is even, you're including queens (12) and aces (14)

acoustic sundial
frosty dock
#

yeah just wanted to make sure you were aware. mb I didn't actually see the video

acoustic sundial
#

been awake too long 😅

tall wharf
#

@manic rune

warped marsh
sour marsh
#

ok i'm just dipping my toes into modding and trying to understand the basics, are all the jokers and their effects just defined in card.lua?

sour marsh
#

real

#

ok another question, where are the joker sprites defined?

#

like which sprite corresponds to each joker

#

i can't find that in card.lua

limber blaze
#

its in game

#

P_CENTERS has the sprite pos for all the jokers in their corresponding table

tall wharf
#

game.lua

#

:>

limber blaze
#

(unintended)

tall wharf
limber blaze
tall wharf
#

😭

#

my 2fa challenge is easy now

manic rune
#

i mean

limber blaze
#

they are pretty rare anyway

manic rune
#

life randomizes enhancements too

#

yours is just rank and suit

limber blaze
tall wharf
#

I'm adding a joker

manic rune
#

no, bad aiko

#

work on a boss blind instead

native zinc
#

how balanced is this

tall wharf
#

cirno boss blind

#

because fuck you

limber blaze
#

if its 1 in 11 then its probably fine

tall wharf
#

Hand must contain 9

native zinc
limber blaze
#

oh yeah its fine

manic rune
#

letter cards must form the name of a number

#

-# math

#

:3

sour marsh
#

ok one more question, say i wanted to add a sprite on top of a joker that was purely visual, would i do this by adding an enhancement that does nothing, adding a sprite to soul_pos or some other way?

limber blaze
#

or e

native zinc
#

i should probably rewrite the description if you thought it applied to aces though

ionic lion
#

can anyone help im learning to mod balatro and keep getting the failed to collect file data for atlas

native zinc
#

or just add another line ig

warped marsh
limber blaze
#

name is auspice, not out yet

warped marsh
#

ahhh okay, i was wondering because i searched for it!

#

and nothing came up

#

looks cool!

limber blaze
#

all the stuff for the release is like nearly done actually unless we decide to add more stuff before that which probably wouldnt take too much longer anyway

ionic lion
#

can someone help me im learning to mod and keep getting this error

limber blaze
#

your image file probably either has the wrong name or doesnt exist in both the 1x and 2x folders

ionic lion
#

ive checked that still after renaming and changing the code to match still same error

daring fern
#

Is there a way to make certain jokers show in a different category in the collection?

tall wharf
#

i love miku

hushed field
daring fern
#

Fully custom.

warped marsh
vocal cedar
#

@verbal wyvern it continues

verbal wyvern
#

Is this one just an 8 vers of Cloud 9

#

The words Joke make me assume its gonna take away money or something

errant sable
#

how would i make a tarot card rarer than the others

sour marsh
worthy stirrup
# tall wharf

idk why, i find it so funny that public transport is there

worthy stirrup
#

oh, are these modern day versions of the tarot cards?

tall wharf
#

i mean kinda

#

but also opposite

worthy stirrup
#

oh yea, i can see that too

tall wharf
#

I'll come up with something better than demon

#

trust

hushed field
#

it makes sense to choose public transport, but i do love the idea of the opposite of public transit being chariots, rather than just cars

tall wharf
#

:>

hard flume
#

Madotsuki - Hands played 1 minute apart from each other grant 1.25x Chips

Knife - +1 Mult. Every destroyed Playing Card grants +1 Mult. Destroy each hand played every 1 minute.

Lightswitch - 1 in 64 chance to grant +64 Mult.

Traffic Accident - Playing during a red light grants x1.25 Mult. Playing during a green light grants x0.5 Mult. Lights change every 1 minute.

Kalimba Channel - KALIMBA!!!

Numbers World - Grants a random mult every round.

#

Joker Ideas for Yume Nikki World

tall wharf
#

holy yume nikki

modern kindle
#

Good schmorning chat

hushed field
#

good afternoon dilbert

modern kindle
#

only 0815 here :D

hushed field
#

timezones, how do they work? haha

vocal cedar
hushed field
#

it's 2 here, finished with work already on my end 😛

modern kindle
#

i mean hey at least its time to just vibe then

#

i gotta figure out what i want to do today, ive been slacking mod wise and only fixed some things yesterday, not alot of huge content

#

ideas are looming though...

long urchin
#
SMODS.Atlas{
    key = 'welder',
    path = 'Jokers.png',
    px = 71,
    py = 95
}

SMODS.Joker{
    key = 'welder',
    loc_txt = {
        name = 'Welder Joker',
        text = {
            'All played {C:attention}#1#s{} become', 
            '{C:attention}Steel{} cards when scored,',
            'rank changes every round'
        }
    },
    atlas = 'Banker',
    rarity = 1,
    pos = {x = 0, y = 0},
    config = { extra = {
            rank = 'Ace'
        }
    },
    loc_vars = function(self,info_queue,card)
        return {vars = {card.ability.extra.rank}}
    end,
    calculate = function(self,card,context)
        if context.end_of_round and context.game_over == false and context.main_eval then
            message = "i weld"
        end
    end
}``` so what did i do wrong chat? Error shows up when i use DebugPlus to discover the card
brazen notch
hushed field
# hard flume Madotsuki - Hands played 1 minute apart from each other grant 1.25x Chips Knife...

tI know nothing about Yume Nikki, so the flavour is lost on me, but I assume these are effects that can happen during the a blind, if you're in that specific world? I think the lightswitch's odds might be too low for them to ever be something you take into account, and are practically never relevant, but it might be fun to just get super lucky and win a blind you'd lose by getting +64 mult

hard flume
#

I think I might change it to 1 in 6 chance to grant +6 Mult and a 1 in 4 chance to grant +4 mult.

native zinc
#

i'm probably doing something incredibly wrong here

brazen notch
native zinc
#

oh i don't even have the closing bracket inside

#

silly

frosty dock
#

crazy how that is still valid syntax balatrojoker

native zinc
#

oops! still bad

#

oh i don't have an ability name

hushed field
#

I get why you're doing it that way, but the vanilla way of writing jokers doesn't translate properly to SMODS!

frosty dock
#

and replace your selfs with card

frosty dock
manic rune
native zinc
#

ah, "extra" isn't also doing what i think it's doing

#

which means i probably am using the wrong thing here

hushed field
#

you haven't actually defined extra, so it can't actually check the extra table to see if there's a value called money

#

you're still missing a config for this joker

warped marsh
#

How do you add the little banners at the bottom of the Joker?, for example: [coded by ____]

native zinc
frosty dock
native zinc
#

hm, doesn't work

quartz ravine
#

Dear everyone. If I ever successully get the calculate logic right on an edition the first time without crashing the game, You will know I have been replaced by a robot

native zinc
#

on line 38 this time

frosty dock
#

yeah no your calculate function just has bad logic

native zinc
#

whoops

frosty dock
#

you're using context.other_card without checking for what context you're in

#

(you also don't need to check if the card is debuffed)

quartz ravine
#

hi folks, is there a way to tell by looking at card. if i am a joker or not?

frosty dock
#

<card>.ability.set == 'Joker'

native zinc
#

i assume then i surround it all with if context.cardarea == G.play... then... end?

frosty dock
#

...

strong jacinth
#

How would I change the pivot point of a card?

native zinc
#

-# oh i didn't see this bit in the docs

long urchin
#

this is my first attempt at doing multiple jokers in one lua file. Is this right?

manic rune
#

no

#

the x and y should still be the average size

#

uhh

#

forgot

ionic lion
#

71 x 95

manic rune
#

71 x 95

#

yes

frosty dock
#

px and py should be the size of one sprite

#

and the pos for each joker should be based on that size

#

{ x = 0, y = 0} for the top leftmost sprite

ionic lion
#

and can anyone help me for some reason my sprites arnt being put onto the joker

frosty dock
#

{ x = 1, y = 0 } for the one to the right of that, etc.

#

the pos isn't in terms of pixels

manic rune
#
y = 0 -> 0 * 95```

basically
manic rune
#

:3 dont ask why it looks ugly

modern kindle
#

hello bepis

manic rune
#

hii

#

-# im gonna refrain from saying your name for now

ionic lion
#

my sprites are not being put on the jokers for some reason pls help

manic rune
#

"Atlas"

hushed field
#

if I wanna add ui elements to the screen, do I just add them to G.GAME.[myvariable]?

manic rune
red flower
hushed field
#

i thought I was finally confident enough to add this feature but i'm not feeling confident writing this code, haha

red flower
#

whatchu adding

frosty dock
#

G.GAME is for anything specific to your run and needs to be saved

#

UI elements probably don't fit that description

long urchin
frosty dock
#

UI function stuff usually goes under G.FUNCS or G.UIDEF (or literally anywhere else if you're calling it directly)

frosty dock
#

you're just setting a global variable message

#

return { message = '...' }

long urchin
#

Ah

#

I thought the function was called message

#

So putting that in will give a little ui message like Gros Michel's "safe!" right?

frosty dock
#

yeah

#

well you weren't calling a function..

#

you were just setting a variable

long urchin
#

Lol

#

I have holes in my brain

sour marsh
manic rune
#

hello hello

hushed field
# red flower whatchu adding

I'm adding a voucher that makes it so the confection consumeable can stack in your inventory, so I'm making it so that if you have the voucher, and get more than 1 confection, your consumeable slot gets a Snackbag card, which opens a cardarea in the famed middle right of the screen section, when highlighted, containing your confections. I just want the cardarea to look similar to card info ui, though Maybe I should drop that

red flower
#

sounds cool

#

im going to put stuff in the middle right too just to be cool like everyone else

warped marsh
#

can someone tell me what im doing wrong here, i want to check if two either 2 kings/jacks(or 1 king & jack) are played, if true then create judgement and the fool

#

its not crashing, just isnt working!

quartz ravine
#

Hey guys, I made an edition that plays similarly to hiker, I am trying to add a loc_vars to show the current chip growth that has happened, since jokers and things won't show their +Chips like a playing card will

But it crashes in the edition code saying that it can't index card.ability

        key = "secretRare",
        loc_txt = {
            name = "Secret Rare",
            label = "secretRare",
            text = {
                "Gains {X:chips,C:white}+ #1# chips{} when scored",
                "{s:Inactive}Currently {X:chips,C:white}+ #2# chips{}"
            }
        },
        discovered = true,
        unlocked = true,
        shader = 'secretRare',
        config = {
            chipGrowthRateSelf = 5,
            chipGrowthRateOther = 2,
            chips = 5
        },
        in_shop = true,
        weight = 80,
        extra_cost = 4,
        -- disable_base_shader=true,
        apply_to_float = true, --false,
        loc_vars = function(self, card, context)
            return {
                vars = {
                    self.config.chipGrowthRateSelf,
                    card.ability.perma_bonus}
            }
        end,```
hushed field
#

I'm just not sure how to actually position UI elements on the screen, haha. I've got it working as a regular cardarea, so I might keep it visually at that until I figure out how to do the UI neatly. The main thing I think helps by adding actual UI is that I don't have to worry about it overlapping with other mods' custom cardarea, because I can make it clear mine is temporary, and also put it on the very top layer

red flower
red flower
quartz ravine
#

Ahh that makes a lot of sense. I guess it would not be possible then to display the accrued chips bonus. It would just be a little treat / surprise

red flower
warped marsh
#

so instead of individual, should i put context.scoring_hand?

#

sorry im really bad at like...text instructions :)

red flower
# warped marsh sorry im really bad at like...text instructions :)
calculate = function(self, card, context)
    if context.before and context.main_eval then
        local face_card_count = 0

        for _, pcard in ipairs(context.scoring_hand) do
            local id = pcard:get_id()
            if id == 11 or id == 13 then
                face_card_count = face_card_count + 1
            end
        end

        if face_card_count >= 2 and (#G.consumeables.cards + G.GAME.consumeable_buffer < G.consumeables.config.card_limit) then
            G.GAME.consumeable_buffer = G.GAME.consumeable_buffer + 1

            G.E_MANAGER:add_event(Event({
                func = function()
                    SMODS.add_card({ key = "c_fool" })
                    SMODS.add_card({ key = "c_judgement" })

                    G.GAME.consumeable_buffer = 0

                    card_eval_status_text(
                        context.blueprint_card or new_card,
                        'extra', nil, nil, nil,
                        { message = localize('k_plus_tarot'), colour = G.C.PURPLE }
                    )
                    return true
                end
            }))
        end
    end
end
warped marsh
#

you do charitable work thank you

#

with SMODS.add_card there isnt a point for loc_vars for info_queue for c_fool right?

#

since that was in my old code ^

red flower
#

you still need that if you want the tooltip

warped marsh
#

i got this error hmmm

#

after playing the two cards ^

red flower
#

it might be the card_eval_status_text, try removing that

warped marsh
#

one second

red flower
#

or change context.blueprint_card or new_card to context.blueprint_card or card

warped marsh
#

oops

red flower
#

amazing

warped marsh
#

got rid of the return true

#

lmao

native zinc
#

can confirm i was stupid for not reading the docs

#

(it works now and all my questions have been answered)

#

oh yeah i guess i have to figure out how odds work now

warped marsh
native zinc
#

does Oops just work with everything

warped marsh
#

at this point i have to credit you 😭 you are my saving grace

long urchin
#

whats the key of steel cards?

red flower
red flower
native zinc
red flower
#

that's vanilla functionality so it's not documented

native zinc
#

oh i see

#

i assume it's just "odds"

red flower
#

G.GAME.probabilities.normal

native zinc
#

gosh

long urchin
#

whats the context for card scoring? like if i want to modify a played card whats the context for that

native zinc
red flower
#

yes

strong jacinth
#

How would I change the pivot point of a card?

#

Like where the card goes after I release it

vast fractal
#

do i need like #1# to make this work?

red flower
warped marsh
#

to add something like Miku&Friends theyre called Badges right?

long urchin
#

whats the command to get a card's rank?

onyx sonnet
onyx sonnet
#

with whatever card you're checking before the colon

long urchin
#

colour = G.C.MONEY, what are the available options for this?

#

is there like a list of them all?

red flower
#

yes, in globals.lua

modern kindle
sour marsh
#

does anyone know where ASSET_ATLAS is defined in the source code?

long urchin
#
    config = { extra = {
            rank = 14, 
            mult = 300
        }
    },
    loc_vars = function(self,info_queue,card)
        return {vars = {card.ability.extra.rank}}
    end,
    calculate = function(self,card,context)
        if context.before then
            local welded = {}
            for k, v in ipairs(context.scoring_hand) do
                if v:get_id() == card.ability.extra.rank then 
                    welded[#welded+1] = v
                    v:set_ability(G.P_CENTERS.m_steel, nil, true)
                    G.E_MANAGER:add_event(Event({
                        func = function()
                            v:juice_up()
                            return true
                        end
                    })) 
                end
            end
            if #welded > 0 then 
                return {
                    message = localize('k_steel'),
                    colour = G.C.SECONDARY_SET.Enhanced,
                    card = self
                }
            end
        end```why isnt this steeling aces?
#

i used the code from midas mask but its not working :V

fresh swallow
#

Chat are there any good resources to look at how the seed system works for balatro?

strong jacinth
vast fractal
#

how to fix the card.ability.extra.perm_hand_count = G.GAME.current_round.hands_left so that the perm_hand_count will not have a nil value

manic rune
#

one is card.ability.extra.perm_hand_count, while the other is card.ability.perm_hand_count

vast fractal
#

thank you

native zinc
#

ah, i'm trying to get the odds text to dynamically update with Oops like the vanilla jokers, but it doesn't seem to work

#

i have tried to put GAME.probabilities into the config but it does spit out an error if i do so

zealous glen
#

Return the variable you want to return

native zinc
#

oh, hm

#

i guess i can move the update to the context that checks every frame

hushed field
#

The calculate function on consumeables doesn't work exactly like the joker one, right?

maiden river
#

I'm pretty sure it does
I didn't really do anything different for my consumables

zealous glen
#

Don’t do that

#

Just return the variable

maiden river
#

lemme send an example

native zinc
#

.

#

there is already oops compat

#

oops works

#

i want it to update with the description text

maiden river
#

yeah

hushed field
#

Oh, really? That makes this all a whole lot easier. I've currently got my custom consumeable set up to create tags, but I wanna switch over to them having the same functionality as those tags, but remaining in their card area until they're used

maiden river
hushed field
#

Also to stop the player from stacking their uses

zealous glen
maiden river
#
loc_vars = function(self, info_queue, card) 
   return { vars = {(G.GAME.probabilities.normal or 1), card.ability.extra.odds}}
end,
zealous glen
#

At least they’re not currently using it

native zinc
#

yeah

maiden river
#

oh

#

okay

maiden river
manic rune
#

huh

#

istg i saw someone working on a Friends vs Friends mod too

maiden river
#

that was me lmao

native zinc
manic rune
#

...that was you??

maiden river
#

yeah

#

I've been at it for like a month 😭

manic rune
#

i thought it was a different person

#

💀

maiden river
manic rune
#

like

#

earlier

#

I SWEAR TO GOD IT WASNT YOU SENDING THE IMAGE 💔

#

IM NOT GOING TO THE ASYLUM

maiden river
#

I mean

#

I guess I could see if someone else is also doing it

modern kindle
maiden river
manic rune
#

WHAT

maiden river
#

I dunno who else you were talking about

#

I mean, someone could've sent an image involving the gameplay
but I'm the only dev rn

manic rune
#

i

#

huh???

modern kindle
#

couldve been you just didnt see his name if he was the poster

#

could always do an image search otherwise

zealous glen
#

Wake up Bepis, it’s been 10 years

#

The accident was not your fault

manic rune
#

no

#

NO

#

DONT LEAVE ME

#

DONT LEAVE ME ALONE

zealous glen
hushed field
maiden river
#

LMAO I wish I was more clever 😭

hushed field
#

ah i guess if there's nothing clever there I can just play it tonight 😛

maiden river
#

true!

#

the second I learn how to use shaders it's over tho
there's gonna be so much content added

#

a new weapon I'm adding does involve a shader, so I need to know how to make them not ass 😭

#

all I have for now is Green

zealous glen
#

Green

modern kindle
#

Green

maiden river
#

Green

maiden phoenix
#

Green

maiden river
#

the green is fine, but I also want to make a fire shader
and that's going to need to be better than just Orange

hushed field
#

Green

#

Orange!

tall wharf
maiden river
#

I wish 😭

dense vector
maiden river
tall wharf
#

😭😭😭😭

#

incorrect Photoshop usage edition bruh

maiden river
#

yeah I know 💀

#

shaders are hard

#

I don't how you do it 😭

strong jacinth
long sun
long sun
#
SMODS.Atlas {
  key = "TB",
  path = "Trouble Brewing.png",
  px = 71,
  py = 95
}

SMODS.current_mod.optional_features = { cardareas = { unscored = true } }

function count_enhancements()
  if not G.playing_cards then return 0 end
    local enhancement_tally = 0
    for k, v in pairs(G.playing_cards) do
      if next(SMODS.get_enhancements(v)) then enhancement_tally = enhancement_tally + 1 end
    end
    return enhancement_tally
end

SMODS.Joker {
  key = 'washerwoman',
  loc_txt = {
    name = 'Washerwoman',
    text = {
      "When acquired,",
      "do nothing"
    }
  },
  config = { extra = { is_character = true, is_good_character = true, is_townsfolk_character = true } },
  rarity = 2,
  atlas = 'TB',
  pos = { x = 0, y = 0 },
  cost = 7,
  loc_vars = function(self, info_queue, card)
    return { vars = {  } }
  end,
  blueprint_compat = false,
  perishable_compat = true,
  calculate = function(self, card, context)
    
  end
}```
maiden river
#

does your filename have a space in it?

long sun
#

yep

runic pecan
long sun
#

AHA WAIT NO I KNOW WHAT I DID WRONG 😭😭😭😭

#

😭😭😭😭😭😭😭 i don't even have the atlas image -w-

#

sorry!!

#

just forgot to export it, is all 🤡

sour marsh
#

is there anything wrong with this? why am i getting attempt to index field 'atlas' (a nil value)

strong jacinth
#

Where does the Cryptid main menu card being defined

strong jacinth
sour marsh
#

same thing

#

didn't add it bc it's supposed to be predetermined to asset_atlas iirc

#

OHHH

#

i know what could be the reason

long sun
#

wheee :D

#

(the whole mod title doesn't fit)

long urchin
#

what does the message = localize('x') do? like how does it work?

sour marsh
maiden river
long urchin
#

the only thing i can do to make it work is by typing in 'k_gold', but i searched through all the game files and couldnt find an establishment of that name so idk where it even gets it from

maiden river
#

it makes translating your mods easier

long urchin
#

AHHH

#

ty ty i found it

#

i forgot to check the localization folders

maiden river
#

I've been through the trials of localization

#

I'm basically a pro

zealous glen
long sun
#

it's Blood on the Clocktower :D

#

similar to those two, but everyone has a unique ability

#

(well, in most scripts)

#

(Farmer, Legion, etc. can appear several times)

zealous glen
long sun
#

you mean No Rolls Barred :}

#

ya

hushed field
#

could be Good Times Society too, haha

#

I don't remember if Victin was into Dropout content

long sun
#

oh uhm, a fun difference between it and games like Mafia is, some characters are good, but have negative abilities, and some evil characters aren't the main target

zealous glen
maiden river
zealous glen
#

You need to get more kino

long sun
#

ah neat ^^

hushed field
#

damn, only 630 inscritos

zealous glen
#

are those like doritos

#

and fritos

zealous glen
#

scripts

#

Whatever the Joker equivalent is