#💻・modding-dev

1 messages · Page 596 of 1

unkempt bronze
#

at least for iron

#

nope it works!

#

Thank you, Somethingcom515!

wicked leaf
#

How do you use SMODS.Probability?

primal shoal
#

theres a SMODS.probaillty?

wicked leaf
#

yes but its not documented apparently

primal shoal
#

you might have to read the code idk or someone else knows

wicked leaf
#

ok I think I found some stuff

#

how do you enable G.Discards?

primal shoal
#

isn't that just a variable/table?

wicked leaf
#

sorry, G.Discard

primal shoal
#

I haven't look that far into the code yet idk

daring fern
daring fern
wicked leaf
#

I cant find the optional stuff in the wiki anywhere ugh

wicked leaf
#

this yknow

daring fern
wicked leaf
#

thank you

#

also what's the way to use up / add a discard?

#

lease_discards?

gilded goblet
#

ease_discard()

#

sort of like ease_dollars()

wicked leaf
#

ease_dollars is a thing?

#

interesting

gilded goblet
#

i like doing eval ease_dollars(math.huge) using debugplus to get infinite monies

primal shoal
#

and that's why we read other people code for "inspiration"

gilded goblet
#

yeesss definitely

#

-# shoutout N'

primal shoal
#

ive used buncos bits code for a fair few of my jokers

wicked leaf
#

hasnt bunco been outdated for a while

primal shoal
#

the old code still works and that all i need

faint yacht
wicked leaf
#

use vanillaremade as reference instead

#

the original bunco uses oldcalc

primal shoal
wicked leaf
primal shoal
wicked leaf
#

the entirety of vanilla remade in the latest smods

wispy falcon
primal shoal
#

your just tinting it blue right?

south ice
#

@timid zinc told me to ask y'all where i can find the G.localization.descriptions thing

wispy falcon
timid zinc
primal shoal
timid zinc
#

You can either just change the localization file directly and rezip the file back into an exe (But you wont be able to distribute your mod) or create a mod that accesses G.localization. and changes the values in it

wispy falcon
daring fern
timid zinc
#

Oh, you can do that?

#

All the examples I've seen don't

south ice
daring fern
timid zinc
#

You can edit it yeah

wispy falcon
#

Wait, how do I get the screen size for a shader?

south ice
daring fern
#

It seems like you have to delete the file and put in the new edited file if you're using WinRAR

long sun
#

how can a boss blind change the requirements of other blinds in the same ante?

long sun
#

okay wait scratch that

#

how can a boss blind change other blinds to specific boss blinds?

slim ferry
#

bump

daring fern
long sun
#

awesome ^^ thanks

#

if i reroll into the boss, does it change the small blind and big blind?

slim ferry
#

no

daring fern
# slim ferry bump

Nothing's changing as in the patches aren't applying or the showdown blinds don't show up?

slim ferry
#

the patches are applying, but the showdown blinds don't show up

viscid talon
#

ok so uh

#

im trying to make a balatro joker that copies the effect of a random joker

#

i tried making it in jokerforge but it just isnt working

wild pine
#

is it possible to dynamically change the volume of a played sound without replaying it?

viscid talon
#

i dont know how to use lua at all

#

what do

daring fern
wild pine
#

but wouldnt running play_sound again just play the sound a second time

daring fern
wild pine
#

im trying to make it change the volume mid play

#

like progressively get louder/quieter over time based on a value

real crown
#

How can I make a mod compatible with older smods version? Like to be playable in multiplayer
Do I need to get rid of SMODS.Back or SMODS.destroy_cards, or what would enable compatibility?

south ice
#

i think i did the text edit thing successfully guys, wish me luck

daring fern
wild pine
#

yeah

#

is that possible or nah

daring fern
south ice
#

okay, its loaded successfully, apart from the fact that it crashed.

wild pine
#

or maybe if theres a way to have multiple music tracks playing at once

#

one being the sound effect and the other the normal game music

daring fern
wild pine
south ice
south ice
#

Yep

#

At least, I'm pretty sure it was

slim ferry
# viscid talon what do

option 1: learn! the people here are very helpful and theres a ton of good resources, and lua is definitely one of the simpler languages to learn
option 2: you could get people to code for you too ig, though this has less chance of actually working

daring fern
south ice
#

I literally did that right as u sent that message lol

#

and it crashed again 🙁

daring fern
south ice
daring fern
south ice
#

No, I just copied it straight from the crash screen in the game

slim ferry
#

no like

#

the code

#

did you save your own changes

keen atlas
#

it might be the utdr mod

south ice
#

That's what I was thinking.

real crown
#

What's an alternative to SMODS.destroy_cards? There's an incompatibility with an older version of smods, and I'm suspecting that may be the issue

slim ferry
#

you can use Card:start_dissolve() and then manually calculate the cards destroyed context

south ice
#

Okay, I removed UTDR from my mods folder, it loaded up just fine, but the game crashed when I opened the jokers part of my collection.

wild pine
#

nvm found it from this person, gg thanks

#

can just do this and as long as timer has a value it loops indefinitely

keen atlas
south ice
#

Like the edited localization file?

keen atlas
#

yeah

slim ferry
#

okay apparently something did change, but thats just stopping showdowns from spawning in ante 8. how

south ice
#

its not appearing

#

like im dragging it onto discord and the message just doesnt send when i press enter

daring fern
south ice
south ice
slim ferry
#

full function

keen atlas
eager sparrow
#

where is documintation

#

info for mod

real crown
#

