#💻・modding-dev

1 messages · Page 478 of 1

primal robin
#

Yay, this works

feral tree
#

Is it possible to reroll the 1 in 4 destruction chance of a glass card? trying to make a joker that gains mult every time a glass card scores and loses all of it when a glass card shatters

daring fern
feral tree
#

A joker that retriggers glass cards

wintry solar
#

I have a load of stuff that I need to port into smods that allows for custom small/big blinds and the option to have boss blinds as either of the first two options, I just haven’t got round to it yet.

wintry solar
primal robin
#

Percentages is for one specific card

#

Like pribability to find blueprint, or dna

#

Also it checks for showman or SMODS.showman

#

Not sure which center I should use to repsresent this tab

#

Hone more for editions, idk

midnight hornet
#

is there a complete reference for G? im looking to hook into function to wait for action complete like G.FUNC.go_to_menu()

red flower
#

there's a PR in the smods wiki for some G documentation but not that comprehensive as far as i remember

paper zealot
long sun
#

hiya! i'm trying to fix No Joke's Talisman requirement again

#

what do i need to safeguard?

#

(by that, i mean what do i need to do to_big = to_big or function(x) return x end to?)

daring heron
daring fern
long sun
#

grand :D

#

will try that out

primal robin
#

salty ghost pfp update dt is so low, that's crazy

long sun
#

IKR hold on

#

2 new attacks last night!!

bold gyro
#

how would i get a card.ability.extra value to persist when a joker is changed using card:set_ability(G.P_CENTERS["j..."])?

long sun
daring fern
primal robin
#

Also done, yayyy

primal robin
proper tangle
#

this joker is feeling rather jolly

#

same vibe as "i'm the original Starwalker"

thorn furnace
#

Bump

merry frost
#

I also still need help with this, but I'll be out as I'm in a different time zone. Please @ me if you know the answer

midnight hornet
#

is there a way to run function direcly from debugPlus prompt?

red flower
#

eval function()

bitter portal
#

gughuugh why is it stuck at 10

midnight hornet
upper yoke
#

trying to make a joker that gives Xmult depending on the number of gros michels you have, just looking for tips on how to do this as i literally started learning how to create mods yesterday. I looking for the specific code make this work as the only thing ive tried doing is looking for the abstract joker code and tweaking it so that it only counts it as gros michels rather than all jokers

#

couldnt find it

red flower
bitter portal
#

ooh right

#

good catch

#

ngl i had a feeling that was the issue but i couldnt remember the function name

red flower
upper yoke
#

nice, thanks

bitter portal
#

sorry uh

#

idk why its brokebn

#

no good :(

#

@hushed field

upper yoke
#

I am now having problems with trying to get this to actually work. I'm not entirely sure what I need to do in order to make it apply said xmult but whenever I try to play a hand it crashse the game. Ill attach the code for the joker and the error message if you can try and make sense of this mess

hushed field
bitter portal
#

oh LOL that makes more sense

#

i completley glossed over that syntax

hushed field
#

It's straight up my most made mistake, haha

red flower
hushed field
#

I think I consistently do a no x == x and then run broken code before I realize it should've been x ~= x

upper yoke
#

oh sorry

#

i forgot about that

red flower
#

also this won't gain like the description says

bitter portal
red flower
#

this will give xmult on joker timing

bitter portal
#

oh uh how do i make a joker completley not show up in shops or packs

bitter portal
#

i dont want it showing up in soul either

#

it has its own aquiring method

upper yoke
#

no clue then

red flower
bitter portal
#

thank you

upper yoke
#

the joker timing thing i mean

red flower
upper yoke
#

ok, that's what i intend it to do but i haven't actually set anything up to check how many gros michels are in your jokers

red flower
#

#SMODS.find_card("j_gros_michel") is what does it

upper yoke
#

oh wait im stupid i just need to change value to 1

#

ok ill test it now and if it works then i am indeed stupid for not realising this

bitter portal
#

not me making wierd jokers

#

anyways how do i transform a joker

red flower
#

card:set_ability("j_modprefix_key")

bitter portal
#

oh is it really that simple

red flower
#

yeah

bitter portal
#

okay well, thank you!

upper yoke
red flower
#

im always here to help

bitter portal
#

is this correct?

red flower
#

no P_CENTERS

bitter portal
#

ah yeah.. that makes more sense, Thank you!

upper yoke
#

might need a little assistance trying to get the card to display the current mult it is at in the card description

bitter portal
#

whats the debugplus keybind for winning an blind so i can test this

#

its not in the keys.txt in the mod repo

#

but i heard someone talk about it being a thing

red flower
#

you can press tab and press the button

red flower
upper yoke
#

ah

rotund sable
#

<@&1133519078540185692>

bitter portal
#

huh

#

what happened

#

bot?

rotund sable
#

spam bot

bitter portal
#

ah yeah

#

figured

upper yoke
#

i may have done it wrong

bitter portal
#

oh huh this isnt working, i want it to downgrade immedietly after scoring of the bad hand

#

full code for context

#

nvm i just played the wrong hand

#

im stupid

#

it works thumbs

red flower
bitter portal
#

WTF I SET in_pool = false WHY ARE YOU HERE

red flower
#

it's a function

bitter portal
#

oh

#

it needs to return false

#

i see

red flower
#

yes

bold sleet
#

Hi chat, does anyone know how to change the font these numbers use?

bitter portal
#

wtf

#

oh uh i should probably make this not pluaral at 1 blind uhhhh

#

whats the easiest way to do that

#

i could just like have a var specifically for swapping between those

red flower
#

yeah

#

just make that #2# or something

upper yoke
red flower
#

vars needs to be a table

#

vars = { } and you put stuff inside the brackets

upper yoke
#

OHHH

#

i forgot that sorry that makes sense

bitter portal
#

i forget is this how you do tenary if in lua

red flower
#

yes

bitter portal
#

ok cool

thorn furnace
#

bump dance

bitter portal
#

how do i get the key of the most played poker hand in the run

red flower
#

do what obelisk does

karmic nest
#

so im trying to make a joker that always puts Wheel of Fortune in the shop but every time i go to the shop it sends it to the top and you cant buy it or anything

red flower
#

there isnt a context.area

#

thats for tags

karmic nest
#

so make it nil? or something else?

red flower
#

no, I think the whole syntax doesnt work because tags work differently than jokers in those contexts

#

i dont know what that syntax would be however as i just gave up and made my jokers give tags :3

karmic nest
#

so kinda like diet cola but everytime

red flower
#

yeah, I just made a tag that replaces the next shop item for whatever card i give it

umbral zodiac
#

how do you get a table of all stakes applied in a run

wispy sparrow
#

so i'm trying to make evil blueprint actually work, i got some help with some of the lines that don't work except line 1207, where 'arg' returns a nil value

bitter portal
#

you're missing a comma after the end for calculate and befopre check_for_unlock

wispy sparrow
bitter portal
wispy sparrow
bitter portal
valid leaf
red flower
#

put the rarity below the gradient code

#

test doesnt exist before you declare it

umbral zodiac
wispy sparrow
#

ok wait hang on, i might have found a good place to put a return statement

red flower
#

I don't think anything in that screenshot is correct if I'm honest

wispy sparrow
valid leaf
wispy sparrow
#

at the very least it let me into a blind without crashing

red flower
red flower
umbral zodiac
#

oh i might be stupid 🥀

#

i was searching through the whole workspace to find it assuming it was more difficult because i hadnt found someone who had the same question answered before

wispy sparrow
red flower
#

is that all?

wispy sparrow
#

yeah

red flower
#

let me code it

wispy sparrow
#

one more thing: there is a 1/10 chance to 'forgive' itself and turn into a regular blueprint

wispy sparrow
red flower
#

ignore what i just sent too i noticed a problem :p

red flower
# wispy sparrow at the end of the round

something like this

calculate = function(self, card, context)
    if context.end_of_round and context.game_over == false and context.main_eval and pseudorandom("seed") < G.GAME.probabilities.normal / card.ability.extra.odds2 then
        card:set_ability("j_blueprint")
        return {
            message = "Forgiven"
        }
    end
    local other_joker = nil
    for i = 1, #G.jokers.cards do
        if G.jokers.cards[i] == card then other_joker = G.jokers.cards[i - 1] end
    end
    if other_joker and pseudorandom("seed") < G.GAME.probabilities.normal / card.ability.extra.odds then -- use store the odds in config = {extra = {}}
        return {
            message = "Nope!",
            colour = G.C.RED
        }
    end
    return SMODS.blueprint_effect(card, other_joker, context)
end
#

this will have a problem tho: it will say nope more often than it should

molten relic
#

if context.joker_main and next(context.poker_hands[card.ability.extra.type]) then what does this code mean? i have no idea

red flower
molten relic
#

oooo

#

okay

#

i get it

upper yoke
#

is it possible to add a card enhancement similar to how stone card works? Only difference being that I would like to make it so that it would turn its value into king and kind of make an entirely new suit if possible.

red flower
#

yeah, read the SMODS.Enhancement docs

upper yoke
#

doing so

wispy sparrow
red flower
#

yeah the problem is that it's hard to detect when a blueprint is going to copy another joker without triggering side effects

wispy sparrow
crisp coral
red flower
regal bridge
#

anyone know what's causign this error

#

i've been trying to debug it for 3 days and nothing

red flower
regal bridge
#

main.lua is just an assert thing

upper yoke
#

im not entirely sure what weighting is for cards, my best guess is that it refers to how likely it is to appear as an enhancement but im not sure

regal bridge
#

@red flower

red flower
onyx sonnet
regal bridge
#

still happeninfg

placid star
#

what is the table that determines that draw order of playing cards

upper yoke
red flower
molten relic
#
        return { vars = { card.ability.extra.repetitions, localize(card.ability.extra.type, 'poker_hands' ) } }
    end,
    calculate = function(self, card, context)
        if context.joker_main and next(context.poker_hands[card.ability.extra.type]) then
            return {
                repetitions = card.ability.extra.repetitions
            }
        end
    end,
}```
molten relic
#

is there anything wrong with this code?

#

it crashed as soon as i played a hand

regal bridge
#

alright

#

i'm gonna refacter

#

everything

#

from scratch

red flower
molten relic
#

ill send the crash along with the entire code

#

the code:

#
    name = "The Inner Eye",
    key = "innereye",
    config = {
        extra = {
            repetitions = 1,
            type = 'Three of a Kind'
        }
    },
    loc_txt = {
        ['name'] = 'The Inner Eye',
        ['text'] = {
            [1] = 'If played {C:blue}hand{} contains',
            [2] = 'a {C:attention}Three of a Kind{},',
            [3] = 'retrigger all {C:attention}scored{} cards'
        }
    },
    ```
