#💻・modding-dev

1 messages · Page 502 of 1

red flower
#

did you try removing the reset jiggles

wooden nexus
#

yeah I can't find the code

sonic cedar
sonic cedar
wind steppe
#

why does my game crash when i play a hand with this joker (compare number with table. typical talisman stuff)

    calculate = function(self, card, context)
        if context.joker_main then
            local _hand, _tally = nil, to_big(0) -- ty vanillaremade for giving me all this code
            for _, handname in ipairs(G.handlist) do
                if SMODS.is_poker_hand_visible(handname) and to_big(G.GAME.hands[handname].played) >= to_big(_tally) then
                    _hand = handname
                    _tally = to_big(G.GAME.hands[handname].played)
                end
            end
            return {
                chips = to_big(G.GAME.hands[_hand].chips) / to_big(2),
                mult = to_big(G.GAME.hands[_hand].mult) / to_big(2)
            }
        end
    end
red flower
hidden sable
#

anyone?

sonic cedar
red flower
#

then your code is cursed

sonic cedar
#

NO

#

REMOVING THE RESET

wind steppe
#

it should be next(SMODS.find_card('tngt_tenna'))

hidden sable
primal robin
wooden nexus
#

oh

wind steppe
red flower
hidden sable
wind steppe
wind steppe
wooden nexus
#

so how do I separate my fillers from my jokers then?

red flower
red flower
#

if you want them to be in the same area but use different counters that sounds very complicated

hidden sable
#

this works but also doesnt, it doesnt play the music when you dont have the joker but it also doesnt play the music when you do have the joker

wind steppe
wind steppe
hidden sable
wind steppe
#

this is in an SMODS.Sound?

hidden sable
#

yes

wind steppe
wooden nexus
wind steppe
#

not true or false

hidden sable
wind steppe
#

because that just makes 10 into a boolean

hidden sable
#

its wrapped in ()

#

the blind check and the card check are in ()

wind steppe
#

do

if (your conditions) then
  return 10
end
red flower
chrome widget
#

Yeah the 10 in the condition always returns true because it isn't nil I belueve

#

Unless I'm reading it wrong

#

Oh I see yeah

wind steppe
chrome widget
#

No technically that should work? It'll return 10 if it's true

#

Otherwise it'll return false, though ideally it should return nil otherwise

red flower
#

that looks fine to me

wind steppe
#

if you print that itll be a boolean for sure

#

also or false isn't... doing anything i think

hidden sable
#

still isnt working

red flower
#

and not nil

red flower
#

although it should probably be nil like winter said

wind steppe
#

might have something to do with the other conditions

wooden nexus
#

Ugh this is ridiculous. I'm just stuck at this point

hidden sable
#

thats an smods example

thick drift
#

I have been struggling to destroy my jokers with another joker, anyone know why this is loop is not working? (context is final_scoring_step)

    local j = G.jokers.cards[i]
    local first = true
    if not j == center and not SMODS.is_eternal(j, center) then
        j.getting_sliced = true
        G.E_MANAGER:add_event(Event({
            func = function()
                j:start_dissolve({G.C.RED},nil,1.6)
                if first then
                    center:juice_up(0.8, 0.8)
                    first = false
                end
                return true
            end
        }))
    end
end```
red flower
#

yeah the and 10 is correct

wind steppe
#

again: you're SURE G.GAME.blind.in_blind is real?

hidden sable
wind steppe
#

cause i cant see any other issues

hidden sable
#

only broke when i aded the find card

wooden nexus
#

If I continue as its own card type, then I have no space to add more and have more problems. If I switch it over to a joker, i lose so much progress I had already done.

#

the heck do i do then

red flower
#

if it's a joker

hidden sable
#

oh

#

mb gangalicious

#

my army

sonic cedar
solemn shuttle
modern kindle
#

Hi smt I haven't seen you much today

hidden sable
#

how does wee joker be small

#

hoe be big like carrot big carrot small left big

#

carrot

sonic cedar
unkempt rover
#

Could someone help me? How do you do something like "when the run starts" in balatro?

hidden sable
#

it overcomplicates alot of things

#

here look at this hook

#
local old_calc = SMODS.calculate_context
SMODS.calculate_context = function(context, return_table)
    if context.setting_blind then -- Prevent use of Skateboard while in a shop
        G.skate_shop = false
    end
    local ret = old_calc(context, return_table)
    if ret then
        return ret
    end
end```
#

its simple but shows you

#

what a basic hook is

hidden sable
unkempt rover
#

I put this and the screen went black when I selected a deck

red flower
#

then you didn't hook it, you replaced it probably

red flower
wind steppe
#

oh somethingcom "❓ on every" is here

unkempt rover
wind steppe
#

if they ever decide to react instead of actually giving a helpful answer feel free to call me back here

red flower
hidden sable
#

ima be honest

hidden sable
hidden sable
#

all superheros have their weaknesses headass

red flower
#

i think it's pretty clear but i guess we have to dumb it down more

wind steppe
normal crest
#

Does drawing_cards really only allow to set the amounts of cards drawn rather than add

wind steppe
#

i'd say more but i'd probably be banned

hidden sable
hidden sable
#

i think the main reason is its not in the context of balatro so

red flower
wind steppe
hidden sable
#

like you really only need the first bit

#

but NOBODY tells you that

wintry solar
#

is 600 lines too many for 1 consumable 🤔

red flower
#

yes

limber blaze
#

not enough

wind steppe
normal crest
#

how many of those lines are empty, or just have one bracket

limber blaze
#

before i refactored it i had like 1200+ lines of code for one consumable

hidden sable
#

thats my prediction

hidden sable
#

like clean up

red flower
#

rewrite

hidden sable
#

so clean up

normal crest
# red flower (didnt know how to do that)
[[patches]]
[patches.pattern]
target = "functions/state_events.lua"
pattern = "local flags = SMODS.calculate_context({drawing_cards = true, amount = hand_space})"
position = "before"
match_indent = true
payload = '''
local paperback_ret = {}
SMODS.calculate_context({
  paperback = {
    drawing_cards = true,
    amount = hand_space
  }
}, paperback_ret)
for _, v in ipairs(paperback_ret) do
  if v and type(v) == 'table' then
    for _, vv in pairs(v) do
      hand_space = math.min(#G.deck.cards, hand_space + (vv.draw_extra or 0))
    end
  end
end
'''

did this patch for it, it works, but is it a bad idea

hidden sable
#

fancy way of saying clean up

limber blaze
#

i rewrote parts of the code to suck less

wind steppe
#

how would i check if you're in a run?

wintry solar
placid star
#

what should i hook into to get a UI node under cards with certain seals

red flower
normal crest
wintry solar
#

aure

placid star
#

i want to create a box under playing cards that have my custom seal that displays info at a glance, just wondering the best place to draw the box