Does anyone know what in this code could make it not compatible with older steammodded version (1.0.0~BETA-0711a-STEAMODDED so it would work with multiplayer)? The mod loads and the deck is present, but the halving doesn't work

    name = "Halving Deck",
    key = "halve",
    pos = {
        x = 1,
        y = 4
    },

    loc_txt = {
        name = "Halving Deck",
        text = {"At the end of each round,", "destroy half of the deck", "(rounded up)"}
    },

    _halve_deck = function(self)
        if not G.playing_cards then
            return 0
        end

        local eligible = {}
        for _, c in ipairs(G.playing_cards) do
            if not c.removed and not c.shattered then
                eligible[#eligible + 1] = c
            end
        end

        local n = #eligible
        if n <= 1 then
            return 1
        end

        local to_destroy = math.ceil(n / 2)

        for i = n, 2, -1 do
            local j = math.random(i)
            eligible[i], eligible[j] = eligible[j], eligible[i]
        end

        for i = 1, to_destroy do
            local _card = eligible[i]
            if _card and not _card.removed and not _card.shattered then
                _card:start_dissolve()
            end
        end

        return 1
    end,

    calculate = function(self, back, context)
        if context.end_of_round and not context.game_over and context.main_eval then
            G.E_MANAGER:add_event(Event({
                func = function()
                    self:_halve_deck()
                    return true
                end
            }))
        end
    end
}```
south ice
#

fixed it! thx!

#

Now to fix the crashes with UTDR.

slim ferry
#

if i dont patch that the showdown check doesnt ever get reached, though. the check for if it should add a showdown to the pool is in the elseif after

#

and it would just not check for a showdown at all unless it is the win ante

daring fern
slim ferry
#

i have not, i'll try that

#

one moment

slim ferry
daring fern
slim ferry
#

so, whats the issue here? should i get rid of one of the two patches?

daring fern
slim ferry
#

same result seemingly

wispy falcon
#

Does time not exist for shaders?

dapper sun
#

how do i stop a card from getting debuffed?

slim ferry
#

return prevent_debuff = true in context.debuff_card

dapper sun
#

ty

wispy falcon
#

Or more specifically: Is there a thing that helps animate the shader?

dapper sun
# dapper sun ty

this isn't working and i can't figure out why,, ,

if context.debuff_card and context.check_enhancement and context.other_card.config.center.key == "m_wild" then
    return { prevent_debuff = true }
end
daring fern
dapper sun
#

oh

#

how would i go about doing this then? :p

daring fern
dapper sun
#

preventing wild cards from getting debuffed

daring fern
dapper sun
#

ty explosion

viscid talon
#

how do i change it from "saved by Mr bones" to something else

slim ferry
#

change this return value

#

be aware that it is a localization entry key so you cant do much without a localization file

viscid talon
#

whats a localisation file?

slim ferry
#

vanillaremade outdated?

#

wtf

daring fern
slim ferry
#

oh

#

but then how does it decide wether to localize or use the raw string

#

because theres no localize function there

daring fern
slim ferry
#

ah i see

slim ferry
#

you can replace the key in saved with just a plain string

wind steppe
#

localization files are still better though

slim ferry
#

yeah but theyre editing from joker forge mod iirc

#

i think

viscid talon
#

yes i am

wind steppe
wispy falcon
#

How do you animate shaders, if that's even possible?

slim ferry
#

time

viscid talon
#

dis my code rn

#

do i changed the saved = true to saved = "Saved by Interstice"

wispy falcon
slim ferry
#

which i can only assume is a time value

wispy falcon
slim ferry
#

yeah

real crown
# wind steppe try back.config.center:_halve_deck()

In the current attempt I completely just pasted the contents of the helper into calculate, and trimmed it down a lot (to a point it lost functionality), but it's still not working for some reason with older steammodded: calculate = function(self, back, context)
```if context.end_of_round and not context.game_over and context.main_eval then
if not G.playing_cards then
return false
end

        local n = 0
        local to_destroy = #G.playing_cards / 2

        for _, c in ipairs(G.playing_cards) do
            c:start_dissolve()
            n = n + 1

            if n >= to_destroy then
                break
            end
        end

        return true
    end
end```
viscid talon
#

it works!

slim ferry
#

awesome

wispy falcon
slim ferry
#

not the best with shaders but

#

are you actually using it in the math

#

in some way

wind steppe
slim ferry
#

and are you using sin/cos

wind steppe
#

make sure thats getting called

#

because the code itself seems to work for me

wispy falcon
viscid talon
#

thank you Eris!

slim ferry
#

is that blue card

real crown
slim ferry
#

im not really a shader guy i just know some math

daring fern
real crown
viscid talon
real crown
#

It works now with the removed of main_eval, thank you!

wispy falcon
slim ferry
#

i dont

#

how could i make a pack open after a blind without the cashout thing getting in the way. kinda like how cryptid does it with The Decision

wind steppe
slim ferry
#

okay

#

good point

muted trout
#

apparently i have some ssymbol???? can someone help me out

shell timber
#

you're missing an end

muted trout
#

where

#

i added an additional end and it doesnt seem to work

versed swan
muted trout
#

still error

shell timber
#

add another end

muted trout
#

i'll believe it

#

damn that worked

hardy viper
#

i love incorrectly formatted code

muted trout
#

im sorry i suck at coding 💔

#

im too ideas guy for all this

slim ferry
#

hit alt+shift+f

hardy viper
#

^

daring fern
muted trout
#

whatever that was supposed to do didnt work

#

yeah

slim ferry
#

get the lua extension then

#

by sumneko

muted trout
#

i have a feeling it's gonna do absolutley nothing but ok

slim ferry
#

it will tell you when you make an epic blunder

hardy viper
#

it does many wonderful things

urban wasp
muted trout
#

probably not for me it wont id think the formatter was wrong and not me 💔

urban wasp
#

it'll highlight everything

urban wasp
#

or is sumneko's like better for balatro

slim ferry
#

idk i only used sumneko's

urban wasp
#

idk this is just the one that appeared at the top of the extensions list for lua in vscode lol

slim ferry
#

this one is by Tencent though which is a controversial company and therefore bad /j

urban wasp
#

nvm i'm not the weird one

muted trout
#

do effect jokers need card abilities even if they don't seem to need any

slim ferry
#

wdym card abilities

urban wasp
#

what do you mean exactly

#

like card.ability. ...?

muted trout
daring fern
urban wasp
slim ferry
#

its just so you can easily change the values in the config and be done

#

instead of manually changing numbers everywhere

muted trout
#

so do effect jokers not need them

slim ferry
#

wdym

urban wasp
#

what do you mean "effect joker"

slim ferry
#

nothing needs them, theyre just useful

muted trout
wind steppe
#

scaling jokers need them

slim ferry
#

yeah

#

i guess

vernal seal
#

quick question: where is the file that contain all calculate context?

slim ferry
#

actually no what if you just remember 🧠

wind steppe
#

also anything dealing with random values like the idol

urban wasp
muted trout
daring fern
urban wasp
muted trout
#

what im seeing from other mod's code is it doesnt nessecaryily need calculate = function(self, card, context) either

slim ferry
#

yes

#

it says on the SMODS.Joker page what all the required parameters are

#

and even thats not entirely accurate because you technically dont need a localization entry

muted trout
#

im unsure how exactly i increase something's sell value

wispy falcon
#

How do I apply a sticker to every card from the set Joker?

daring fern
wind steppe
#

copy code from either egg or gift card

wispy falcon
muted trout
#

I should probably reference this more and utdr mod less 🥀

daring fern
wispy falcon
slim ferry
#

no, in the sticker definition

gilded goblet
#

is there a way to have a probability trigger 2 different contexts?

wispy falcon
slim ferry
wispy falcon
# slim ferry no, `sets` is a seperate parameter

Like this?

    key = "death",
    config = { extra = { roundsTillDeath = 3, roundsWithSticker = 0, roundsLeft = 3 } },
    badge_colour = HEX '000000',
    pos = { x = 0, y = 0 },
    sets = {Joker = true},
    default_compat = true,
    rate = 1.0,
    atlas = "death",
    unlocked = true,
    discovered = true,```
slim ferry
#

yes

wispy falcon
daring fern
wispy falcon
#

Well, my sticker doesn't get applied to anything

wispy falcon
#

<@&1133519078540185692>

#

Thank you mods :3