#
        x = 3,
        y = 0
    },
    cost = 7,
    rarity = 3,
    blueprint_compat = true,
    eternal_compat = true,
    unlocked = true,
    discovered = false,
    atlas = 'CustomJokers',
    
    loc_vars = function(self, info_queue, card)
        return { vars = { card.ability.extra.repetitions, localize(card.ability.extra.type, 'poker_hands' ) } }
    end,```
placid star
# red flower G.deck.cards

and draw_from_deck_to_hand is what draws the cards and that uses draw_card, but i cant tell what determines which card is drawn to hand

molten relic
#

bro why cant i send this

#
        if context.joker_main and next(context.poker_hands[card.ability.extra.type]) then
            return {
                repetitions = card.ability.extra.repetitions
            }
        end
    end,
}```
#

there

#

entire code

#

now the crash

lofty sand
#

is it possible to make any card/multiple cards count as "the first card counted in scoring" so that jokers like photograph and hanging chad can act off of them?

molten relic
#

huh

#

now it doesnt crash

#

but the card doesnt work

#

@red flower

upper yoke
#

how would you make an enhancement that sets a card to a specific rank?

faint yacht
#

Hook get_id and check for said enhancement.

#

Or hook set_ability to change rank on apply.

#

-# Or N's gonna provide a better solution-

red flower
red flower
molten relic
placid star
red flower
lofty sand
molten relic
#

uhm

placid star
molten relic
#

no but id recognize it

red flower
lofty sand
#

cool, thanks

molten relic
red flower
molten relic
#

instead of...?

red flower
red flower
molten relic
#

ok

#

like this?

#

if context.repetition and context.cardarea == G.play and next(context.poker_hands["Three of a Kind"]) then

red flower
#

yes

molten relic
#

ok

#

lets see...

lament agate
#

how do you get suits

#

from played cards

red flower
#

card.base.suit

lament agate
#

thats probably why

regal bridge
#

i have no idea what I did to trigger this

#

but yeah

molten relic
#

it works yay

lofty sand
# molten relic its Labyrinth

this one says it's

"All hands are considered the
first hand of each round,
all discards are considered the
first discard of each round"

Did they change it or smth?

upper yoke
molten relic
#

your message

#

oop

wispy sparrow
#

quick check up with my code for the evil blueprint, it works fine now although a friend of mine says that evil blueprint didn't recieve any specific context whenever something happens so it does it for literally every single context in the game

wispy sparrow
upper yoke
regal bridge
lament agate
#
calculate = function(self, card, context)
        if context.joker_main then
            local suits = {}
            for _, playing_card in ipairs(context.scoring_hand) do
                if not playing_card.debuff then
                    local suit = card.base.suit()
                    if suit and not suits[suit] then
                        suits[suit] = true
                    end
                end
            end

            local suit_count = 0
            for _ in pairs(suits) do
                suit_count = suit_count + 1
            end

            if suit_count == 2 then
                return {
                    xmult = card.ability.extra.xmult
                }
            end
        end
    end
}
#

for some reason it crashes trying to index suit

midnight hornet
#

do you have any suggestions to this workflow?

upper yoke
lament agate
red flower
lament agate
#

Nh, help me

red flower
#

what's up

#

sorry if im slow im in the middle of work stuff