#

as in which functions to draw it in

coarse marsh
#

What does this mean

wind steppe
#

did i just see somethingcom... not ❓ when they need clarification? unreal

wind steppe
normal crest
normal crest
coarse marsh
wind steppe
#

how would i check if i'm currently in a run?

wind steppe
unkempt rover
#

I kind of didn't want to share my idea, but since everything I did didn't work,
I was trying to make a mod that bans all vouchers when starting a run.
But that's too confusing for me.

red flower
normal crest
#

not probably, definitely

hidden sable
#

complex question here, is there a way to make a joker always check a file say on github for their mult

coarse marsh
# wind steppe ctrl c ctrl v

Oops! The game crashed:
functions/common_events.lua:2437: attempt to index local 'center' (a nil value)

Additional Context:
Balatro Version: 1.0.1o-FULL
Modded Version: 1.0.0~BETA-0614a-STEAMODDED
LÖVE Version: 11.5.0
Lovely Version: 0.7.1
Platform: Windows
Steamodded Mods:
1: Full-House Mod by By Earth_wm [ID: fullhousemod, Version: 1.0.0]
2: Talisman by MathIsFun_, Mathguy24, jenwalter666, cg-223 [ID: Talisman, Version: 2.3.0, Uses Lovely]
Break Infinity: omeganum
3: Jen's Library by jenwalter666 [ID: JenLib, Version: 0.4.0]
4: Card Sleeves by Larswijn [ID: CardSleeves, Priority: -10, Version: 1.7.9, Uses Lovely]
5: Brainstorm by OceanRamen [ID: Brainstorm, Version: 2.0.0-beta, Uses Lovely]
6: DebugPlus by WilsontheWolf [ID: DebugPlus, Version: 1.5.0~dev, Uses Lovely]
7: Incantation by jenwalter666, MathIsFun_ [ID: incantation, Priority: 9e+301, Version: 0.7.0, Uses Lovely]
8: Handy by SleepyG11 [ID: Handy, Version: 1.5.0a, Uses Lovely]
9: Nopeus by jenwalter666, stupxd [ID: nopeus, Version: 2.2.5, Uses Lovely]
Lovely Mods:

Stack Traceback

(3) LÖVE metamethod at file 'boot.lua:352'
Local variables:
errhand = Lua function '(LÖVE Function)' (defined at line 579 of chunk [lovely debugplus.console "debugplus/console.lua"])
handler = Lua function '(LÖVE Function)' (defined at line 579 of chunk [lovely debugplus.console "debugplus/console.lua"])
(4) Lua global 'create_card' at file 'functions/common_events.lua:2437'
Local variables:
_type = string: "Joker"
area = table: 0x3974b360 {click_offset:table: 0x38dfa000, static_rotation:false, shuffle_amt:0, T:table: 0x396ba2a8, offset:table: 0x397599a0, role:table: 0x38c895e8, last_aligned:-1 (more...)}
legendary = nil
_rarity = nil
skip_materialize = nil
soulable = nil
forced_key = string: "j_thecrankhog"
key_append = nil
area = table: 0x3974b360 {click_offset:table: 0x38dfa000, static_rotation:false, shuffle_amt:0, T:table: 0x396ba2a8, offset:table: 0x397599a0, role:table: 0x38c895e8, last_aligned:-1 (more...)}
center = nil
(*temporary) = table: 0x3938f3d8 {j_mime:table: 0x39395390, j_ring_master:table: 0x393a5af8, b_challenge:table: 0x393b9a58, c_medium:table: 0x393b1c30, p_standard_jumbo_2:table: 0x393bee40 (more...)}
(*temporary) = nil
(*temporary) = nil
(*temporary) = nil
(*temporary) = nil
(*temporary) = string: "j_thecrankhog"
(*temporary) = nil
(*temporary) = table: 0x393b7970 {click_offset:table: 0x38e83190, children:table: 0x393abec8, parent:table: 0x393add58, sprite_pos:table: 0x39954498, T:table: 0x396f6c10, offset:table: 0x39046208 (more...)}
(*temporary) = boolean: false
(*temporary) = number: 0
(*temporary) = number: 0
(*temporary) = number: 0
(*temporary) = number: 1
(*temporary) = string: "attempt to index local 'center' (a nil value)"
(5) Lua field 'func' at file 'consumables/thesummoning.lua:28' (from mod with id fullhousemod)
(6) Lua method 'handle' at file 'engine/event.lua:55'
Local variables:
self = table: 0x39b01218 {start_timer:true, timer:TOTAL, blockable:true, trigger:after, created_on_pause:false, delay:0.4, complete:false, time:103.04875822337, blocking:true (more...)}
_results = table: 0x39455680 {blocking:true, pause_skip:false, time_done:true, completed:false}
(7) Lua method 'update' at file 'engine/event.lua:182'
Local variables:
self = table: 0x39430020 {queue_last_processed:17.283333333334, queues:table: 0x39430048, queue_dt:0.016666666666667, queue_timer:17.289797119931}
dt = number: 0.0069586
forced = nil
(for generator) = C function: next
(for state) = table: 0x39430048 {unlock:table: 0x39430138, other:table: 0x394301d8, tutorial:table: 0x39430188, base:table: 0x39430160, achievement:table: 0x394301b0}
(for control) = number: nan
k = string: "base"
v = table: 0x39430160 {1:table: 0x39463b78, 2:table: 0x39b01218, 3:table: 0x39b016a8, 4:table:

#

0x39b017a0, 5:table: 0x39b01c50, 6:table: 0x39b01d98, 7:table: 0x39b03a68 (more...)}
blocked = boolean: false
i = number: 2
results = table: 0x39455680 {blocking:true, pause_skip:false, time_done:true, completed:false}
(8) Lua upvalue 'gameUpdateRef' at file 'game.lua:2575'
Local variables:
self = table: 0x38b924a8 {F_GUIDE:false, F_CRASH_REPORTS:false, F_QUIT_BUTTON:true, HUD_tags:table: 0x39aab480, F_ENGLISH_ONLY:false, viewed_stake:1, HUD:table: 0x39318958 (more...)}
dt = number: 0.0069586
http_resp = nil
(9) Lua upvalue 'update_ref' at Steamodded file 'src/ui.lua:84'
Local variables:
self = table: 0x38b924a8 {F_GUIDE:false, F_CRASH_REPORTS:false, F_QUIT_BUTTON:true, HUD_tags:table: 0x39aab480, F_ENGLISH_ONLY:false, viewed_stake:1, HUD:table: 0x39318958 (more...)}
dt = number: 0.0069586
(10) Lua upvalue 'upd' at file 'main.lua:1606'
Local variables:
self = table: 0x38b924a8 {F_GUIDE:false, F_CRASH_REPORTS:false, F_QUIT_BUTTON:true, HUD_tags:table: 0x39aab480, F_ENGLISH_ONLY:false, viewed_stake:1, HUD:table: 0x39318958 (more...)}
dt = number: 0.0069586
(11) Lua method 'update' at file 'main.lua:2421'
Local variables:
self = table: 0x38b924a8 {F_GUIDE:false, F_CRASH_REPORTS:false, F_QUIT_BUTTON:true, HUD_tags:table: 0x39aab480, F_ENGLISH_ONLY:false, viewed_stake:1, HUD:table: 0x39318958 (more...)}
dt = number: 0.0069586
(12) Lua upvalue 'love_update_ref' at file 'main.lua:999'
Local variables:
dt = number: 0.0069586
(13) Lua upvalue 'oldupd' at file 'modules/controller.lua:868' (from lovely module handy/controller)
Local variables:
dt = number: 0.0069586
(14) Lua field 'update' at file 'main.lua:2454'
Local variables:
dt = number: 0.0069586
(15) Lua function '?' at file 'main.lua:938' (best guess)
(16) global C function 'xpcall'
(17) LÖVE function at file 'boot.lua:377' (best guess)
Local variables:
func = Lua function '?' (defined at line 909 of chunk main.lua)
inerror = boolean: true
deferErrhand = Lua function '(LÖVE Function)' (defined at line 348 of chunk [love "boot.lua"])
earlyinit = Lua function '(LÖVE Function)' (defined at line 355 of chunk [love "boot.lua"])