daring fern
wispy falcon
# daring fern Code?
    key = "death",
    path = "death.png",
    px = 71,
    py = 95
})

SMODS.Sticker {
    key = "death",
    config = { extra = { roundsTillDeath = 3, roundsWithSticker = 0, roundsLeft = 3 } },
    badge_colour = HEX '000000',
    pos = { x = 0, y = 0 },
    sets = { Joker = true },
    default_compat = true,
    rate = 1.0,
    atlas = "death",
    unlocked = true,
    discovered = true,

    calculate = function(self, card, context)
        card.ability.cstorm_death.extra.roundsLeft = card.ability.cstorm_death.extra.roundsTillDeath -
        card.ability.cstorm_death.extra.roundsWithSticker
        if context.end_of_round and not context.repetition and not context.individual then
            card.ability.cstorm_death.extra.roundsWithSticker = card.ability.cstorm_death.extra.roundsWithSticker + 1
            print(card.ability.cstorm_death.extra.roundsWithSticker)
            if card.ability.cstorm_death.extra.roundsWithSticker == card.ability.cstorm_death.extra.roundsTillDeath then
                print("DEATH")
                G.STATE = G.STATES.GAME_OVER
                G.STATE_COMPLETE = false
            end
        end
    end,

    loc_vars = function(self, info_queue, card)
        return { vars = { card.ability.cstorm_death.extra.roundsTillDeath, card.ability.cstorm_death.extra.roundsLeft }, key =
        self.key }
    end
}```
muted trout
#

i tried adapting the code to increase a consumable's sell price, but it's still at 1

lavish elm
#
if context.immediate then
            local lock = tag.ID
            G.CONTROLLER.locks[lock] = true
            tag:yep('+', G.C.PURPLE, function()
                SMODS.add_card{key = "j_gros_michel", edition = "e_negative"}
                G.CONTROLLER.locks[lock] = nil
                tag.triggered = true
                return true
            end)
            tag.triggered = true
            return true
        end
#

why this not work

slim ferry
#

if context.type == 'immediate'

#

tags work differently with contexts

lavish elm
#

ok thx

gilded goblet
gilded goblet
# daring fern `if context.pre_discard`

more context:

im dealing with pseudorandom_probability() in context.discard and if i try calling it again in context.pre_discard then they wont "match up"

calculate = function (self, card, context)
  if context.discard and SMODS.pseudorandom_probability(card, "j_emith_thread", 1, card.ability.extra.odds) and not context.blueprint then
    card_eval_status_text(card, "extra", nil, nil, nil, {message = localize("k_active_ex")})

    return {
      remove = true,
    }
  end
end
muted trout
daring fern
gilded goblet
daring fern
#

Also I still don't understand.

gilded goblet
#

then idk

#

let me try again

lavish elm
#

G.FUNCS.toggle_shop()
when I use this function the game gets softlocked not even debugging tools work

lavish elm
#

inside of tag:yep()

hollow horizon
#

How do I animate joker's sprite?
The way on the image crashes the game

slim ferry
#

animated sprite for anything other than blinds are not supported

#

either wait for next smods release or copy from the way other mods do it

hollow horizon
#

oh, so that's why

#

sure

red river
#

how do i shuffle a card created mid-blind into my deck? as opposed to putting it at the bottom or at the top

wind steppe
red river
#

i thought there would be a more dignified way to do this, but okay. thanks!

daring fern
prisma loom
#

folks does anyone knows how to remove this wierd black outline?

#

Ive been using special python file to remove lines but it doesnt seem to work here

#

or to be more clear, it works but after I re-downloading mod files from repository this bug returns

sour garden
#

black line?

faint yacht
#

Check for any transparent pixels.

prisma loom
prisma loom
#

on the seal on the left

slim ferry
#

im pretty sure its mostly an aseprite issue

#

since it makes transparent pixels black when exporting

#

while they just dont store a colour normally

wispy falcon
faint yacht
prisma loom
#

Folks I swear Im not crazy

#

there's nothing

slim ferry
#

yeah

#

it is an aseprite issue

#

well its actually a balatro issue

prisma loom
#

bruh😭

slim ferry
#

but its caused by aseprite

#

theres an aseprite extension that has a built in 1x to 2x scaling

#

for balatro

prisma loom
#

specifically????

#

wth where

slim ferry
#

let me find the extension rq

#

i forget what its called

prisma loom
#

thanks!

native bone
#

Im new to steammodded, does anyone know how to apply stickers?

#

I'm not entirely sure if I can use the .apply function during a calculate function

daring fern
native bone
#

Does anyone know how to check if a card has a certain sticker?

copper perch
#

This is for a joker card, I want it to destroy the random card when the playing cards are still on screen but after you win. My current code just gets rid of a card you had in hand when you see your money gained, I know it has to do with context.main_eval but unsure what to replace it with

if context.end_of_round and not context.game_over and context.main_eval and not context.blueprint then
            local card_ = pseudorandom_element(G.hand.cards, 'seed')
            SMODS.destroy_cards(card_)
        end
daring fern
copper perch
#

So it would be like this? Unsure what that would do

if context.end_of_round and not context.game_over and true and not context.blueprint then
            local card_ = pseudorandom_element(G.hand.cards, 'seed')
            SMODS.destroy_cards(card_)
        end
copper perch
faint yacht
#

SMODS.destroy_cards(card_, nil, true)

copper perch
#

ahhh, okay

faint yacht
#

The definition of the function is

function SMODS.destroy_cards(cards, bypass_eternal, immediate, skip_anim)
copper perch
plucky berry
#

is it possible to make a stake that debuffs specific ranks?

hollow horizon
#

Anyone knows why may the sound in return not work?
If I play the same sound through play_sound() it works just fine

left sonnet
#

Hey folks, I'm using the create_slider() function similar tp the one I have replied to, does there have to be a pre-existing version of 'beast_config' or is it created automatically? I'm getting a ```lua
bad argument #2 to 'format' (number expected, got nil)

hollow horizon
left sonnet
#

Good try Ali

left sonnet
hollow horizon
#

What am I doing wrong? No matter how many cards I play it's always NOT ALLOWED

hollow horizon
#

well, the variable's name is changed, but my original variable works just fine, I print it in console and it shows the right number. In this case 5

#

But apart from that, yeah. That's the code

red flower
#

don't check G.hand, check the argument cards

hollow horizon
#

THANK YOU SO MUCH

#

Oh I have no idea how long was I trying to work it out

wispy falcon
azure valley
#

Can you share your shader code? Kinda hard to guess otherwise.

#

Is there any way to run a function whenever an instance of a card of a specific type is created? As a constructor sort of function?

wispy falcon
azure valley
#

thanks! I'll take a look at that after I get done trying to help with your thing

gilded goblet
azure valley
# wispy falcon Right, sorry

sorry, I'm not super up with how to hook shaders up to balatro, but I have used shaders before elsewhere, can you help me get this running so I can iterate?

I have