lament agate
red flower
#

card.base.suit is not a function

lament agate
#

oh

#

fuck

#

what do then

red flower
#

also where is suits declared

#

nvm i see it code is hard on phone

red flower
lament agate
regal bridge
#

this is ugly

#

but it works

red flower
red flower
lament agate
#

if it aint broke, dont fix it

red flower
#

oh is it the loc_txt

regal bridge
#

i want to add more than just jokers, and this is an addon to the Pokermon Mod so

rotund sable
#

0,0 is the default

regal bridge
#

oh

#

ight

wispy sparrow
#

is there even a way to make the evil blueprint not spam the console with repetitions

red flower
wispy sparrow
#

wait hang on, there doesn't seem to be any errors when i put it after the check_for_unlock part of the code other than the 3 dots, which i assume i have to put something in there

red flower
#

you replace the return SMODS.blueprint for it

#

the ... should be replaced for what you already have inside the ()

wispy sparrow
#

oh and there's still repetitions and crashes after some time trying to index a nil value again

upper yoke
sonic cedar
#

good slighty-after-noon modding dev

red flower
wispy sparrow
#

after some tinkering i did manage to lower the amount of repetitions but it still crashes

upper yoke
#

at least im assuming you meant enhancement

red flower
#

yeah lol clicked the wrong autocorrect

#

i think that's not very easy to do no

#

i wouldn't recommend it at least

red flower
wispy sparrow
rotund sable
#

why is the check_for_unlock in the calc function

wispy sparrow
red flower
sonic cedar
#

Can you use card_eval_status_text with context.other_card as the target? trying this seems to crash my game

wispy sparrow
upper yoke
# red flower i wouldn't recommend it at least

ok thanks, i think ill just keep my enhancement as a card that does nothing, i am planning on trying to add a joker that gives mult based on how many of that enhanced card are in the deck

regal bridge
#

anyone know how to fix this

wispy sparrow
red flower
#

replace args type for args and args.type

wispy sparrow
#

but it still doesn't copy the joker to the left

#

maybe if i add blueprint's config line into evil blueprints?

regal bridge
#

can anyone figure out why the in game text displays for powerband bur not for goldribbon

wispy sparrow
#

even after all of that it still doesn't copy the joker to the left and i have no idea why


    loc_vars = function(self, info_queue, card)
        local other_joker
        for i = 1, #G.jokers.cards do
            if G.jokers.cards[i] == card then other_joker = G.jokers.cards[i - 1] end
        end
        local compatible = other_joker and other_joker ~= card and other_joker.config.center.blueprint_compat
        main_end = (card.area and card.area == G.jokers) and {
            {
                n = G.UIT.C,
                nodes = {
                    {
                        n = G.UIT.C,
                        config = { ref_table = card, align = "m", colour = compatible and mix_colours(G.C.GREEN, G.C.JOKER_GREY, 0.8) or mix_colours(G.C.RED, G.C.JOKER_GREY, 0.8), r = 0.05, padding = 0.06 },
                        nodes = {
                            { n = G.UIT.T, config = { text = ' ' .. localize('k_' .. (compatible and 'compatible' or 'incompatible')) .. ' ', colour = G.C.UI.TEXT_LIGHT, scale = 0.32 * 0.8 } },
                        }
                    }
                }
            }
        } or nil
        return { main_end = main_end }
    end,

    calculate = function(self, card, context)
        local other_joker = nil
        for i = 1, #G.jokers.cards do
            if G.jokers.cards[i] == card then other_joker = G.jokers.cards[i - 1] end
        end
        if pseudorandom('seed') < G.GAME.probabilities.normal / card.ability.extra.odds then
            return {
                message = "Nope!",
                colour = G.C.RED
            }
        else
            local ret = SMODS.blueprint_effect(card, other_joker, context)
            if ret then
                return ret
            end
        end```
sonic cedar
#

why is the blueprint effect in a ret

#

instead of just return SMODS.blueprint_effect(card, other_joker, context) i mean

sonic cedar
#

ohhh i see

wispy sparrow
#

regardless the evil blueprint doesn't blueprint

sonic cedar
#

try putting the for loop within the else statement?

#

something like

wispy sparrow
# sonic cedar something like

at a glance, this could probably really help getting rid of the repetitions i've been getting spammed in the console

sonic cedar
#

did it work or you havent tested yet

wispy sparrow
#

oop nevermind, it crashed trying to index blueprint as a nil value

sonic cedar
#

send?

wispy sparrow
sonic cedar
wispy sparrow
#

oh fuck my bad

sonic cedar
#

lmao

wispy sparrow
#

another case of me making a typo

sonic cedar
#

all good

#

does it work now?

wispy sparrow
#

different crash this time

sonic cedar
#

it's a table

#

you use []

#

why did you even change it actually it was fine before

#

that looks to be the only other thing though

lament agate
wispy sparrow
red flower
lament agate
sonic cedar
#

hi nxkoo

graceful vapor
sonic cedar
karmic nest
#

how do you make a tag

sonic cedar
red flower
sonic cedar
karmic nest
red flower
modern kindle
#

👋

red flower
#

hi dilliard

modern kindle
#

Hi N

#

How are you bestie westie

red flower
#

honestly today im feeling really good

modern kindle
#

Hell yea

red flower
#

wbu did you get your money back

foggy ginkgo
modern kindle
#

This mf was 518 bucks

wispy sparrow
sonic cedar
#

i almost missed dilly hi dilly

modern kindle
#

Hi hi

#

How are you

wispy sparrow
# sonic cedar can you send a ss of your locvars
        local other_joker
        for i = 1, #G.jokers.cards do
            if G.jokers.cards[i] == card then other_joker = G.jokers.cards[i - 1] end
        end
        local compatible = other_joker and other_joker ~= card and other_joker.config.center.blueprint_compat
        main_end = (card.area and card.area == G.jokers) and {
            {
                n = G.UIT.C,
                nodes = {
                    {
                        n = G.UIT.C,
                        config = { ref_table = card, align = "m", colour = compatible and mix_colours(G.C.GREEN, G.C.JOKER_GREY, 0.8) or mix_colours(G.C.RED, G.C.JOKER_GREY, 0.8), r = 0.05, padding = 0.06 },
                        nodes = {
                            { n = G.UIT.T, config = { text = ' ' .. localize('k_' .. (compatible and 'compatible' or 'incompatible')) .. ' ', colour = G.C.UI.TEXT_LIGHT, scale = 0.32 * 0.8 } },
                        }
                    }
                }
            }
        } or nil
        return { main_end = main_end }
    end,

    calculate = function(self, card, context)
        local other_joker = nil
        for i = 1, #G.jokers.cards do
            if G.jokers.cards[i] == card then other_joker = G.jokers.cards[i - 1] end
        end
        if pseudorandom('seed') < G.GAME.probabilities.normal / card.ability.extra.odds then
            return {
                message = "Nope!",
                colour = G.C.RED
            }
        else
            local ret = SMODS.blueprint_effect(card, other_joker, context)
            for i = 1, #G.jokers.cards do
                if G.jokers.cards[i] == card then other_joker = G.jokers.cards[i - 1] end
            end
            if ret then return ret end
        end```