normal crest
#

oh no, joker that needs an internet connection

coarse marsh
#

Sorry

coarse marsh
#

For hte wall of text, it didn't turn into a notepad file for some reason

hidden sable
wind steppe
wind steppe
#

i havent personally worked with it though

red flower
#

sometimes it doesn't turn it into a txt for me either

hidden sable
wind steppe
coarse marsh
normal crest
#

it's over

wind steppe
#

how would i check if i'm currently in a run?

coarse marsh
#

But what is the issue

normal crest
wind steppe
normal crest
coarse marsh
#

Im not very good with lua

wind steppe
#

seems like you missed something there

#

(of consumables/thesummoning.lua)

coarse marsh
normal crest
wind steppe
#

should be "j_modprefix_thecrankhog" (replace modprefix with your mod's prefix obv)

coarse marsh
#

Thank you

#

It works

wind steppe
#

oh hey somethingcom

#

wish i could ❓ react them

normal crest
#

Flag the cards you want to modify the text of, then patch the generate ui function, if they're flagged use a different localization key and stuff

wind steppe
#

somethingcom is gone
weird

#

anyways why does this return crash the game only with talisman (_hand is a valid poker hand)

            return {
                chips = G.GAME.hands[_hand].chips / 2,
                mult = G.GAME.hands[_hand].mult / 2
            }
red flower
#

you should specify that it's with talisman

wind steppe
#

message edited

real night
#

what's the calculate function for when you enter the shop

#

how do you make a joker destroy itself

hidden sable
#

i have this file, how can i make http read it

#

this is my attempted code

primal robin
#

Played roblox a little bit and then fix issue in UI logic pretty easily

hidden sable
#

mike bring me the roblox mods

normal crest
#

the text of the url you're requesting would be the body

#
local https = require "SMODS.https"
local url = 'https://raw.githubusercontent.com/Steamodded/smods/refs/heads/main/version.lua'

https.asyncRequest(url, function (code, body, headers)
  print(body)
end)

prints this, for example

hidden sable
#

so using sync, how do i get the body

#

like http.request

normal crest
#

local code, body, headers = https.request(url)

#

using request freezes the game tho

#

and that kinda sucks

hidden sable
#

oh it does?

#

mb gangalicous

normal crest
#

yeah it freezes until the request is done

#

probably not gonna be longer than 2 seconds but still

hidden sable
#

this is returning nil

normal crest
#

well yeah, the inner function is returning the body, http_derive has no return statement

#

what is your goal with this?

hidden sable
#

oh mb gang

normal crest
#

Idk what you wanna do with the return value specifically, but if you need to save it, I'd just assign G.GAME.modprefix_something = body

#

And then you can use it anywhere

hidden sable
#

not what i need

#

but thanks anyways

#

actually i jsut realized

#

i can use sync

#

since im not calling it all the time

#

itll only be like half a second of freeze right

normal crest
#

Yeah, the first time it's called really, after that it'll probably be cached

#

the freeze might be longer tho, if you have slow/no internet or if github is down

#

for example

hidden sable
#

true

#

so maybe i can make a fallback

#

every time you successfully get the info

#

save it

#

and when you fuck up an http

#

use the last saved one

hidden sable
#

because im saving it to a variable

#

nice it worked

#

also

#

no freeze

#

!

normal crest
#

it probably didn't freeze cus it was cached

hidden sable
#

its not 72 anymore

#

how cna i clear the cache

#

i want a unique check every time i check

#

not caching it

solemn shuttle
#

say what if i want to draw all cards of a specific enhancement
i figure you use draw_card() and ive been tryna work it out with SMODS.has_enhancement() but it either draws a lot of other cards that are not in fact stone or it doesn't draw at all

hidden sable
#

prolly hook

#

i think

#

i think draw card is just for

#

drawing a random card

#

but who am i

solemn shuttle
solemn shuttle
#

but not specifically all my stone cards

#
        if context.first_hand_drawn and not context.blueprint then
            for _, pStone in ipairs(G.deck.cards) do
                if SMODS.has_enhancement(pStone, 'm_stone') then
                    draw_card(G.deck, G.hand, 90, 'up')
                end
            end
        end
normal crest
hidden sable
#

what about

#

non

#

raw

#

github

normal crest
#

then you're just gonna get an html file

#

or maybe using the api

#

idk

hidden sable
normal crest
#

ah, the classic parsing of an html file

#

idk much about request caching, you're better off asking someone else

vague crest
#

if i wanted to just like, generate a random integer number entirely seperate from ranks and suits and whatever within some range whats the quick way to do that

#

like in a context of ohh lets say if poker hand card nominals add up to 22 give money, number changes each round

normal crest
#

pseudorandom('seed', min, max) where both min and max are integers and are included

vague crest
#

oh wait so i dont need to do anything to specify that theyre ints?

normal crest
#

nop

vague crest
#

sick huge tyty

wraith blade
#

so Im getting the fabled "attempt to compare number with table" error from this code:
calculate = function(self, card, context)
local hand_level = G.GAME.hands[card.ability.extra.type1].level or 1
if context.individual and context.cardarea == G.play then
return { chips = card.ability.extra.chips + (card.ability.extra.chips_mod * hand_level),
card = context.other_card }
end
end
I've already tried wrapping to_big() around practically everything and unfortunately Im not smart enough to think of what else it could possibly be

compact valve
#

what do yall think of this one (rank randomizes upon defeating boss blind)

normal crest
chrome widget
#

Whelp sorting the suits for the deck preview seems to have

#

had some unanticipated results

lament agate
#

how to add a functional use button to a joker

hidden sable
#

for http, how can i tell if the request got fucked up

chrome widget
#

So like.... the cards are correct.... but I don't know why it's assigning the fronts this way lol

turbid field
#

Has anyone ever coded the functionality of decrementing or setting a joker's sell value, rather than just increasing it?

#

Just wondering if that's possible to do

faint yacht
#

...is this not how I add a custom "effect" key?

vague crest
stark rune
#

im trying to make a new consumable type, how do i change the name? I do have a localization file.

normal crest
# stark rune

put it under misc -> dictionary -> b_key_cards (replace key by your consumabletype key)

hidden sable
#

when an http fucks up itll say like 400 or 500?

#

so check if the code is over 199 and under 300

faint yacht
#

>= 200 and < 300

normal crest
#

usually 200 is the success code response

hidden sable
#

now how can i edit a local file

#

something with io.open

#

so would i go io.open(modpath.."filename", "w")?

normal crest
#

as far as I know

stark rune
#

is there like a documentation for all of the SMODS.Thing i think im starting to get lost

normal crest
#

look to the right side for modding stuff

stark rune
#

oh, thanks didn't know there was a wiki

hidden sable
#

does file:write overwrite or append?

faint yacht
#

...did you open the file in the right mode?

#

w just overwrites.

#

a appends.

hidden sable
#

k thanks

#

whats the state for the payout screen

glass scaffold
#

What version of LOVELY is needed for MacOS Sequoia 15.4.1

stark rune
#

How hard would it be to implement a pick card thing like in cryptid so you don't have to instantly use the card in a pack

#

Im assuming it would be difficult to do

#

but maybe not

vast bough
#

is royal flush called royal flush internally or is it called something else

stark rune
#

Also is there a mod to instantly reload all your mods

glass scaffold
stark rune
#

thanks

vast bough
pearl jacinth
#

a royal flush is a straight flush where every scoring card is a, k, q, j, 10

#

according to the game

vast bough
#

or is it boring and just says 'straight flush'

stark rune
#

it says royal flush

#

with the level of straight flush

glass scaffold
faint yacht
#

Same poker hand, just "special" name.

vast bough
#

thats cute atleast

#

big up localthunk

glass scaffold
hidden sable
#

why is this giving an error

stark rune
#

how does this even happen???

#

its in my consumable slot???

lament agate
hidden sable
clear ocean
clear ocean
hidden sable
clear ocean
#

the raw.githubusercontent?

hidden sable
#

all of it

#

yes

clear ocean
clear ocean
hidden sable
#

yes

#

except im putting stuff after it but yeah

final jewel
clear ocean
#

It appears to be only one key in there; this is out of my expertise, but that might be why it is trying to read something on line 1025 while it is only one line.

clear ocean
final jewel
#

each like in the vid

clear ocean
#

have you tried only enhancing one card, it could rule out if it is either the calculation or enhancement?

final jewel
#

ok I'll try

#

I does the same thing so its the calculation

clear ocean
#

Is the for loop in use to apply for both cards (if you remove it, it will only enchance one,) I don't want to assume?

normal crest
clear ocean
#

good question

final jewel
#

Like the sandwich add +2 perma mult on 2 selected card

clear ocean
#

hm. maybe try logging the perm mult before, during, and after the loop to see when and where it increases it

final jewel
#

but what is weird is that It shows the right amount on each card

clear ocean
#
use = function(self,cardm,area,copier)
  -- print #1
  for i, selected_card in pairs(G.hand.highlighted) do
    -- print #2
    selected_card.ability.perma_mult = selected_card.ability.perma_mult + card.ability.extra.mult
    -- print #3
  end
  -- print #4
end
#

something like this. not sure how to log (i know some lua but not much on the modding api) or which variable

normal crest
#

Maybe the other +2 mult is coming from somewhere else, cus you're right, if your consumable had somehow added +4 it'd say +4

#

Can you try starting a new run

clear ocean
#

there aren't any other enchantments or jokers, my best guess is maybe when it triggered the card, it does it twice in therefore +4

final jewel
#

wait I'll show you guys

clear ocean
#

take your time 👍

normal crest
#

and show what the output is

#

I suspect you previously modified that and it remained

hidden sable
final jewel
#

here is the video

clear ocean
#

ah i see. let me check (what kind of file structure is this)

final jewel
clear ocean
#

this might be a shot in the dark, maybe try playing without any additional mods. there could be a conflict

clear ocean
normal crest
#

okay, nothing weird there

final jewel
#

yeah

#

can it be a bug like in smods calculation

normal crest
#

I suspect one of your other mods is the culprit

#

It looked like you have a lot

final jewel
#

yeah

#

I'll try with only my mod

clear ocean
#

it's a common thing when you make your own mod or download a new one

#

if it is causing issues, try playing with only that mod and what it depends on (like steamodded)

normal crest
#

If I had to throw a wild guess, it's a mod that was created for an older version of smods where perma_mult didn't exist and they added it themselves, and now it's duplicating the effect

#

but who knows

clear ocean
#

that might actually be why

hidden sable
#

if code => 200 and code < 300 then

#

ive figured it out

#

thats the line that causes the crash

lament agate
#

anyone has experience with quantum enhancdement?

normal crest
#

a bit

lament agate
#

darn

normal crest
#

what do you want to do with them?

hidden sable
#

what even is qe

normal crest
lament agate
normal crest
lament agate
#

sure enough, i got nowhere

clear ocean
#

i'm sure someone that worked on that is in this server, i don't think they would mind if you asked

lament agate
#

tell me if this explains anything

hidden sable
#

and call it whenever a heart is played

lament agate
final jewel
#

I tried with only my mod and it work as intended

clear ocean
#

is links to gifs banned

hidden sable
#

yes

clear ocean
#

fair enough

hidden sable
lament agate
#

who made QE tho

normal crest
#

that's all I can say from that snippet

lament agate
#

but it only redirect me to the same joker

normal crest
#

the gambling flag here is not really relevant

lament agate
#

whys that

normal crest
#

the simplest use of quantum enhancements would be

if context.check_enhancement then
  return { m_lucky = true }
end

this will make all cards behave as lucky cards

clear ocean
normal crest
clear ocean
#

but obviously not sure which one it is 😅

clear ocean
#

and it's okay if you don't either. if something broke down in new vegas (i don't have a lot of mods for balatro) i won't know where to start

#

i'm sure if you do find it, it would be good to submit one as if the api added it itself, the developer can use that instead

hidden sable
#

highlighted line doesnt work

#

why?

clear ocean
#

for the time being, you could also add that mod and that version and before in the conflicts table in your config

GitHub

A Balatro Modding Framework. Contribute to Steamodded/smods development by creating an account on GitHub.

normal crest
hidden sable
#

yes

normal crest
#

what is the crash

final jewel
#

and guys do you know why Ace are from PaperBack ???

hidden sable
#

all i says is it doesnt work

normal crest
normal crest
hidden sable
#

no

normal crest
#

can I see line 1025

hidden sable
#

1025 is a line to load the code i sent

normal crest
hidden sable
normal crest
#

I think that means you mistyped the file path

hidden sable
#

i double checked it

clear ocean
#

what ARE these names

#

sorry for being off topic

hidden sable
#

blame @lament agate

clear ocean
#

@lament agate what ARE these names

hidden sable
#

its their mod

hidden sable
clear ocean
#

is this something you made yourself, or was that in the original

hidden sable
#

orwait

#

thenames

#

or

#

my code

#

names are og

#

my code isnt

clear ocean
#

i was asking about the code itself

#

uh

#

hm weird

hidden sable
#

yeah my code is new

normal crest
#

Can you show the full crashlog

hidden sable
#

removing this line makes game not crash

clear ocean
#

i need to get some sleep. this is out of my field, but the crash log should be able to help you

normal crest
normal crest
#

cus just removing that line would crash due to a syntax error

hidden sable
#

like remove all this

#

the whole if statement

#

and since i cant do an if

#

i remove teh bottom bit

#

the bottom bit works i tested it alone

normal crest
#

that might give a better crash log

final jewel
#

The bug is from PayasTerrible addition

lament agate
hidden sable
#

same error

#

i told yall nxkoos mod is haunted

clear ocean
hidden sable
normal crest
hidden sable
lament agate
hidden sable
normal crest
#

okay, it's >= not =>

#

you just have a syntax error

#

get the lua extension

clear ocean
#

😭

lament agate
#

you guys know what mods that has a joker that allows you to sell an eternal?

clear ocean
#

Okay, what does homework, porn, and stuff have in them

hidden sable
clear ocean
lament agate
#

porn folder is unused

#

dont worry about it

#

homework is ratmilk's work

#

stuff is for jokers and decks

#

hence

clear ocean
#

I cannot tell what each does and it’s not good

lament agate
#

wankers and dicks

hidden sable
lament agate
#

thanks ratmilk

clear ocean
#

I don't have any

floral spindle
#

how do I get the chips of the blind as an integer

lament agate
knotty orchid
#

Hey guys! I'm configuring my workspace, did I miss anything or I'm good to go?

{
  "Lua.workspace.library": [
    "C:/Users/deco/AppData/Roaming/Balatro/Mods/smods-main",
    "C:/Users/deco/AppData/Roaming/Balatro/Mods/lovely/dump",
    "C:/Users/deco/AppData/Roaming/Balatro/Mods/Talisman-main",
    "G:/Balatro/Balatro Source"
  ],
  "Lua.diagnostics.globals": [
    "G",
    "UIBox",
    "Event",
    "sendDebugMessage",
    "inspect",
    "HEX",
    "get_new_small",
    "love"
  ],
  "Lua.runtime.version": "LuaJIT",
  "Lua.workspace.checkThirdParty": false,
  "Lua.telemetry.enable": false,
  "Lua.diagnostics.disable": [
    "lowercase-global",
    "param-type-mismatch",
    "duplicate-set-field"
  ]
}
lament agate
#

how do you config the workspace

normal crest
#

By adding a .vscode/settings.json file

knotty orchid
#

and having lua language server extension installed

knotty orchid
#

Is there any way to get autocompletion or type hints for the context parameter inside calculate functions? It's the only part where I don't get any suggestions, and it's driving me crazy hahaha

normal crest
#

Add the lsp_def folder that's inside smods to your libraries

knotty orchid
#

Hmmm it doesn't seem to work

normal crest
#

Odddd

#

Actually, I don't have the lsp def as a library and it works just fine

#

Just smods

hidden sable
#

if the player is hoeverd over a joker is there a way to update the hover

#

like

#

a redraw

#

just need to redraw it 1 frame

knotty orchid
# normal crest Actually, I don't have the lsp def as a library and it works just fine
{
  "Lua.workspace.library": [
    "C:/Users/deco/AppData/Roaming/Balatro/Mods/smods-main",
    "C:/Users/deco/AppData/Roaming/Balatro/Mods/lovely/dump",
    "C:/Users/deco/AppData/Roaming/Balatro/Mods/smods-main/lsp_def",
    "C:/Users/deco/AppData/Roaming/Balatro/Mods/Talisman-main",
    "G:/Balatro/love",
    "G:/Balatro/Balatro Source"
  ],
  "Lua.diagnostics.globals": [
    "G",
    "UIBox",
    "Event",
    "sendDebugMessage",
    "inspect",
    "HEX",
    "get_new_small",
    "love"
  ],
  "Lua.runtime.version": "Lua 5.1",
  "Lua.workspace.checkThirdParty": true,
  "Lua.telemetry.enable": false,
  "Lua.diagnostics.disable": [
    "lowercase-global",
    "param-type-mismatch",
    "duplicate-set-field"
  ]
}
#

Maybe I have a config that I shouldn't?

normal crest
#

Maybe that helps?

#

We use relative paths for libraries, that's the main difference

knotty orchid
#

Oh man

#

I know what was happening

hidden sable
#

something about dynatext

#

but idk

#

someone explain dynatext to me

#

how can i make this dynatext

knotty orchid
#
local hillman = {
  name = "Hillman",
  pos = { x = 7, y = 3 },
  config = {},
  rarity = 2, -- Rare
  pools = { ["Inazuma Eleven"] = true },
  cost = 6,
  atlas = "Jokers01",
  ptype = "Mountain",
  pposition = "GK",
  pteam = "Inazuma Eleven",
  blueprint_compat = true,
  calculate = function(self, card, context)
  end,
}```
I was declaring the jokers as variables and injecting them with a loop so lls doesn't recognise context
hidden sable
#

i need dynatext for the color

hidden sable
#

or if theres a way to

#

just

#

call an update

#

on the whole menu

normal crest
#

But it'd get annoying for every joker

knotty orchid
#

Yea it sure will haha

hidden sable
#

like a function to simulate taking your mouse off the joker and back on

normal crest
#

And inside the dynatext brackets you configure it

knotty orchid
hidden sable
#

like the whole menu

#

only need to do it once

normal crest
#

I'm not sure

hidden sable
#

welp

#

dynatext it is

normal crest
#

I think ui elements have a recalculate function tho

#

Maybe that helps? Not at my pc to test tho

#

I guess you can try card.config.h_popup:recalculate()

hidden sable
#

trying dynatext

#

since it might be less perforamce intensive

wintry solar
#

Dynatext is pretty straight forward

normal crest
#

Hi eremel

hidden sable
#

freezes

wintry solar
#

Should still use reftable

hidden sable
#

how

#

in dynatext

#

or

#

config

#

like idk

normal crest
#

In dynatext

unborn bay
#

when you set that as a string youre basically setting the value as is to that

#

its not gonna be tracked because. its only tied to the new object its attached at

lament agate
#

whats the function in game that prevents player from interacting with anything?

#

blocking?

wintry solar
#

love.event.quit()

lament agate
#

thanks

#

it crashes the game

crisp coral
#

i mean

#

if the game crashes you can't interact with it

unborn bay
#

😭

normal crest
#

That was basically eremel just telling you to alt f4

knotty orchid
wintry solar
#

I mean I wasn’t wrong 😂

#

You can’t interact with the game if it’s closed

glass scaffold
#

The alt+f4 of modded Balatro

normal crest
#

Need a better solution

knotty orchid
#

Yeah that's right

hidden sable
normal crest
#

You can reinstall it

knotty orchid
#

maybe deleting /* or system32 could do it

normal crest
#

Still needs improvement

hidden sable
#

turn off computer

lament agate
#

i figured something out

#

brb

knotty orchid
#

I think the method reroll_boss_blind has some things about blocking interactions

#

maybe you could give it a look

lament agate
hidden sable
knotty orchid
normal crest
knotty orchid
#

I think you can lock specific items in game with this

normal crest
#

Did dynatext not work

hidden sable
#

not for my case

normal crest
#

Even with reftable?

hidden sable
#

yes

#

i need the color

#

to update

#

same as reftable does

normal crest
#

Okay but the color already works like that

#

You just modify the color you passed

hidden sable
#

no it didnt

normal crest
#

You updated the variable of the card instead of the color then

#

You'd want to modify the color, instead of reassigning it. So instead of card.ability.timecolor = something else, do card.ability.timecolor[1] = 0.5 for example

hidden sable
#

crash on hover

normal crest
#

Where'd you define timecolor

hidden sable
keen atlas
wintry solar
#

DynaText({string = {{ref_table = G.GAME.current_round, ref_value = 'dollars_to_be_earned'}}, colours = {G.C.MONEY}}) like this

normal crest
# hidden sable

Also if you're gonna be modifying it you want to do copy_table(G.C.GREEN)

lament agate
#

thought i could get around of this

knotty orchid
#

if = true that section is locked

hidden sable
#

thats not what they want

#

😭

#

not even close

hidden sable
normal crest
#

By updating the table you passed to it

hidden sable
normal crest
#

no, you're changing the table it's referencing by doing that

hidden sable
#

then hoq

normal crest
hidden sable
#

then what

#

all sets also use copy table?

normal crest
#

And idk if there's a better way but you can do
card.ability.timecolor[1] = G.C.RED[1] up to 4

#

or 3, alpha doesn't really matter

hidden sable
#

for setting back to green how

#

[1] = green[2]?

normal crest
hidden sable
#

wait no

normal crest
#

You don't wanna mix the numbers up

hidden sable
normal crest
#

ya, but that will only change one of the 3 values

#

You want to do the same with [2] and [3]

#

So 3 lines for each color swap

hidden sable
normal crest
#

there's probably a utility function somewhere to do this, but I wouldn't know what it's called

hidden sable
#

works awesome

#

now uhh

#

hard question

#

if its not possible thats fine

#

can i make a lil textdisplay under the joker

#

or over

#

or on it

#

just somewhere

normal crest
#

yes you can

hidden sable
#

how

normal crest
#

card.children.some_name = UIBox { definition = {}, config = {} }

#

definition would be a UI element like you already made

hidden sable
#

so if i wanted to turn this into that how would i do it

normal crest
#

you'd put everything in the first yellow brackets in definition

#

And you'd do this in set_ability

#

Only if initial is true

hidden sable
#

set ability is like

#

calculate

normal crest
#

Yeah

hidden sable
#

same position

#

whats its args

#

self,card?

normal crest
#

don't remember, it's in the wiki somewhere

hidden sable
normal crest
#

You can put align = 'bm'

#

For it to be at the bottom middle of the card

hidden sable
#

i see nothing

normal crest
#

Oh righr

#

In config put major = card

hidden sable
#

uh....

normal crest
#

uhh

#

Try adding parent = card to config too?

#

I keep forgetting

hidden sable
normal crest
#

Maybe your top ui element has to be root instead of column

hidden sable
normal crest
#

tho that might not be necessary

#

Idr

hidden sable
#

now theres a background

normal crest
#

try setting the color of the root to {0,0,0,0}

echo aurora
#

Need help on what to do here

hidden sable
#

worked

#

how can i make it cast a shadow?

#

nvm i found out how

normal crest
#

add shadow = true to the dynatext

#

was that right

hidden sable
#

how can i make this down a bit

#

not directly above

hidden sable
normal crest
#

in the config of uibox pass offset = { x = 0, y = 0.25 }

#

Should bring it .25 down, whatever that means

hidden sable
#

worked but uhh

#

big issue

#

loading the save

#

removes the box

#

like

#

going to main menu

#

and continuing

#

removes the box

normal crest
hidden sable
#

never added it

normal crest
#

Hmm

#

Maybe just do it in update instead of set ability, just do if not card.children.timer then

#

Probably not the best solution

#

But a solution

hidden sable
#

true

#

actually

#

what if i make it so

#

the timer is there during a blind

#

once out of i blind its gone

normal crest
#

You could do that in calculate

#

In setting_blind create the timer, in end of round set it to nil

#

Oh and before setting it to nil do card.children.timer:remove()

hidden sable
#

works perfectly

#

now to make the timer seem more imposing

normal crest
#

good luck

#

I sleep

hidden sable
#

thank you for the help

narrow pendant
#

I dont think i'm looking at the hand levels correctly, any assistance?

zealous glen
#

Take a look at Lvl ? Death

narrow pendant
#

ah where can i find your code?

#

found

#

man looking at others code reminds me how hopelss i am at this hahaha

zealous glen
narrow pendant
#

you're not wrong

#

at least he understood what all this stuff meant

#

it just doesn't seem to be doing the search thru the table

narrow pendant
#

dunno man, i got nothing

#

i'm either doing the loop wrong, or i'm doing it in the wrong place

#

i'm going to bed, i'm gettin nowhere

maiden phoenix
narrow pendant
#

Damn, i gave that a shot and it didn't seem to work either

maiden phoenix
#

If you have debugplus you can add a print(hand) above the level check see if you get into the loop and what values you get

rotund sable
maiden phoenix
#

I like not having to switch windows but true

languid canopy
#

hello, why doeesn't this work ?

maiden phoenix
#

You wrote "source*id" in your pairs

#

Also I doubt * works as a key

hidden sable
true sky
#

is there an easy way to add an artist tag to a steamodded deckskin like this?

#

(like when you hover over the cards in the selection menu)

red flower
true sky
#

word, ty

wintry solar
#

There are some docs here

#

I don’t know what they say though 🙃

thorn basin
#

I made an Enhancement that has a chance to copy the card this enhancement has but without the enhancement.
How can I apply a random seal OR edition to the copied card?

red flower
#

use card:set_edition with poll_edition and SMODS.poll_seal with card:set_seal

lament agate
#

asking once again

#

how do i put a functional use button to a joker

formal parrot
#

@dreamy thunder

red flower
#

check out pendulums in joyousspring :3

#

you need to hook either card highlight or the use and sell buttons function

primal robin
#

or update function ehehe

faint yacht
#

How do I make an event with random delay in seconds that doesn't clog up the event queue, but still forces nothing to happen for a bit?

primal robin
#

use different queue?

unborn bay
#

^

#

you can make events use a different queue instead of the default one

faint yacht
#

Nvm, delay() works enough.

thorn basin
#

oh, gotta remove the "vremade"'s

lament agate
faint yacht
#
function Card:highlight(is_higlighted)
thorn basin
lament agate
thorn basin
red flower
thorn basin
red flower
#

or the wheel of fortune key

pearl jacinth
#

how do i return a card back into the deck

thorn basin
# red flower or the wheel of fortune key

also another question: how can I make it that this Enhancement copies the card itself that has said enhancement and not the first card of the played hand?
(cuz rn it only copies the first card of the played hand)

pearl jacinth
#

i thought you were answering my question so i was waiting

red flower
pearl jacinth
#

actually is there a function that returns a card into the deck

red flower
red flower
lament agate
#

is this efficient

red flower
#

technically not but it's fine

keen atlas
#

its fine

primal robin
#

The well-known "looks good for me"

lament agate
#

glad we have something in common here

#

hell, uncommon even

red flower
#

i changed my mind this is the worst code ive ever seen

lament agate
#

god damnit

thorn basin
red flower
#

i would know, ive worked at [BLEEP] for 7 years

lament agate
#

they worked at thunk entertainment

red flower
keen atlas
thorn basin
lament agate
pearl jacinth
red flower
thorn basin
slim ferry
#

does context.fix_probability or context.mod_probability happen first?

red flower
#

mod happens first iirc

thorn basin
#

I wanted to create a joker that acts like stone joker but I'm unsure what should I put in the queue instead of "G.P_CENTERS.m_stone"...

red flower
#

m_modprefix_key for your enhancement, same for has_enhancement

thorn basin
#

aight, thx!

still cedar
#

Can anyone tell me how to make the joker get an extra xmult when choosing a blind? I have thid code but its doesn't work

red flower
#

you have to add to card.ability.extra.Xmult in context.setting_blind

drowsy gull
#

Anyone have idead for this algorythm?:

Each 2 Jacks held in hand gives some effect

I was able to implement it, but it reacts not to every second Jack, but to Jacks with an even position taking into account other cards too, that is, the hand JackAceJack did not give effects, but JackJackAce did. This is not what I expected, so I decided to ask if there is

calculate = function(self, card, context)
        if context.individual and context.cardarea == G.hand and not context.end_of_round and context.other_card:get_id() == 11 then
            local need_to_ability = false
            for i, c in ipairs(G.hand.cards) do
                if c == context.other_card then
                    if ((i) % card.ability.extra.divider == 0) then
                        need_to_ability = true
                    end
                end
            end
            if need_to_ability then
                if context.other_card.debuff then
                    return {
                        message = localize('k_debuffed'),
                        colour = G.C.RED
                    }
                else
                    return {
                        x_mult = card.ability.extra.xmult,
                        dollars = card.ability.extra.dollars
                    }
                end
            end
        end
    end,

I really don't know how to make it easier, or at least somehow

primal robin
#

Goddamn, this works too!

drowsy gull
red flower
#

also the second for should probably break when it finds it

pearl jacinth
#

how does draw_card() work

red flower
pearl jacinth
#

nevermind i figured it out

drowsy gull
placid star
#

can anyone see any clear issues with this main_end piece? when i try returning it, nothing appears in my seals description

keen atlas
#

label= to text=

#

i think

placid star
#

that didnt fix it :/

molten relic
#

why this not trhe work?

        if context.individual and context.cardarea == G.play then
            if context.other_card:is_suit(card.ability.extra.suit) then
                    card.ability.extra.spade = true
            end
        end
        if context.joker_main then
            if card.ability.extra.spade == true then
                card.ability.extra.spade = false
                return {
                    xmult = card.ability.extra.xmult
                }
            end
        end
    end
}```
red flower
#

me when

molten relic
placid star
#

@red flower can seals have a main_enddddd cause i cant get mine to work

red flower
#

dunno

molten relic
#

how would i replace the main games font

clear ocean
#

Not fully sure.

#

Thinking on adding one for credits for things I modded in just in case.

red flower
molten relic
#

no just like THE balatro font

red flower
#

use trance?

molten relic
#

whar??

molten relic
#

no like i want to include it in my mod

#

i want my mod to replace the font

red flower
#

ok

clear ocean
red flower
#

check trance's code then

molten relic
#

ok

wintry solar
molten relic
formal parrot
#

And check how they do it

molten relic
#

no i know that

#

i just dont get the code

formal parrot
#

Be determined

molten relic
#

i think it uses like a million shit that is just specific to Trance

clear ocean
#

@red flower After looking at your code and the smod wiki, I was able to make a toolbox, but not sure if I formatted it correctly.

    loc_vars = function(self, info_queue, card)
        info_queue[#info_queue+1] = { loc_txt = {
            ['en-us'] = {
                text = { 'TEST' }
            }
        }}
    end,
red flower
#

that doesnt take loc_txt i dont think

#

you need a loc file

clear ocean
#

What's the difference? Geniune question.

wild berry
red flower
clear ocean
#

I see.

dreamy thunder
faint yacht
#

...how do I detect if a specific mod's menu had been opened again?

red flower
clear ocean
#
    loc_vars = function(self, info_queue, card)
        info_queue[#info_queue+1] = { key = 'key', set = 'foo' }
    end,
return {
    descriptions = {
        foo = {
            name = 'key',
            text = {
                'boo'
            }
        }
    }
}
#

@red flower Something like this?

red flower
#

set has to be Other unless you want to do more stuff to make them work

#

but otherwise it looks fine

wild berry
#

balato doesnt open

normal crest
clear ocean
red flower
wild berry
#

nvm

modern kindle
red flower
wild berry
#

halted it

clear ocean
modern kindle
#

Anyway good morning chat I just woke up

normal crest
#

Good morning

red flower
#

gm dilly

normal crest
#

Waking up sucks

wild berry
#

gm

modern kindle
#

How are my besties

clear ocean
#
return {
    descriptions = {
        foo = {
            key = {
               name = 'key',
               text = {
                'boo'
               }
            }
        }
    }
}
#

@normal crest like this?

normal crest
#

Yeah, but like N said, that is not sufficient to make it work with foo set

faint yacht
#

...if only we could embed looping points for custom music...

modern kindle
clear ocean
normal crest
#

Yeah

clear ocean
#

thanks 👍

wild berry
red flower
#

1 chrome tab

clear ocean
#

that's too generous

#

opening chrome should do it

mild oak
#

so many people misunderstand gpu/cpu usage 😭

modern kindle
clear ocean
#

is there a psu joker

red flower
#

i know nothing about computers

modern kindle
#

Not yet

wild berry
clear ocean
#

@red flower @normal crest godspeed

wild berry
normal crest
red flower
modern kindle
#

I cant really do a psu joker
I can check things like if its charging and such for batteries but desktops dont have that aspect because they are on and off and dont really have a charging state

normal crest
#

check the current power consumption

modern kindle
#

Maybe i can try and check the wattage of a psu a system has and then give something depending on that

normal crest
#

If that's available

modern kindle
#

I still need to see for the gpu one to try and check for amd and then Linux to check for gpu without it being so frame hungry
My initial checks made me go from 430 frames to 50

normal crest
#

How are you getting the current gpu usage?

modern kindle
#

Current version I stay around 150

modern kindle
normal crest
#

No idea what either of those are

modern kindle
#

Works for nvidia right now and theoretically for amd but I dont have amd so harder to test

#

Ffi is foreign function interface for lua

normal crest
#

I'm on Linux and amd if you need someone to test

modern kindle
#

Let's me grab nvidias dll and then read its shit through there

clear ocean
#

linux and nvidia for me

modern kindle
#

And yea id love to use you soon if thats alright

wild berry
normal crest
#

Not with that wording

modern kindle
#

Lmfao

wind steppe
#

why does this crash in joker_main (only with talisman)

            local _hand, _tally = nil, to_big(0) -- ty vanillaremade for giving me all this code
            for _, handname in ipairs(G.handlist) do
                if SMODS.is_poker_hand_visible(handname) and to_big(G.GAME.hands[handname].played) > to_big(_tally) then
                    _hand = handname
                    _tally = to_big(G.GAME.hands[handname].played)
                end
            end
            local chips = ((G.GAME.hands[_hand].chips) / (2))
            local mult = ((G.GAME.hands[_hand].mult) / (2))
            return {
                chips = chips,
                mult = mult
            }
normal crest
#

Not soon tho

normal crest
modern kindle
#

My version of soon is like the next week or so

normal crest
#

Sure, I can definitely help you within the next 7 days

wind steppe
normal crest
#

What's at Mods/lovely/dump/functions/common_events.lua on line 1118 for you

clear ocean
#
return {
    descriptions = {
        cTerrorist = {  
            concept = {
                name = "Concept:",
                text = { "-" }
            },
            art = {
                name = "Art:",
                text = { "-" }
            },
            source = {
               name = "Source:",
               text = { "-" }
            }
        }
    }
}
    loc_vars = function(self, info_queue, card)
        info_queue[#info_queue+1] = { key = 'concept', set = 'cTerrorist' }
        info_queue[#info_queue+1] = { key = 'art', set = 'cTerrorist' }
        info_queue[#info_queue+1] = { key = 'source', set = 'cTerrorist' }
    end,
#

Did I mess something up?

normal crest
#

Not using the Other set

clear ocean
red flower
# wind steppe

i dont know why this line hasnt been patched by talisman yet

#

or maybe its a common conflict

wind steppe
#

surely that's better

clear ocean
#

make each something like [joker]-concept, [joker]-art, and [joker]-source?

normal crest
#

Yeah it's likely a talisman patch failed due to your other mods

red flower
modern kindle
#

talisman just simple forgot to patch it still i think

[[patches]]
[patches.pattern]
target = 'functions/common_events.lua'
pattern = "if amt > 0 or amt < 0 then"
position = 'at'
payload = "if to_big(amt) > to_big(0) or to_big(amt) < to_big(0) then"
match_indent = true
#

from its prs

#

so just throw that in

maiden phoenix
wind steppe
#

i'm just getting the chips and mult

maiden phoenix
#

or maybe any hand value needs it?

normal crest
maiden phoenix
#

Ah

normal crest
clear ocean
#
return {
    descriptions = {
        Other = {  
            cTerroristConcept = {
                name = "Concept:",
                text = { "-" }
            },
            cTerroristArt = {
                name = "Art:",
                text = { "-" }
            },
            cTerroristSource = {
               name = "Source:",
               text = { "-" }
            }
        }
    }
}
#

Did I miss a bracket or something?

#

Fixed it myself. Weirdly, have the name as an array/table.

wintry solar
#

Wait talisman still hasn’t fixed that crash?

modern kindle
#

its been sitting in their prs for a month apparently

clear ocean
#

Is it possible to use the loc_txt of the joker name and description into a loc file?

wind steppe
echo aurora
clear ocean
#
-- Counter-Terrorist
SMODS.Joker({
    key = 'cTerrorist',
    loc_txt = {
        ['en-us'] = {
            name = 'Counter-Terrorist',
            text = {
                'Retrigger all vanilla jokers'
            }
        }
    },
    loc_vars = function(self, info_queue, card)
        info_queue[#info_queue+1] = { key = 'cTerroristConcept', set = 'Other' }
        info_queue[#info_queue+1] = { key = 'cTerroristArt', set = 'Other' }
        info_queue[#info_queue+1] = { key = 'cTerroristSource', set = 'Other' }
    end,
})
return {
    descriptions = {
        Other = {  
            cTerroristConcept = {
                name = 'Concept:',
                text = { '' }
            },
            cTerroristArt = {
                name = 'Art:',
                text = { '' }
            },
            cTerroristSource = {
               name = 'Source:',
               text = { '' }
            }
        }
    }
}
#

@red flower What do I add to the loc file and change in the loc_txt?

red flower
modern kindle
#

soon i need to start splitting things up again and adding to my loc
ive gotten sloppy

lament agate
#

no atlas for consumables?

red flower
#

vanillaremade doesn't use atlas

#

it uses the default ones

normal crest
#

made of vanilla

modern kindle
#

i love vanilla

lament agate
#

i see

#

whats the px and py for tarots?

#

and spectral?