SMODS.Shader {
  key = "smoke_death",
  path = "shaders/smoke_death.fs",
}

and then I picked some cards to add it to and used:

  draw = function(self, card, layer)
    if (layer == 'card' or layer == 'both') and card.sprite_facing == 'front' then
      card.children.center:draw_shader('smoke_death', nil, card.ARGS.send_to_shader)
    end
  end,
#

I'm assuming I'm failing to forward arguments somehow, but I'm not sure which ones

#

and the documentation is not too good on the wiki

#

send_vars?

wispy falcon
#

Oh, I just have it as an edition like this:

    key = "smokeDeath",
    shader = "cstorm_smokeDeath",
}```

and this:

```SMODS.Shader{
    key = "smokeDeath",
    path = "smokeDeath.fs",
}```
azure valley
#

alright!

#

thanks

ivory coral
#

anyone know how to use the new SMODS.Operator? apparently the last update added it and in the process broke my custom one i added using patches and i want to see if i can port it to the new system

#

i cant seem to get the patch method to work again, not sure why

azure valley
# wispy falcon Oh, I just have it as an edition like this: ```SMODS.Edition{ key = "smokeD...

sorry to pester again, I have:

SMODS.Shader {
  key = "smokeDeath_shader",
  path = "smokeDeath.fs",
}

SMODS.Edition{
    key = "smokeDeath_edition",
    shader = "curt_smokeDeath_shader",
}

Where curt_ is the prefix of the skeleton of a mod I happened to be working on at the time. (Doesn't currently contain any shaders or editions to interfere). When I go to look at the editions, it crashes with "smokeDeath_shader" not found, which is odd to me, considering I have it prefixed explicitly. Was this something you ran into?

#

you know what? I'll just make it its own mod rq.

wispy falcon
azure valley
#

it was failing before I renamed it, but I'll change that back

#

it might have been failing for an unrelated reason

wispy falcon
#

I don't know why it would crash otherwise

#

Wait, where did you put the shader file?

azure valley
#

assets/shaders/

wispy falcon
#

Okay, then that is not the reason it crashes

azure valley
#
engine/sprite.lua:109: Shader uniform 'smokeDeath' does not exist.
A common error is to define but not use the variable.
Stack Traceback
#

using your exact definitions

left sonnet
#

Hey gang, anyone know how to centre text with newlines? I'll take a look through the backend but it would save some time if there was a convenient way of doing this

azure valley
#

in a clean mod

ivory coral
muted trout
#

current issue with jimbius is that the joker's mult only updates during a round

wispy falcon
#

Oh and in SMODS.Edition, does the shader still have the modprefix?

azure valley
#
{
    "id": "test-shader",
    "name": "test",
    "author": ["OmnipotentEntity"],
    "description": "test",
    "prefix": "cstorm",
    "main_file": "cstorm.lua",
    "priority": 99,
    "badge_colour": "FFE5B4",
    "badge_text_colour": "A58547",
    "display_name": "cstorm",
    "version": "1.0.0",
    "dependencies": [
        "Steamodded (>=1.*)",
        "Lovely (>=0.6)"
    ],
    "conflicts": [ ],
    "provides": [ ],
    "dump_loc": false
}
left sonnet
#

I don't know what the structure is with updates

azure valley
#

every scored card, every hand card, etc etc.

#

every reroll

muted trout
#

?

azure valley
#

what seems to be going on with my minimod trying to hoist your fs so I can test it, is that the prefix is getting stripped from the shader name for some reason. @wispy falcon

azure valley
# muted trout ?

your calculate code runs any time calculate is called and you're not in context.joker_main or in context.blueprint, this is a LOT. But because you're not returning anything when it does trigger you get no visual feedback of this.

left sonnet
azure valley
#

oh that's true as well lol

left sonnet
#

That said, it should only really be called when either of the variables is detected to have changed

azure valley
#

I think the intention is for it to scale.

muted trout
#

man i have no idea what any of that means but i am going to restructure this anyways

azure valley
#

but maybe not

muted trout
left sonnet
azure valley
#

so if you use one your mult goes down?

muted trout
#

i hope so

azure valley
#

ok

muted trout
#

yes

#

but im going to reformat this anyways because it looks weird and i dont like it

wispy falcon
azure valley
#

maybe we're on different versions of smod and/or lovely

#

let me clean out all of my mods, rq

wispy falcon
#

Do you have the newest version of smods?

azure valley
#

I'm at tag 1.0.0-beta-0827c

wispy falcon
#

Me too

#

Can you send me the test mod please? Then I could try it on my end

azure valley
#

sure

wispy falcon
#

Must be something on your end then

azure valley
#

wonderful

wispy falcon
#

We love technology

azure valley
#

well, it seems that rather than being a help, I am being a nusance, so I'm going to bow out

#

Sorry I couldn't help

wispy falcon
#

It's fine. At least you tried :D

stone dagger
#

Hello, how can I force an update of the game? I have a joker that creates cards at first draw but those cards aren't affected by opposing boss blinds such as "The Head"?

red flower
#

SMODS.recalc_debuff(card)

stone dagger
#

thank you :)

red flower
stone dagger
#

xD maybe I should just read

left sonnet
wispy falcon
#

@azure valley I have good news, I got it to work. All I was missing was float t = smokeDeath.g + time;

faint yacht
#

Huh... so, well, the vanilla Jokers using a "message" for their +chips, +mult, etc values not abiding by my value manipulation may present a problem for my stake idea.

#

Functionally, it works, just not with the popups.

#

-# fuck it, we ball.

flat cypress
#

@wispy falcon try tex.r *= exp2(sin( time variables) );

muted trout
flat cypress
#

if nothing else, it gives a bit of understanding of hlsl shaders

wispy falcon
native bone
#

Whenever I boot the game with my mod,, it gives me that error. I looked at the Mod Metadata page, and the metadata seems fine, so I have no clue what is going on.

flat cypress
# wispy falcon Wait, why does that work?

if I’m understanding the problem correctly, the time variable is doing something weird to make the sine function not work. Trying a sine squared makes it not go negative anymore which sometimes helps

left sonnet
red flower
red flower
left sonnet
#

Yeah sure, 1 sec

native bone
wispy falcon
#

Now I only need to know how to draw a shader on cards that have a specific sticker

azure valley
#

Custom draw function that checks for the sticker and applies the shader if it exists.

left sonnet
native bone
wispy falcon
#

Wait, how do I make a custom draw function? I've never done that before

red flower
left sonnet
#

Oh ye

#

Is there a better way of doing this?

red flower
#

no idea, it should work if you make them two different nodes

left sonnet
#

Will that not make it look more like 2 different sections?

red flower
#

no

#

thats how the entire ui for the game does it everywhere

left sonnet
#

Oh nice, will give it a shot then

faint yacht
#

Jimbo says +4 Mult, yet +8 Mult was applied... I really don't want to hook localize - and that still wouldn't be accounting for an another Joker of mine that modifies the amount in SMODS.calculate_individual_effect...

jolly shadow
faint yacht
#

Testing a run modifier that affects Chips and Mult operations.

jolly shadow
#

also just replace jimbo with a remade version of him that doesnt hardcode the text

#

ez ez

faint yacht
#

I'd need to do that for every Joker that uses message to display their values.

#

...mainly those that trigger off of context.joker_main.

clear ocean
#

i actually no have idea why it isnt appearing

#

Joker? Check! j_PREFIX_id? Check!

native bone
#

Whenever I boot the game, it gives an error that it has no end keyword for the if statement at line 56. I have tried adding additional end statements, but to no avail. I dont know if it's because I'm clueless with Lua and I made the mod in Jokerforge, or if it sint my fault lol.

clear ocean
#

may i have the code i can check with vscode real quick since i know some lua

daring fern
clear ocean
#

maybe have the two card_evals above return

native bone
#

That is what I was thinking

#

I'll try that

native bone
#

I did install that

#

Fixed one problem, got another one. Only thing left to do is to get crackin

feral tree
#

so im making a boss blind that makes it so if a joker triggers there's a one in four chance for it to be debuffed, problem is when a joker gets debuffed it doesnt act like it's debuffed until the next hand, is there a way to stop the joker from triggering once it's debuffed

unkempt bronze
#

The cards looking in this area seemingly aren't functioning at all. (They aren't giving mult when they should)