#

it's literally just blueprint but copies the opposide direction

sonic cedar
valid leaf
#

is there a way to change how much a specific card appears in the shop?

karmic nest
red flower
#

wait no sorry

#

tag_[your mod's prefix]_tag_wof

#

you dont need to add tag to the key manually

karmic nest
#

just tried and nothing showed up

red flower
#

can i see

valid leaf
# red flower not easily no

currently I have a separate type of consumable to change that, but it would cause problems if I wanted to add another consumable of the same type that appears more frequently, is there another way?

karmic nest
#

like the game or the code

#

becuase the tag never showed up

wispy sparrow
#

honestly, i'm pretty lost as to where exactly to return the main_end vars

red flower
#

you would have to rewrite it (i have)

red flower
sonic cedar
#

or whatever your vars in config are

wispy sparrow
sonic cedar
karmic nest
sonic cedar
modern kindle
sonic cedar
#

thatd be sick

red flower
valid leaf
karmic nest
red flower
tawdry oriole
#

would next(context.poker_hands['Royal Flush']) work to find if played hand is a royal flush?

urban wasp
#

why isn't this giving xchips? everything else works though

...
                return {
                    message = "X" .. number_format(lenient_bignum(card.ability.extra.xchipsmult)) .. " Chips and Mult",
                    sound = "crp_multiplicativechipsmult",
                    xchips = lenient_bignum(card.ability.extra.xchipsmult),
                    xmult = lenient_bignum(card.ability.extra.xchipsmult),
                    remove_default_message = true,
                    colour = { 0.8, 0.45, 0.85, 1 } -- plasma deck colors
                }
...
wispy sparrow
#

okay i'm probably gonna assume that i have to put 'hold' into the quotations, not sure though

red flower
sonic cedar
karmic nest
tawdry oriole
sonic cedar
red flower
karmic nest
#

i think i know whats wrong one sec

midnight hornet
red flower
red flower
#

BUT this works when selecting a card too

tawdry oriole
#

ohh okay

wispy sparrow
red flower
#

so you need to check if it's being played

tawdry oriole
#

alright thanks

sonic cedar
karmic nest
#

heres my little royal flush tracker

wispy sparrow
urban wasp
wispy sparrow
#

for some more clarity, here's the config of evil blueprint

#

maybe i missed 2 variables?

sonic cedar
#

...what are those for exactly...?

wispy sparrow
sonic cedar
#

no not those

#

the ones that already get returned in main end

urban wasp
wispy sparrow
sonic cedar
#

why did you take them out

wispy sparrow
#

honestly, i was unsure if there was a conflict between the config of the joker and the config of main end

sonic cedar
#

they are two different things

#

main_end needs a config for the ui

#

joker needs a config for... well the joker

wispy sparrow
sonic cedar
#

regular blueprint doesnt need one because it doesnt have its own effect, it's just copying everyone else

urban wasp
red flower
#

yeah the problem is the nope message

#

honestly, I would remove it

sonic cedar
#

same

wispy sparrow
#

but how am i supposed to implement the mechanic that it has a 1/5 chance to not do anything

sonic cedar
#

just

#

dont do anything

#

?

red flower
#

yeah instead of a message it just does nothing haha

wispy sparrow
red flower
#

yeah

sonic cedar
#

but thisll work

wispy sparrow
sonic cedar
#

unlucky

urban wasp
red flower
sonic cedar
wispy sparrow
red flower
wispy sparrow
#

considering it can proc multiple times i'm using that to test evil blueprint, i made that joker by the way

red flower
#

did you try with another joker

wispy sparrow
red flower
#

hmm i cant watch videos rn sadly

sonic cedar
urban wasp
# sonic cedar

this doesn't really help, still unsure what the issue is

sonic cedar
urban wasp
#

still didn't work

wispy sparrow
#

wait hold the fuck on

sonic cedar
#

it's like you screwed up your code somewhere or something.... /s /lh

sonic cedar
urban wasp
sonic cedar
#

oml

urban wasp
#

i probably just didn't save the file accidentally when i tested it like 10 mins ago

sonic cedar
#

yeah that'll do it

faint yacht
#

-# Damn, so the probability change kinda broke Virtual PC's chance check... to the point that game hard crashes due to an infinite loop.

red flower
faint yacht
#
INFO - [G] 1    table: 0x3aec3340    main_eval: true
buying_card: true
cardarea: table
card: table

INFO - [G] 1    table: 0x3aec3340    main_eval: true
mod_probability: true
denominator: 15
cardarea: table
numerator: 1

...

The 2nd one repeats on and on until game bails.

red flower
#

looking at SMODS code mod_probability and fix_probability are just banned from retriggers

#

so you could probably do the same

faint yacht
#

I'd assume copying is also not allowed... 'cause Virtual PC's trying to copy anything besides being copied.

sonic cedar
#

please..... someone.... why does the face card xmult gain trigger twice.... do i have to do the squareroot trick again or can it be fixed

wispy sparrow
#

okay wait hang on

#

the joker i was testing evil blueprint with doesn't work with og blueprint for some reason

faint yacht
wispy sparrow
sonic cedar
wispy sparrow
sonic cedar
#

tin

wispy sparrow
#

oh my god

sonic cedar
#

tin im going to get you

sonic cedar
wispy sparrow
#

i'm such an idiot

sonic cedar
#

it happens

red flower
pure salmon
#

how would i do the effect of this return table in the event?

red flower
#

SMODS.calculate_effect([table here], card)

sonic cedar
pure salmon
#

oh that's what that does

#

helpful to know

sonic cedar
#

example with one of mine

red flower
#

calculate_effect does everything a return table does except sometimes not

sonic cedar
#

except when it doesnt

red flower
#

but i recommend it for messages

sonic cedar
#

same

faint yacht
#

That's better... and no hiccups when hovered over.

INFO - [G] 1    table: 0x1e79bfa0       main_eval: true
buying_card: true
cardarea: table
card: table

INFO - [G] 2    table: 0x1e7a6f60       main_eval: true
buying_card: true
cardarea: table
card: table

INFO - [G] 3    table: 0x1e7b2518       main_eval: true
buying_card: true
cardarea: table
card: table

INFO - [G] nil
INFO - [G] 4    table: 0x1e7bdae8       main_eval: true
card: table
buying_card: true
cardarea: table

INFO - [G] 5    table: 0x1e7c90b8       main_eval: true
card: table
buying_card: true
cardarea: table

INFO - [G] 6    table: 0x1d838458       main_eval: true
card: table
buying_card: true
cardarea: table

INFO - [G] 1    table: 0x1e79bfa0       buying_card: true
card: table
buying_self: true

INFO - [G] 2    table: 0x1e7a6f60       buying_card: true
card: table
buying_self: true

INFO - [G] 3    table: 0x1e7b2518       buying_card: true
card: table
buying_self: true

INFO - [G] 4    table: 0x1e7bdae8       buying_card: true
card: table
buying_self: true

INFO - [G] 5    table: 0x1e7c90b8       buying_card: true
card: table
buying_self: true

INFO - [G] 6    table: 0x1d838458       buying_card: true
card: table
buying_self: true
sonic cedar
#

now we're getting somewhere

#

has this dropped or still indev
(the new prob i mean)

faint yacht
#

Mine? Still testing locally... and, as this works, that's done... just that I'd also want to clean up the effect merging as it was made before the merge function was added.

sonic cedar
#

ohhh i thought this was the smods probability thing they were working on nvm nvm

red flower
#

release this week probably according to eremel

sonic cedar
#

then i have time

faint yacht
#

Yeah, had to change to if context and not (context.mod_probability or context.fix_probability or context.check_enhancement or context.no_blueprint) then being the main check.

sonic cedar
#

i see i see

faint yacht
#

-# Though I may need to invert for context.no_blueprint, oops.

red flower
wispy sparrow
#

now i gotta check if the forgive mechanic it has works

placid star
#

is there a way to do a counter loop in reverse? e.g 14 to 1. its not liking for i = 1, 14 do

primal robin
#

local j = 14 - i

red flower
#

for i = 14, 1, -1

primal robin
sonic cedar
#

i like how the answer was just "go down"

red flower
sonic cedar
red flower
sonic cedar
#

xmult gain triggering twice

faint yacht
#

I'll need to figure out the merge function.

red flower
#

i made it so if you have any questions

sonic cedar
#

oh my god it's john... mergefunction?

red flower
#

they call me that yes

sonic cedar
#

nice

faint yacht
#

Eventually, currently outside.

sonic cedar
#

why did

red flower
#

i cant watch videos anyway

sonic cedar
sonic cedar
faint yacht
#

But I just need to merge effects of all Jokers - Virtual PC copies every compatible Joker, after all.

placid star
#

why does my vs hate this?

red flower
#

you cant declare and assign at the same time

sonic cedar
#

where is cards being declared

red flower
#

or whatever the words are

sonic cedar
#

how is vs supposed to know that it even exists if you dont declare it

#

(example: ranks in the same image)

placid star
red flower
#

local cards = {}

placid star
#

ty ty!

sonic cedar
#

n can you help with my infoqueue returning only blank error

#

i forgot the image

wispy sparrow
#

now i know that the forgiven mechanic works

sonic cedar
red flower
sonic cedar
red flower
#

also im about to get out of work so i might take a bit to respond

red flower
sonic cedar
#

got it

#

hell yeah thanks

#

why does stencil's info_queue return a Currently Xnil?

#

thinking it's probably because of the joker not having its detection setup, just the effect

#

no idea why giving him marble joker effect makes it give 2 stone cards though

wispy sparrow
daring fern
wispy sparrow
daring fern
#

G.jokers doesn't exist then.

wispy sparrow
faint yacht
#

Check for G.jokers existing first.

wispy sparrow
faint yacht
#

If G.jokers exists, do stuff.

wispy sparrow
#

i'm not sure if this would work or not

#

minus the fact that i fucking made a typo again

faint yacht
#
loc_vars = function(self, info_queue, card)
  if G.jokers then
    -- do stuff here.
  end
end
wispy sparrow
sonic cedar
#

oh ok
is that also why it doesnt detect slots on the actual mult trigger, or is that something im supposed to add to the ijiraq myself?

#

as in it always gives x1

red flower
#

uhh no idea sorry i dont touch vanilla jokers

sonic cedar
#

you touched all of them 😭

#

but im messing ur good

red flower
#

yeah but like

sonic cedar
#

i can just do what i did for golden joker not working probably

placid star
#

say i have a for loop with this table, if i wanted to start at a random element then go in order e.g. Clubs, Diamonds, Spades, Hearts how could i do that with the wrapping aroud... if that makes any sense...

faint yacht
#
if not suits[#suits+1] then var = suits[1] end
#

@red flower, noted the pinging message?

red flower
#

yeah but ill read the code when im home

faint yacht
#

👍 Ping whenever.

molten relic
#

i have this idea for a joker right

#

add xmult equal to half of the lowest played cards rank

#

but then do i even put anything in config?

rotund sable
#

config can be empty

molten relic
#

and is loc_vars then empty aswell?

#

because thats like bout config is it not

thorn furnace
rotund sable
#

also info queues

molten relic
#

im really bad at this

rotund sable
#

which is the bonus window when hovering over something

rotund sable
urban wasp
#

why does this crash happen and how can i fix it?

SMODS.Stake {
    key = "stencil",
    applied_stakes = { "cry_square" },
    atlas = "crp_stake",
    pos = { x = 2, y = 0 },
    shiny = true,
    colour = HEX("bccacc"),
    modifiers = function()
        G.jokers.config.card_limit = G.jokers.config.card.limit - 1
    end,
    crp_credits = {
        idea = { "Unknown" },
        art = { "Grahkon" },
        code = { "wilfredlam0418", "Glitchkat10" }
    }
}
daring fern
urban wasp
# daring fern Try putting it in an event.

like this?

...
    modifiers = function()
        G.E_MANAGER:add_event(Event({
            trigger = 'after',
            delay = 0.1,
            func = function()
                G.jokers.config.card_limit = G.jokers.config.card.limit - 1
            end
        }))
    end,
...
#

nope 😭

molten relic
daring fern
rotund sable
molten relic
#

is that what loc_vars is for?

red flower
#

yes

molten relic
#

oh yeah i guess so

red flower
#

you can have no loc_vars if your description doesn't change at all

molten relic
#

what jokers should i peek at to kinda learn how to make that effect

#

raised fist?

rotund sable
#

Probably

red flower
#

raised fist but for G.play instead of G.hand

molten relic
#

ok

#

oh shit YOU MADE vanillaremade?

#

damn

red flower
molten relic
#

what does this mean

#

local temp_Mult, temp_ID = 15, 15

red flower
#

it's initializing two variables at the same time

#

i usually dont do it like that but i copied it from vanilla

molten relic
#

yeah but should i copy that?

#

with Xmult?

red flower
#

yeah i would cooy the same thing and then divide it by half instead of multiplying it

molten relic
#

but also copy temp_Mult

red flower
#

15 is higher than any rank in vanilla so it's just initializing them to a high value

molten relic
#

or make it like idk temp_xmult

red flower
#

the name doesn't matter there

molten relic
#

oh ok

red flower
#

only the return at the end

molten relic
#

whar?

red flower
molten relic
#

oh yeah i wasnt there yet

#

do i have to replace every instance of g.hand with g.play?

urban wasp
#
SMODS.Stake {
    key = "stencil",
    applied_stakes = { "crp_square" },
    atlas = "crp_stake",
    pos = { x = 2, y = 0 },
    shiny = true,
    colour = HEX("bccacc"),
    modifiers = function()
        G.E_MANAGER:add_event(Event({
            func = function()
                if not G.jokers then 
                    return false
                end
                G.jokers.config.card_limit = G.jokers.config.card_limit - 1
            end
        }))
    end,
    crp_credits = {
        idea = { "Unknown" },
        art = { "Grahkon" },
        code = { "wilfredlam0418" }
    }
}
#

we are not recovering

daring fern
urban wasp
#

ah okay

thorn furnace
#

For some reason I get this error at the end of round when my health goes down (thanks to joker in third screenshot)
Though when I change my health manually (via the console) it works fine, so I'm not sure what is happening here

molten relic
#

if not all played cards score, it does nothing

#

does g.score exist?

urban wasp
# daring fern You need to return `true` at the end.

okay my last issue is that the stake that stencil stake applies also tries to apply ascendant stake from cryptid, but it just doesn't

SMODS.Stake {
    key = "square",
    applied_stakes = { "cry_ascendant" },
    atlas = "crp_stake",
    pos = { x = 0, y = 0 },
    shiny = true,
    modifiers = function()
        G.E_MANAGER:add_event(Event({
            func = function()
                if not G.hand then 
                    return false
                end
                G.hand.config.highlighted_limit = G.hand.config.highlighted_limit - 1
                return true
            end
        }))
    end,
    crp_credits = {
        idea = { "Unknown" },
        code = { "wilfredlam0418" }
    }
}
#

(it applying ascendant stake in specific is placeholder rn btw; i wouldn't be THAT horrible)

red flower
molten relic
#

so replace g.play with that?

red flower
#

yes except the context.cardarea if you have that

molten relic
#

i have that yeah

#

line 224:

#

for i = 1, #context.scoring_hand.cards do

red flower
#

oh yeah, remove all the .cards

#

context.scoring_hand is already the list of cards

haughty cargo
#

where is the ancient joker suit value stored?

red flower
#

G.GAME.current_round.ancient_card.suit
if im not mistaken

#

im looking at vremade so maybe i changed the name

copper thorn
#

i need help again, my joker doesn't trigger it should randomly give between 1 and 20 $

SMODS.Joker{
    key = "yoz",
    loc_txt = {
        name = "{C:diamonds}Y{C:attention}o{C:money}z{C:white}a{C:legendary}r{C:legendary}i{C:purple}e",
        text = {
            "Gives randomly between {C:money}1-20$",
        }
    },
    atlas = "CO",
    soul_pos = {x = 0, y = 1},
    rarity = 4,
    pos = { x = 0, y = 0},
    cost = 20,
    unlocked = true,
    discovered = true,
    blueprint_compat = true,
    eternal_compat = true,
    perishable_compat = true,
    config = { extra = { max = 20, min = 1 } },
    loc_vars = function(self, info_queue, card)
        local r_mults = {}
        for i = card.ability.extra.min, card.ability.extra.max do
            r_mults[#r_mults + 1] = tostring(i)
        end

    calculate = function(self, card, context)
        if context.joker_main then
            return {
                money_gain = pseudorandom(card.ability.extra.min, card.ability.extra.max)
            }
        end
    end
end
}```
molten relic
#

god bless you man

#

i could NOT do this by myself

scarlet imp
#

N' the goat frl

ivory coral
red flower
#

also pseudorandom needs a seed as the first argument

copper thorn
#

f#ck

#

like this ?

molten relic
#

spongebob me boy

haughty cargo
copper thorn
rotund sable
#

i done it like mail-in rebate but instead of discard when hand played

#
if context.joker_main and not context.blueprint then
    G.GAME.dollar_buffer = (G.GAME.dollar_buffer or 0) + card.ability.extra.dollars
    return {
        dollars = card.ability.extra.dollars,
        func = function() -- This is for timing purposes, it runs after the dollar manipulation
            G.E_MANAGER:add_event(Event({
                func = function()
                    G.GAME.dollar_buffer = 0
                    return true
                end
            }))
        end
    }
end
daring fern
copper thorn
#

yeah

daring fern
copper thorn
#
SMODS.Joker{
    key = "yoz",
    loc_txt = {
        name = "{C:diamonds}Y{C:attention}o{C:money}z{C:white}a{C:legendary}r{C:legendary}i{C:purple}e",
        text = {
            "Gives randomly between {C:money}1-20$",
        }
    },
    atlas = "CO",
    soul_pos = {x = 0, y = 1},
    rarity = 4,
    pos = { x = 0, y = 0},
    cost = 20,
    unlocked = true,
    discovered = true,
    blueprint_compat = true,
    eternal_compat = true,
    perishable_compat = true,
    config = { extra = { max = 20, min = 1 } },
    loc_vars = function(self, info_queue, card)
        local r_mults = {}
        for i = card.ability.extra.min, card.ability.extra.max do
            r_mults[#r_mults + 1] = tostring(i)
        end

    calculate = function(self, card, context)
        if context.joker_main then
            return {
                dollars = pseudorandom('moneymeboy', card.ability.extra.min, card.ability.extra.max)
            }
        end
    end
end
}```
ivory coral
tawdry oriole
#

is there any mod similar to talisman that is capable to go past naneinf?

tawdry oriole
#

i'd like to have a way to go past naneinf without talisman (=my mod's incompatible with it)

urban wasp
#

-# why is your mod incompatible with talisman in the first place

copper thorn
red flower
ivory coral
tawdry oriole
#

alrighty

#

well i'm gonna try with talisman then

copper thorn
ivory coral
# tawdry oriole (no clue)

most likely reason is because your mod doesnt account for talisman bignum tables
if you get an error along the lines of "attempt to compare number with table" this is why and its quite fixable

faint yacht
sonic cedar
#

is there a draw version of context.discard or is that drawing_cards

red flower
#

context.hand_drawn

sonic cedar
#

see but that's the hand

red flower
#

drawing_cards is before drawing

sonic cedar
#

discard is per card

red flower
#

oh, no there isnt

tawdry oriole
sonic cedar
daring fern
red flower
sonic cedar
red flower
#

why

sonic cedar
#

because it's counting per card drawn

pure salmon
#

how do i change the played hand by a custom amount of levels instead of just putting level_up = true in my return table to get 1 level

red flower
sonic cedar
#

what

pure salmon
#

oh

red flower
# sonic cedar what

context.hand_drawn is a list of the cards drawn, if you want a message for each you can even do a chain of extra tables in the return

pure salmon
#

wait you can do that

ivory coral
#

if thats the issue youre running into then you can use talisman's to_number() function
talisman changes some internal values to be special tables instead of normal nubers so the function converts them into numbers you can work with
so for any variable that is causing a crash because its attempting to compare with table or something similar wrap it in a to_number() and it should work
also make sure to put to_number = to_number or function(x) return x end in your code to make it work without talisman too

ivory coral
sonic cedar
ivory coral
#

which isnt useful here

red flower
faint yacht
sonic cedar
#

oh awesome

ivory coral
#

if youre trying to get a number value to perform arithmetic or comparisons you wouldnt want a bignum table though wouldnt you

red flower
ivory coral
urban wasp
#

-# (the word is bump)

daring fern
idle plaza
red flower
ivory coral
red flower
#

totally forgot what the number limit was im not a real balatrohead

scarlet imp
#

how do I transform one card into another card? Like I want to have a reroll mechanic for cards, but as of right now all it does is add cards into the cardarea I'm rerolling, rather than "changing" the card

red flower
#

card:set_ability("the other key")

scarlet imp
#

ok I'll try that

red flower
#

didnt i suggest that to you

#

maybe i did in my head

scarlet imp
#

I got it to work with add_card() since before it was just the shop, I needed to delete the cards anyway

#

But now I wanna do it with G.jokers so I can't delete the cards

red flower
#

yeah that should work

scarlet imp
#

alright sick

urban wasp
void sparrow
#

question:

is it posible to make a joker that gives xmult the value of the numbers of e's in final score?

urban wasp
hardy viper
#

uhh

#

you can just make a joker that does nothing

#

because that would be incredibly redundant

urban wasp
hardy viper
#

hey thats ^^^mult not xmult

tawdry oriole
#

😭

urban wasp
#

yeah but also like same question

hardy viper
#

i dont know the answer

void sparrow
#

thats just what i wanted to know because if its possible for ^^^Mult it would also be able for xmult

hardy viper
#

theres a nice fancy mathematical way to do it that doesnt involve the actual displayed score

#

but idk it

#

ask one of the math freaks around here

#

theyre not freaks

#

theyre freaky about math

urban wasp
#

nah we're all freaks 😭

hardy viper
#

im no freak

urban wasp
#

nope i insist

hardy viper
#

damn

#

💔

urban wasp
#

🥀

#

alright then fine

hardy viper
#

omg

#

i hate that

tawdry oriole
#

ts full house 🥀 💔

urban wasp
#

was that chocolate milk

hardy viper
#

i keep forgetting

faint yacht
#

Something something store the score in variable, then repeatedly divide by 10 and increase an another temporary variable that will technically hold the e... then subtract minimum amount of es that the game will display. 🤔

urban wasp
#

there it is

urban wasp
median veldt
#

bump

red flower
# median veldt bump

tested it, it kinda works but the problem is that the hand played has the count updated before it reaches your code

#

you might want to do a - 1

median veldt
#

how so?

red flower
#

else you would need to play all hands once before any hand counts as the least played

median veldt
#

for me it's not working at all

#

even after adding that

red flower
#

no idea then, i did remove all the emult stuff

median veldt
#

as you can see i have played two high cards

#

so i will now play a pair

#

it just doesnt upgrade

#

lemme change it up a lil and try smth

#

ok i tried doing context.before and it still didn't work

red flower
#

can i see how the code looks now

median veldt
#
calculate = function(self, card, context)
    if context.before and context.cardarea == G.play then
        local current_played = G.GAME.hands[context.scoring_name].played or 0
        return {
            message = current_played,
            colour = G.C.DARK_EDITION,
        }
        -- if (function()
        --     local current_played = G.GAME.hands[context.scoring_name].played or 0
        --     for handname, values in pairs(G.GAME.hands) do
        --         if handname ~= context.scoring_name and values.played < current_played and values.visible then
        --             return false
        --         end
        --     end
        --     return true
        -- end)() then
        --     card.ability.extra.emult = card.ability.extra.emult + card.ability.extra.gain
        --     return {
        --         message = localize('k_upgrade_ex'),
        --         colour = G.C.DARK_EDITION,
        --     }
        -- end
    end
    if context.joker_main then
        return {
            remove_default_message = true,
            message = localize({type = "variable", key = "a_emult", vars = {card.ability.extra.emult}}),
            colour = G.C.DARK_EDITION,
            mult = (mult ^ card.ability.extra.emult) - mult
        }
    end
end
#

i changed it to the current_played thing just to test

#

and it's not even showing THAT

red flower
#

the cardarea check is not needed

median veldt
#

oh

#

still tho

red flower
#

did you do the - 1 thing

pure salmon
#

how do i get the level of the played poker hand?

red flower
#

.level instead of .played

pure salmon
#

yeah that tracks

#

man after 0.7 maybe i should try writing some smods docs

#

i would sure as hell use them

red flower
#

yeah we lack vanilla docs very badly

median veldt
#

either way tho it's still not working

red flower
#

i think it updates it even before that

median veldt
#

if i try my test code i get

#

it i use the commented out code it just

#

still doesnt upgrade

red flower
#

i will send you the exact code i tested give me a sec

#

this

if context.joker_main then
            if (function()
                    local current_played = G.GAME.hands[context.scoring_name].played and
                    G.GAME.hands[context.scoring_name].played - 1 or 0
                    for handname, values in pairs(G.GAME.hands) do
                        if handname ~= context.scoring_name and values.played < current_played and values.visible then
                            return false
                        end
                    end
                    return true
                end)() then
                return {
                    message = localize('k_upgrade_ex'),
                    colour = G.C.DARK_EDITION,
                }
            end
            return {
                message = "fail"
            }
        end
median veldt
#

okay THAT worked thank you

#

i had just replaced the first G.GAME.hands[context.scoring_name].played with G.GAME.hands[context.scoring_name].played - 1 instead of having BOTH

scarlet imp
# red flower card:set_ability("the other key")

I've been trying to get this to work, and is there a way I can generate a random Joker from a certain pool? because I don't wanna have to go and define tons of custom item pools manually

red flower
thorn furnace
#

I do

#

I tried changing the variables to to_big but that didn't change anything

#

So i just undid it

red flower
#

you need the opposite there, to_number

thorn furnace
#

Oh

scarlet imp
thorn furnace
#

Thank uuu, it works perfectly

#

There is one final thing but it's significantly more minor
that being that in the script there i have the return statement that's like

return {
  message = localize('k_saved_ex'),
  saved = 'ph_health',
  colour = G.C.RED
}

I know normally instead of ph_health it's ph_bones

#

Where is that stored
I tried looking in localization in vanilla_remade but idk if it's just somewhere I haven't looked or smth

scarlet imp
#

I was able to make a custom saved message if that's what you're trying to do

thorn furnace
#

yeye

scarlet imp
#

in misc.dictionary I have ph_1_up for the message
then I have this

return {
    saved = "ph_1_up",
    message = localize("k_saved_ex"),
    colour = G.C.RED
}
#

it works fine for me

thorn furnace
#

oooo
thank u :3

scarlet imp
#

if the card is supposed to self-destruct, you can also add this before to create the mister bones effect:

G.E_MANAGER:add_event(Event({
    func = function()
        play_sound("tarot1")
        card:start_dissolve()
        return true
    end
}))
thorn furnace
#

yea
It's part of a health mechanic

foggy ginkgo
#

How does make it so when the probability doesn't hit it would say "Nope"

        if context.individual and context.cardarea == G.hand and not context.end_of_round and not context.blueprint and
            pseudorandom('j_nic_incognito') < G.GAME.probabilities.normal / card.ability.extra.odds then
            if not (context.other_card:is_suit("Spades")) then
                context.other_card.should_destroy = true
                card.ability.extra.xmult = (card.ability.extra.xmult) + 0.5
                return { message = "YUM MULT!", colour = G.C.BLACK }
            end
        end
        ```
#

Been trying to figure it out but there are times where cards don't even have a message to either say Yum mult or nope

thorn furnace
# thorn furnace yea It's part of a health mechanic

you start with 100 HP and then if you lose a blind, you sacrifice the percentage of HP relative to the percent of the blind you had left to score

So if you had 3000 chips and the blind was 4000, you would lose 25 HP since you had 25% of the blind left

gray quartz
#

my first idea is to seperate the pseudorandom from that first big if statement and make it its own thing, and then else it with a card_eval_status_text

thorn furnace
foggy ginkgo
#

How would one do that

thorn furnace
gray quartz
#

is it '''

foggy ginkgo
gray quartz
#

ok ty

#

hold on

foggy ginkgo
#

Np

thorn furnace
#

so ```lua for example

foggy ginkgo
#

Yessir

gray quartz
#
if context.individual and context.cardarea == G.hand and not context.end_of_round and not context.blueprint then
    if pseudorandom('j_nic_incognito') < G.GAME.probabilities.normal / card.ability.extra.odds then
        if not (context.other_card:is_suit("Spades")) then
            context.other_card.should_destroy = true
            card.ability.extra.xmult = (card.ability.extra.xmult) + 0.5
            return { message = "YUM MULT!", colour = G.C.BLACK }
        end
    else
        card_eval_status_text(card, "extra", nil, nil, nil, {message = "Nope!"})
    end
end

might work or i might have added one too many end statements

#

i have no idea

foggy ginkgo
#

Yummy

thorn furnace
scarlet imp
#
misc = {
    dictionary = {
        a_hands_singular = "+#1# Hand",
        k_buffed = "Buffed!",
        k_halved = "Halved!",
        k_scaled = "Scaled!",
        k_descaled = "De-scaled!",
        k_swapped = "Swapped!",

        -- Saves
        ph_1_up = "Saved by 1 Up"
    }
}
thorn furnace
#

ohhh okiii

#

I should really come up with a better message for it

foggy ginkgo
#

Let's take this for a spon

scarlet imp
thorn furnace
#

Trueee

#

unertale...

foggy ginkgo
#

Goofyahhtale

thorn furnace
#

one could argue I should also localize my buttons
But that's even more complicated

#

probably

gray quartz
#

i just changed the name of my mod and a completely unrelated function broke 👍 love coding sm

foggy ginkgo
#

Also AYEEEE it worked

gray quartz
#

W

foggy ginkgo
#

Thank you wise horse

gray quartz
#

gifs blocked 💔

#

horse reaction

foggy ginkgo
#

😔

#

It actually makes sense now that I see the code

#

This is what I get for stealing- I mean borrowing code

scarlet imp
gray quartz
#

its just 0 or 1

thorn furnace
#

b_ sounds like a dictionary thing
I'll try there

foggy ginkgo
#

You're true

urban wasp
#

why does this

  1. not apply diamond stake
  2. appear at the end of the list of stakes and not directly above diamond stake
SMODS.Stake {
    key = "violet",
    name = "Violet Stake",
    applied_stakes = { "cry_diamond" },
    atlas = "crp_stake",
    pos = { x = 1, y = 0 },
    shiny = true,
    colour = HEX("8a71e1"),
    above_stake = "cry_diamond",
    modifiers = function()
        G.GAME.starting_params.ante_scaling = 2
    end,
    crp_credits = {
        idea = { "Unknown" },
        art = { "Grahkon" },
        code = { "wilfredlam0418" }
    }
}
#

i've been trying to figure this out for like over an hour and neither the smods wiki nor existing code from other mods seems to help

thorn furnace
scarlet imp
#

yeah its not too bad

thorn furnace
#

debating if it's worth fixing the center thing before launch
It is literally the only thing to do other than release the mod (bc the text is center to the health bar and not to the center of the thing)

foggy ginkgo
#

Is there a way to have a joker card change the background of the game like how when opening a booster pack or am I trying to overdo things

scarlet imp
#

I think it looks fine, but centering it probably would make it look a bit nicer

foggy ginkgo
thorn furnace
foggy ginkgo
#

I agree

thorn furnace
scarlet imp
#

that's what I'm saying

wispy sparrow
#

so i have everything for a custom deck ready to do but the game is crashing at line 262 because the key is a nil value

scarlet imp
#

UI is really har imo so its just up to you whether you think its worth your time

maiden phoenix
wispy sparrow
#

oh right my bad

thorn furnace
maiden phoenix
thorn furnace
#

i need to get better at modding

scarlet imp
thorn furnace
#

i dont remember how long ive been modding

#

also about a month it seems

scarlet imp
#

damn, respect. Making a whole health bar in a month is crazy

thorn furnace
#

jojomod had harder things

#

well
I mean I had to make an entire cardarea for the healthbar so it's definitely hard

#

Heaven's Door wasn't easy either tho
It's still broken

scarlet imp
#

How bad is that btw? I'm gonna be adding a cardarea soon

thorn furnace
scarlet imp
#

I want a second Joker cardarea that only allows Jokers with active abilities

thorn furnace
#

how would that work

scarlet imp
#

Not sure 😭

#

thats why I ask

#

I already have Jokers with active abilities I just need to make the cardarea

urban wasp
foggy ginkgo
#

Where do I put the "to_big" thing for talisman bs

#

Or at least where do I put it to define it

urban wasp
#

if talisman is installed, to_big can be used any time in your own mod

#

you don't need to define it or anything

foggy ginkgo
#

Ah okay

#

What about this part of it

This will cause crashes as well because to_big doesn't exist without the mod installed, so to prevent that issue we can define it as follows somewhere else in the file:

to_big = to_big or function(x) return x end

#

Just wanna add this part just in case people have it without talisman

scarlet imp
#

is there a way I can retrieve the mod prefix from something modded? like a function or something

red flower
#

card.config.center.mod.prefix iirc

vague crest
#

where is the rate each rarity appears in the shop set, and is that conveniently changable? (in this context via a deck)

red flower
#

it is, the variable should be in the smods.rarity docs

#

G.GAME.common_mod, etc. i think

vague crest
#

ohhhh wait ok i think i remember hearing this

short apex
#

trying to make a joker that gains +3 mult is entirely spades and clubs, if any cards played are hearts/diamonds it sets back to 5
(its initial +mult is 5)

red flower
hasty mist
#

Is there a way to forcefully create a specific booster pack in the shop

short apex
#

idk if there is an issue actually ig i shouldve tested first oops-

red flower
hasty mist
#

what kind of context checks do i need to make it actually work

#

im not sure if theres a specific context for entering the shop

maiden phoenix
short apex
#

cool the mod now just crashes if you attempt to even look at the joker

idle plaza
short apex
#

what line?

idle plaza
short apex
idle plaza
#

Yeah, one or the other needs to be changed to match the other.

short apex
#

wait no i smart?

#

if i change the key and path and ominous line 43 to QXR would the code self destruct?