unkempt bronze
#

nevermind, figured it out

#

nope, my fix wasn't it

solemn shuttle
#

odd request/question but

#

is there a way to move cards from 1 card area to another

#

i think i may know [smods.draw_card... maybe lol] but

frosty rampart
#

yea i'm inclined to agree that it's probably just smods.draw_card
try that first, if that doesn't work uhh look into the Quantify code card from Cryptid (it force-draws a card to your joker slots)

solemn shuttle
#

oo alr then ty lol

glass scaffold
#

How do I check to make sure EVERY card scored is a Heart card?

-# And also, how do I debuff a random Joker every Blind?

wind steppe
frosty rampart
#

as for 2, check Crimson Heart's code in VanillaRemade for how to debuff a random joker and then adapt it for every blind instead of every round

clear ocean
#

sorry i went to go play wii party with my twin brother

#

let me see where i was

#

okay this was the problem it isnt loading the loc file no error and i did put the initialisation in the main file and its isnt that

#

okay wait

#

i am an idiot

#

i spelt it the uk way so it didnt work added back that z

#

how about this?

#

how about this? its based off monopoly property cards

#

not sure if it should be one or two dollars per joker

#

not sure which one would more balanced as a common joker

mild bronze
#

Prob 2 cause even tho golden is $4, rebate can make like $20 so 2 is fine

#

And 1 feels just like another meh econ joker yknow

glass scaffold
#

(pls help.)

versed swan
#

(and context.card_area == G.play)

#

wait no im reading this wrong

#

Okay, got it - v:is_suit("Hearts"), do not target context.other_cards it is nil under context.joker_main

glass scaffold
#

This is REALLY ugly, but it works and that's what I want

lucid owl
#

also add a break the line after heart_in_hand = true so it doesn't keep looping through cards, just for efficiency's sake

#

...i would also remove your message section of the first return, given it's going to do the equivalent automatically and you're calling a localization key that's used for when xmult is added

#

(btw G.C.XMULT doesn't exist... G.C.MULT does)

glass scaffold
#

Alright, almost all of that is noted.

lucid owl
lucid owl
#

when i check if something's in a played hand i use context.before but overall it's pretty much semantics

elfin crater
#

How does one make a new Balatro suit? Been searching online for a way to make one or atleast get help on making one but couldn’t

glass scaffold
#

Well, all that's done and it works.

Now to just figure out how tf to debuff a random Joker.

wind steppe
#

is there a context for when a Joker is destroyed?

lucid owl
#

like, does the debuff go away

#

just curious

glass scaffold
lucid owl
wind steppe
#

oh it triggers on consumables

#

was just about to ask if there was something else for that

#

convenient

lucid owl
#

there's also the contexts for when cards are sold but context.joker_type_destroyed is a catch-all and includes selling

lucid owl
bitter sparrow
#

chat quick question when using malverk how do you make a mod prefix

wind steppe
#

same as you would in a normal mod i think

bitter sparrow
#

Ooooh it's

#

yea

#

ok yea another question but

#

i made the alt texture and texturepack thing but it doesnt show up in the texture list thing malverk has what am i missing?

wind steppe
#

im unfortunately not a malverk expert cant help you there

#

lucky for you theres malverk discussion in modding-chat

bitter sparrow
#

what is evil with this code. .

#

what's so evil with it. .

wind steppe
#

all the images exist right

bitter sparrow
#

yea

wind steppe
#

what are they named

bitter sparrow
#

as it says

#

lim_lc/hc, lor_lc, lor_lc_black

wind steppe
#

hm

#

theres a 1x and 2x version of each?

bitter sparrow
#

yea

#

wah

#

wah

#

ah

#

wait

#

wait hol on

#

the 2x ver isn't 2x'ing

wind steppe
#

by that do you mean it's scaled improperly

#

if the image as a whole is sized incorrectly that could cause issues

bitter sparrow
#

yea

#

ok yea fixed the wrong scaled stuff

#

and yet it still doesnt work

#

same error

wind steppe
#

hm

#

sorry no idea

bitter sparrow
#

OK GOOD NEWS

#

IT WORKS'ISH

#

IT IS NOW RECOGNISED

#

ok turns out i put the wrong thing i should've put rank or something and not base but still

crisp coral
#

G.hand:change_size

gusty prism
#

thanks

wicked leaf
#

how does one make it a joker only appears after you have a certain enhancement

real crown
wicked leaf
#

thanku

daring fern
real crown
#

No problem!

wicked leaf
real crown
#

How can I set force_stickers? None of these work:

            context.card.config.center.force_stickers = true
            context.card.force_stickers = true
            context.card:add_sticker('eternal')```
daring fern
real crown
#

Thank you!

cunning obsidian
#

Hi
Uhh... I'm kind of new to Lua coding and Balatro Modding
I'm getting stuck on something

calculate = function(self, card, context)
        if context.setting_blind then
            return {
                d_size = card.ability.d_size,
                h_size = card.ability.h_size,
                hands = card.ability.hands,
                card = self
            }
        end
-- Surely, this is wrong lol

        if context.cardarea == G.play and context.individual and not context.blueprint then
            return {
                message = localize('k_ace'),
                repetitions = card.ability.repetitions,
                card = self
            }
        end

        if context.joker_main and context.cardarea == G.jokers then
            return {
                message = localize('k_ace'),
                repetitions = card.ability.repetitions,
                card = self
            }
        end
    end

What I'm doing is... A joker that set Hand Size to 1, Set Hand available to 1, Set Discard to 0. And Repeat All Other Joker and card ability 3 more times

The later part can be dealt later, but, how can I change those 3 values first? Like.... What viable to call?

daring fern
#

Also remove the card = selfs.

cunning obsidian
#

Ohhhh I see
Thank you veery much!
I really needed to learn about this lot more than I expected

wicked leaf
#

how do you make custom tooltips? Just in case I want to credit artists/shader creators

hollow horizon
#

I'd like to make joker destroy played aces and kings after scoring. How do I do that?

daring fern
hollow horizon
#

thanks

#

Do I have to put it inside context.after too? Or is it like the default?

plucky berry
#

real quick how do you change card on the title screen background??

real crown
#

How do I check a joker's key? This one's not working, and I've also tried a few other combinations:

if _joker.card.config.center.key == "j_idol" or _joker.card.config.center.key == "j_blueprint" then
...```
daring fern
glossy sky
#

Hey, I wanted to ask if its possible to recalculate the played hand's type during context.before?

glossy sky
#

i am not sure i fully understand, would I for example do context.scoring name = "Straight"? or how exactly would i modify it?

daring fern
long sun
#

how can my blind debuff the top 7 cards of the deck?

daring fern
long sun
#

mhmhmhm

#

effectively the first 7 cards in G.playing_cards

#

[i'd also like to debuff the last 7 cards]

daring fern
long sun
#

oh

#

ohh i see

#

G.deck then?

#

G.deck.cards*

daring fern
long sun
#

ah :/ that's problematic

daring fern
#

You would probably flag the cards in context.setting_blind and check for that.

long sun
#

ahhh okie icic

#

thanks ^u^

hushed field
#

If there's anyone around here that's knowledgeable about how LSP stuff works, I'm trying to figure out why the first image does not seem to get its LSP text on hover-over, but the second does

#

Oh wait, could it just be due to caching?

real crown
#

I'm really bad with understanding how keys can be accessed, how can I make this work?

    SMODS.smart_level_up_hand(nil, G.GAME.hands[context.scoring_name].key, false, -1)
end```
daring fern
real crown
#

Thank you! I thought that was the name not the key

grim stirrup
#

Hi, I want to make a few personal QOL improvements for my PC game, and have a few hopefully basic questions. I'm a Lua noob but an experienced programmer, so that'll be my problem to solve. Just looking for a few pointers and suggestions to help me find my feet after checking out the starter pack. I'd be grateful for references to the source or existing mods. I'm blind, so please no screenshots.

|| 1. I want to add a controler input for toggling the hand sort. For this sort of thing (adding inputs for on-screen controls) is it better to just trigger the on-screen buttons, or call the functions they call? I reckon I can figure out adding entirely new controls if I need to, but just wondering how to plug in to the existing machinery.

  1. Speaking of existing machinery, how much of a mission would it be to get the cursor to snap to the hand buttons? It's a bit fiddly to have to D-pad down from the middle of my hand to focus the buttons properly. However, this is probably a really unoriginal thought, maybe there's a reason. Anyhow, I only want this because I'm putting off...

  2. Eventually I'm gonna add some special inputs for the BlackHole accessibility mod so that it can quickly report some important game information. I know how to do the talking bit and will figure out the controls bit, but the information bit: is there a handy global dict or something with basic variables like ante (number/boss), current blind, current chips, target chips, current gold, etc? Also the current hand, so I can report changes to it, like drawing new cards after a discard?
    ||
    Thanks.

wispy falcon
#

How to draw a shader on cards that have a specific sticker?

real crown
#

Is the id for Ace 1 or 14?

daring fern
real crown
#

Thank you!

red flower
slim ferry
#

use SMODS.DrawStep

real crown
#

Is there an smods function that allows for adding dollars without having to return?

real crown
#

Thank you!

slim ferry
#

anyone know what could cause this crash to happen?

daring fern
slim ferry
#

i have not, i will do that rq

slim ferry
#

it does not show up in the log

#

it does appear that get_current_pool("Enhanced") is generating seals somehow though

hollow horizon
#

That may be a stupid question, but how do I check how many cards were played by current hand for a joker?

red flower
#

#context.full_hand

hollow horizon
#

thanks

red flower
#

should be full hand for played hand sorry

glossy sky
# daring fern No, `context.evaluate_poker_hand`

Hey, I've been trying to make this work. Here's a simplified version of roughly what my code was trying to achieve, but with this structure it causes the hand to update to flush when selecting cards for the next hand, instead of during the current hand. I am not fully sure how context.evaluate_poker_hand works, so sorry if I made an obvious mistake here.

slim ferry
#

speaking of context.full_hand

#

why does it just not work sometimes

#

tried using it in the exact same way as vremade sixth sense but it crashes because context.full_hand is a nil value

red flower
#

wdym

#

it should never be

#

maybe you used it in an event?

slim ferry
#

nope

#

this is the whole code

#

and G.play.cards all used to be context.full_hand but that crashed

red flower
#

weird

#

the only time i had problems with something in a context being nil it was another mod's fault

slim ferry
#

the only real thing i could see breaking it is the hook i have do calculate destroy_card for held in hand cards

#

but i dont change context.full_hand there

#

so that should just work

red flower
glossy sky
# red flower can you explain what the goal is?

i am trying to modify the handtype of a played hand to a different one. (In this example, what it would achieve is that when a hand is played, it becomes a flush, but in the real example this would be conditional of course)

red flower
#

So you don't want it when selecting a hand, just after it's played?

glossy sky
#

yeah, because the joker would modify the hand in context.before and it should then turn the hand type into the correct one pretty much

red flower
#

oh ok, the problem there is that context.before is too late for that

#

try context.press_play

#

if you modify the hand in that context then you wouldnt even need evaluate_poker_hand to make it correct

slim ferry
ocean sinew
#

why the cards are just a empty atlas?

#
SMODS.Atlas{
    key="leaf_hc",
    px=923,
    py=95,
    path="hc_leaf_suit.png",

}
SMODS.Atlas{
    key="leaf_ui",
    px=18,
    py=17,
    path="Leaf Suit_icon.png",
}

SMODS.Suit{
    key="Leaf",
    card_key="Leaf",
    hc_atlas="leaf_hc",
    lc_atlas="leaf_hc",
    hc_ui_atlas="leaf_ui",
    lc_ui_atlas="leaf_ui",
    hc_colour=HEX("fbffd1"),
    lc_colour=HEX("fbffd1"),
    in_pool = function ()
        return false
    end,
    pos={y=0,x=0,},
    ui_pos={x=0,y=0,},
}
glossy sky
slim ferry
#

<@&1133519078540185692>

#

guys no nway he has been succesfuly recieved moeny!!!

#

thanks moderator

hardy vessel
#

Hi, I keep getting this same error with a seal I'm trying to make. It happens before the card is scored and I'm not exactly sure what is causing it.

#

Code here:

SMODS.Seal{
    name = "hch-orange-seal",
    key = "orange-seal",
    badge_colour = HEX("F29015"),
    config = { mult = 5, chips = 20, money = 1, x_mult = 1.5  },
    loc_txt = {
        -- Badge name (displayed on card description when seal is applied)
        label = 'Orange Seal',
        -- Tooltip description
        name = 'Orange Seal',
        text = {
            'Creates a Planet card when played, then is destroyed',
        }
    },
    atlas = "orangeSeal",
    pos = {x=0, y=0},

    -- self - this seal prototype
    -- card - card this seal is applied to
    calculate = function(self, card, context)
        -- main_scoring context is used whenever the card is scored
        if context.destroying_card then
            G.E_MANAGER:add_event(Event({
                trigger = "before",
                delay = 0.0,
                func = function()
                    if G.consumeables.config.card_count < G.consumeables.config.card_limit then
                        local card = create_card("Planet", G.consumeables, nil, nil, nil, nil, nil, "hch_orange")
                        card:add_to_deck()
                        G.consumeables:emplace(card)
                    end
                    return true
                end
            }))
            return true
        end
    end,
}
hollow horizon
#

Where do I check for SMODS.last_hand_oneshot? Putting it in context.after or straight into calculate does nothing for me

wispy falcon
#

How do I draw a shader on the card now?

    key = "death_shader",
    order = 25,
    func = function (card, layer)
        if card.ability.cstorm_death == true then
            
        end
    end
}```
daring fern
wispy falcon
daring fern
clear ocean
wispy falcon
slim ferry
#

<@&1133519078540185692>

grand violet
#

🔫

slim ferry
#

thanks egg

broken rivet
#

is there any weird stuff that could happen from putting EMPTY(context.other_ret) in context.retrigger_joker_check

#

rather than context.post_trigger

slim ferry
#

does context.other_ret even exist there?

broken rivet
#

yes

slim ferry
#

cant imagine anything wierd would happen

broken rivet
#

i have a working joker using that

slim ferry
#

the difference is just that itll only work on the first trigger

#

since thats when retriggers are calculates

broken rivet
#

that's fine

#

it's meant to either retrigger a joker or cause it to fail entirely

#

i guess other joker retrigger effects could break it

slim ferry
#

i mean with other joker retriggers itll just be

#

the first trigger fails and everything else goes through

#

i imagine

lucid owl
#

would the context stack make it possible to check if a joker is the source of a playing card being added to the deck? context.playing_card_added exists but i'd like to only check if a joker is the source, not sure how to go about that

daring fern
slim ferry
#

Could probably use post_trigger too with SMODS.get_previous_context()

lucid owl
daring fern
lucid owl
#

my bad, they seem to be equivalent so i wasn't sure

lucid owl
daring fern
lucid owl
faint yacht
#

Certificate calls playing_card_joker_effects({_card}), which itself calls SMODS.calculate_context({playing_card_added = true, cards = cards})

lucid owl
#

that's a bit annoying

faint yacht
daring fern
lucid owl
#

hmm

#

well this implemenation doesn't work in other cases either (legendary joker that scales when a card is created by specific sources)

#

purple seal didn't scale and neither did judgement

lucid owl
daring fern
#

Also it would be caller.ability.consumeable

lyric wadi
#

is there a table for the key for vanilla enhancements

#

just need a simple check for what enhancement a card has

faint yacht
#

Only such definitions as base, use function below to check for 'em.

daring fern
lyric wadi
lucid owl
daring fern
lucid owl
#

ah, wasn't aware

dapper sun
#

how do i ban a card mid-run?

slim ferry
#

G.GAME.banned_keys.<key> = true

dapper sun
lavish elm
#
can_use = function(self, card)
        return G.consumeables and #G.consumeables.cards < G.consumeables.config.card_limit
    end

so when the consumable is in the consumable slot and it has another consumable with it, it doesn't allow me to use it any fixes?

slim ferry
#

#G.consumeables.cards - 1

lavish elm
#

I tried this but it caused it to be usable inside the shop despite having no slots to generate cards

slim ferry
#

Maybe #G.consumeables.cards - (card.area == G.consumeables and 1) or 0

lavish elm
#

ok I will try this out

#

still unusable

slim ferry
#

Hm

#

Try looking at how vanillaremade does it then

lavish elm
#

it is the one that I posted

lavish elm
pale holly
#
    config = { extra = { numerator = 1, odds = 20}},
    loc_vars = function(self, info_queue, card)
    local new_numerator, new_denominator = SMODS.get_probability_vars(card, card.ability.extra.numerator, card.ability.extra.odds, 'dream')
return {vars = {new_numerator, new_denominator, other_value}}
    end,
    calculate = function(self, card, context)
    if context.end_of_round and context.game_over == false and not context.blueprint  then
    if context.individual and context.cardarea == G.hand and not context.other_card.debuff and SMODS.pseudorandom_probability(card, 'cymbal_remancedream', card.ability.extra.numerator, card.ability.extra.odds, 'dream') then
    local random_edition = poll_edition("cymbal_remancedream", nil, true, true) 
    set_edition(random_edition)
       
        end
    end
   end

trying to make so each card in hand has a 1/20 chance to get a random edition but ithink it's the edition setting part that won't work, any help ?

feral tree
#

how would i detect if someone buys a voucher, any voucher

daring fern
lavish elm
pale holly
#

worth a shot

dapper sun
#

how do i get the card i've highlighted in shops/booster packs?

daring fern
dapper sun
#

does G.shop_jokers include shop boosters and vouchers

daring fern
dapper sun
#

ty

pale holly
lucid owl
daring fern
lyric wadi
#

is it better to use ease_dollars or just returning dollars

daring fern
red flower
lyric wadi
#

can you return negative dollar

red flower
#

yes

lyric wadi
#

pog

daring fern
# pale holly -# bump
if context.individual and context.end_of_round and context.cardarea == G.hand and not context.blueprint and SMODS.pseudorandom_probability(card, 'cymbal_remancedream', card.ability.extra.numerator, card.ability.extra.odds, 'dream') then
    context.other_card:set_edition(poll_edition("cymbal_remancedream", nil, true, true))
end
lucid owl
pale holly
#

Thanks it worked

red flower
red flower
lavish elm
red flower
#

might be a vanillaremade issue

#

check the fool

lavish elm
lyric wadi
#

hello i have a joker that triggers different effect when a specific enhancement is played

what's wrong with this check? it's not triggering in my testing in game

lyric wadi
#

heck

lucid owl
#

you're calling a global value that doesn't exist

lavish elm
lyric wadi
#

so beginner mistake

red flower
#

i fixed the emperor just now

lucid owl
#

anyone with more understanding of SMODS.context_stack know how you could scale a joker when something creates a card?

#

without hardcoding obviously

dapper sun
slim ferry
#

What are you banning

dapper sun
#

tarots

slim ferry
#

Should work

#

Are you using the correct keys

dapper sun
#

stuff like c_death

slim ferry
#

Try running eval print(get_current_pool("Tarot")) with debugplus after banning

dapper sun
#

ok

lyric wadi
#

more question

can i queue multiple return message? like i want the card to show the red add mult popup, then a gold one, then a chip one

#

do you return messages in an array or something or

daring fern
lyric wadi
#

how

#

😭

daring fern
slim ferry
#

Putting an extra table in your return will make it always run after the things outside of it

#

You can also put extra tables inside extra tables

dapper sun
#

after banning a bunch i got this

slim ferry
#

Alr, that looks correct

#

Do any of the banned things still spawn if you spawn in like a charm tag or smth

dapper sun
#

...i'm stupid lmao

slim ferry
#

What

dapper sun
#

strength is the fallback 😭

slim ferry
#

Oh

#

Lmfao

#

Is that fucking loss

gilded goblet
#

its kinda like how jimbor appears right

slim ferry
#

Yes

gilded goblet
#

ough

slim ferry
#

Pretty sure every single pool of centers has a default

lucid owl
snow breach
#

Is there a function that allows you to check whenever a specific joker gets triggered inside of the calculation function? (i.e., Lusty Joker)

red flower
daring fern
lucid owl
#

guess this joker will wait until the next smods release lol

slim ferry
#

Since Enhanced and Edition both have c_base and e_base respectively

#

And then everything else either is a single card (Base) or is a consumable/joker pool

lyric wadi
#

is this correct

#

now i see the gold and blue popup

#

but not the mult one

#

😭

red flower
#

like for editions i actually added it myself on smods to be e_foil

slim ferry
#

Not mult_mod

#

Also you can remove the colours

#

And the card = cards

hushed field
#

Not sure if there's space to add text to indicate that these jokers are ones with matching actors 🤔

snow breach
daring fern
snow breach
#

Wdym?

daring fern
# snow breach Wdym?
SMODS.current_mod.optional_features = function()
    return {
        post_trigger = true,
    }
end
snow breach
#

Where do I put that

#

Oh it works now. Thanks!

placid pelican
#

Any advice on how to make a mod. I have no idea what to do but i have an idea 🙂

placid pelican
#

Thank you 😄

snow breach
slim ferry
#

message_card = card in the return table

#

Iirc

snow breach
#

I really am an idiot.

gilded goblet
#

hy guysee :33333

#

how can i make a card sell itself after a condition is met

daring fern
gilded goblet
#

oh cool im stupid

#

ty

wispy falcon
#

How do I change the name of this challenge?

frosty rampart
wispy falcon
slim ferry
#

it means the name goes in misc.challenge_names

#

in your localization file

frosty rampart
#

you know how in your localization file, at the very top level, you have a descriptions table and a misc table
you make a new "challenge_names" table inside the misc table, and then set challengekey = "something" inside that

wispy falcon
frosty rampart
#

you probably need the mod prefix

wispy falcon
#

Also doesn't work

frosty rampart
#

uhhh go check another mod's localization file that has challenges

#

you have resources

slim ferry
#

it has to be c_modprefix_key

wispy falcon
#

Thank you

slim ferry
#

why does this not add the sticker?

upper sundial
#

How can I check for when a joker gets destroyed (not sold)?

slim ferry
#

context.joker_type_destroyed

upper sundial
upper sundial
jolly shadow
upper sundial
#

happens

jolly shadow
#

me when i apply my sitckers to my card

upper sundial
sturdy compass
#

It does not

slim ferry
#

correct

upper sundial
#

ok nice ty

unkempt bronze
daring fern
wispy falcon
#

How do I check if the player is in a specific challenge?

slim ferry
#

G.GAME.challenge == <key>

upper sundial
#

hmmmm is there a way to attach an invisible cardarea to a joker or something like that

#

the joker metatables aren't being properly saved if I just put them into extra

#

for context, I'm trying to figure out if this is possible without being too cursed

slim ferry
#

probably just put a cardarea somewhere really far ofscreen

slim ferry
#

entropy does something similar for butterfly deck

upper sundial
daring fern
upper sundial
#

Does everything under G get saved with correct metatables?

#

since right now the biggest issue is that those get stripped after a reload

daring fern
upper sundial
#

..well, that's not correct then

daring fern
upper sundial
#

no, because how would I save the joker's state?

daring fern
upper sundial
#

aha

#

ty

upper sundial
daring fern
upper sundial
#

ic, ty

#

thank you for the pointers

last oar
#

Where do I start for making a Joker mod? There's too many links and resources, I can't tell what to start with.

vale grove
#

is there a way to make a joker make a noise when it shows up in a shop or buffoon pack (like an enhancement would such as foil or negative)

daring fern
#

Also those are editions.

vale grove
vale grove
daring fern
vale grove
#

ill see if i can figure my question out myself in a minute

next timber
#

why does my mod's lovely.toml still patch when my mod doesn't load because of missing dependencies?

red flower
#

because smods is too late to prevent patches at that point

next timber
#

useful

frosty dock
#

we could be loading mod data and checking dependencies early enough to do it tbf

#

but smods can't tell lovely what patches to load (yet)

next timber
#

that kinda makes conflicts a pain to use cause if there's a conflict but patches still run and cause an error the user will have to uninstall/add .lovelyignore to a mod by hand instead of just disabling it in game

#

so guess ill remove conflicts for now

frosty dock
#

it could also be worked around by bootlooping which is even more of a pain

frosty dock
#

.lovelyignore being placed should immediately take effect for subsequent files being patched

#

I should see what I can do with that

next timber
#

ok well now my mod is complaining that the dependency isn't there when it is, am i missing something? i put "Blockbuster: Value Manipulation" in my dependencies and on the steammodded mods list in the crash log screen it says "Blockbuster: Value Manipulation" so that should match surely

slim ferry
#

any reason why get_current_pool("Enhanced") would be returning a list of seals instead? its kinda fucking up stuff im doing

frosty dock
next timber
#

ahh ok

tepid crow
#

assume your mod might load partially; it might only load the lovely patches, it might only load the lua part

tepid crow
last oar
frosty dock
tepid crow
#

sadge, I've had to manually implement it in 2 different mods I worked on

brave blade
#

Is there a list somewhere of all CardAreas in the game?

slim ferry
#

not specifically i dont think

#

but off the top of my head its

maiden phoenix
#

Ctrl+shift+F for CardArea( in the source code

daring fern
slim ferry
#

also worth noting that G.I.CARD exists if you just need a list of every single card

brave blade
#

Thank you!

next timber
#

is there like. a better way of doing this? all it does is, if there's a joker next to it that wasn't before it does x2 value manip, and if there was a joker next to it that isn't there anymore it undoes the manip

daring fern
next timber
#

what would be

daring fern
next timber
#

oh right thx

brave blade
#

How do I modify cards in the shop using a deck's calculate function rather than a tag's apply function?

knotty compass
#

hey question how do you check if you are in a blind currently? i need to check it when joker is added during a blind for example through tarot

knotty compass
#

thanks

granite jay
#

How do you get hand size for a joker in balatro?