#upgrademod — upgrade any item in the game!

1 messages · Page 1 of 1 (latest)

quick lantern
#

My concept of this mod was that every item in the Collection can be upgraded (apart from decks, though there are 3 new decks).
https://github.com/ValkyRiver/upgrademod

Current progress:

  • All jokers
  • All consumables
  • All enhancements, editions, and seals
  • All Tags
  • All Vouchers
  • All booster packs
  • Blind scaling and all boss blinds
  • The Level 2, Level 3, and Level 4 decks (see images below)
  • EDIT Aug 23: Added descriptions for all implemented Jokers, Consumables, Enhancements / Editions / Seals. Also, playing on one of the new decks, exiting, then starting a run on a vanilla (Level 1) deck no longer carries over level of new deck
  • EDIT Aug 24-28: Chicot and Luchador are now functional, along with the new "blind level" mechanic. All blinds are now functional (although Cerulean Bell is currently bugged when exiting and reentering the run). Also, Splash now has an upgrade
  • EDIT Sep 9-12: Fixed some bugs. Some tags are now functional. Four Fingers, Shortcut, and Astronomer also have upgrades now, and so does Grim, Reroll Surplus, and Reroll Glut
  • EDIT Sep 19: Added most vouchers, as well as Pareidolia, Smeared Joker, Midas Mask, and Marble Joker. Also added an extra tab to view upgrade levels during a run
  • EDIT Sep 24: All items (apart from Blueprint and Brainstorm) have upgrades. Collection now has a "level select" UI
  • EDIT Sep 26: Fixed bugs with Ouija, Death, and Diet Cola. Changed ante scaling on the Level 2, Level 3, and Level 4 decks
  • EDIT Sep 30: Implemented the new 'Upgrade' items into the game
  • EDIT Oct 2: Added custom music for the 'Choose an Upgrade' item
  • EDIT Oct 4: Fixed lots of bugs. Changed the rarities of some Upgrade items, and buffed Mult and Chips upgrades

Yet to be completed:

  • Do some test runs on Level 2, Level 3, and Level 4 decks
GitHub

upgrademod is a Balatro mod by ValkyRiver which allows every item in the Collection to be upgraded (except for decks, but there are 3 new decks) - ValkyRiver/upgrademod

#

Note: this mod is only half-complete. I am new to modding, so I will likely put problems and debugging in this thread if I need help. After the mod is complete, I will probably make a new thread.

crude iris
#

hmm nice idea!

quick lantern
#

I tried setting a custom description for The Fool (in upgrademod.lua), but I got
functions/misc_functions.lua.1872: bad argument #1 to 'ipairs' (table expected, got nil)
instead. Weirdly, this error only occurs when tarot_level is 2 or higher — even though I have also defined the description for The Fool for a tarot_level of 1.

winged haven
#

ugh why make new mods with steamodded 0.9.8...

#

as for your description issue, you can't simply override loc values during runtime, they need to be parsed. inserting a call to init_localization() should do the trick

quick lantern
winged haven
#

you don't need loc files, you just need to make sure the text gets parsed

#

either way, you're either using 0.9.8 (in which case loc files are unsupported) or 1.0.0 (in which case, why are you writing 0.9.8 code)

quick lantern
crisp hazel
#

0.9.8 mod when it's deprecated 💀

quick lantern
# crisp hazel 0.9.8 mod when it's deprecated 💀

The thing is, I’m new to modding. I probably had no idea what all this “0.9.8 vs 1.0” business even meant when I started making this mod. I was just like “I guess it works, so I’ll keep that”

My Steamodded is 1.0, and not 0.9.8, but I don’t really know what syntactical changes I would have to make for this mod to be in 1.0 format

Though I guess really the part under SMODS.INIT is the only significant 0.9.8 thing that is in my mod

quick vessel
#

numbered pages

winged haven
#

also hooking functions like calculate_joker and use_consumeable isn't really 1.0-style, taking ownership of the objects would be preferred

quick lantern
#

And yet I have no idea how taking ownership of objects works…
I kinda just pieced together the structures from other mods when I was making this one, not knowing that some of them were 0.9.8

The reason for all of this hooking is that Steamodded overwrites all of the .lua files under /functions

winged haven
#

there's plenty examples

crisp hazel
#

I would reccomend looking through docs and looking at other mods to see how they do it

#

I know Lovely Patches also amy be a good thing you can use as well in case you need to inject into base game functions but idk how relevant that would be

crisp hazel
#

got a crash on first launch from using git repo outright

#

on 1.0.0 ofc

quick lantern
#

Oh, maybe I uploaded an older, non-working version to github oops

#

since my current version doesn't have a mention of "atlasdeck" anywhere

quick lantern
crisp hazel
#
  local atlasdeck = SMODS.Sprite:new("centers", path, "newdecks.png", 71, 95, "asset_atli")
  atlasdeck:register()
  local level2deck = SMODS.Deck:new(lvl2deck.name, 1, lvl2deck.config, lvl2deck.pos, lvl2deck.loc)
  local level3deck = SMODS.Deck:new(lvl3deck.name, 2, lvl3deck.config, lvl3deck.pos, lvl3deck.loc)
  local level4deck = SMODS.Deck:new(lvl4deck.name, 3, lvl4deck.config, lvl4deck.pos, lvl4deck.loc)
  level2deck:register()
  level3deck:register()
  level4deck:register()
  set_centers()
end
#

referring to this down here

#

@quick lantern

quick lantern
#

That's weird, since the same code didn't cause a crash on my side

crisp hazel
#

Using latest 1.0 alpha

#

dunno if that makes a difference

quick lantern
crisp hazel
#

lemme try somethin

quick lantern
#

By the way, I've tried replacing the 0.9.8 syntax SMODS.Sprite:new with the 1.0 SMODS.Atlas:new — it raises attempt to call method new (a nil value) error for some reason

crisp hazel
#

well that is bad syntax

#

lmao

#

Here's an example I pulled from a different mod, specifically Mathguy's Bonus Blinds

quick lantern
#

So no new, and have a table (instead of arguments)

SMODS.Atlas({key = "centers", atlas_table = path, path = "newdecks.png", px = 71, py = 95}) works

crisp hazel
#

pretty much yeah

quick lantern
#

I'm currently working on descriptions for Jokers and Consumables
(so that anyone trying this prototype mod doesn't get thrown off when an item doesn't behave the way the description says it does)

quick lantern
#

Also noticed a bug: Level 2 Fool doesn't work on Judgement, Talisman, Immolate, Deja Vu, Trance, Medium, and Soul

#

Also, Mr. bones and immolate is bugged

quick lantern
quick vessel
#

why not handle descriptions through localization files?

#

overwriting entries through code makes it not localization friendly (unless you want to make "if language == then" trees of just text)

quick lantern
#

Well… I just took this method from the steamodded page about 1.0 migration as well as the method used in the deluxe consumables mod

quick lantern
#

I'm gonna need to do an overhaul to the blinds, since blinds now have levels, and should be able to have negative levels

quick lantern
# crisp hazel pretty much yeah

Made another update to my mod, adding blind levels as well as leveling to Chicot and Luchador. However, only some bosses currently have levels.
https://github.com/ValkyRiver/upgrademod-wip/

GitHub

upgrademod is a Balatro mod by ValkyRiver which allows every item in the Collection to be upgraded (except for decks, but there are 3 new decks). This mod is currently only half-complete and is sti...

quick lantern
bronze glen
quick lantern
# bronze glen

upgrademod is probably not compatible with some of the other mods that you have

bronze glen
#

bruh

crisp hazel
#

0.9.8 coding be like troll_face

winged haven
# bronze glen

me when I use steamodded versions that are months out of date

crisp hazel
quick lantern
sharp mason
#

Lol they means it's from June

#

@bronze glen update your smodded

bronze glen
#

I did

sharp mason
sharp mason
bronze glen
#

I just released an update a few hours ago

sharp mason
#

I should maybe download it again tonight. See if it's working with the other mods I have

#

I did really enjoy it the couple times I played with it before

quick lantern
sharp mason
#

I was talking about ai gen goku's mod

quick lantern
#

Oh

bronze glen
#

question

#

how do i upgrade literally anything in this mod?

#

your mod apparently stops mathguys mod (grim) from working

#

actually i think it just messes up all other mod content (including mine)

quick lantern
quick lantern
quick lantern
quick vessel
#

why overwrite calculate_joker instead of using take_ownership

#

havent tested this but overwriting calculate_joker might break retrigger api bcos retrigger api hooks into calculate_joker

timid zinc
#

I'm surprised you didn't go for Fibonacci numbers for the Fibonacci Joker, +13, +21, +34, +55, and +89 instead. I could probably understand that it may be a bit strong in that direction, but come on.

#

Maybe to upgrade Blueprint/Brainstorm, you could have them copy the effects of multiple jokers at once?
Blueprint: inside out
Brainstorm: outside in
(both alternate sides between upgrades, btw).

#

For Invisible Joker:
Level 5: copies a random joker every boss blind
Level 6: copies a random joker every blind (pull from Cryptid mod).

#

For upgrading the Soul card:
Level 2: guaranteed Foil
Level 3: guaranteed Holographic
Level 4: guaranteed Polychrome
Level 5: guaranteed Negative
Level 6: guaranteed Negative Exodia 😁

#

For the Seals and Aura:
Level 6: all cards in hand

quick lantern
quick vessel
quick vessel
#

because steamodded loads, making a hook into caclulate joker, then this mod load overriding calculate joker and removing the hook

quick vessel
quick vessel
quick lantern
quick vessel
#
calculate = function(self, card, context) 
<calc code>
end})```
quick lantern
#

Since in the upgrademod.lua file, there is a comment explaining the problem I had with hooking calculate_joker, just before the massive START OVERWRITE sign

#

I do know that Steamodded overwrites the files in the functions folder, meaning I can’t just use lovely.toml to modify that

quick vessel
#

return calculate_joker_ref(self, context)

quick vessel
quick lantern
#

Here is that comment that I had in the upgrademod.lua file:

card_calculate_joker_ref = Card.calculate_joker
function Card.calculate_joker(self, context)
  if ...
  ...
  ...
  ...
  else
--  card_calculate_joker_ref(self, context)
-- For some reason, this never procs. Replacing "card_calculate_joker_ref = Card.calculate_joker" with
-- "card_calculate_joker_ref = calculate_joker" raises the error "attempt to index value
-- 'card_calculate_joker_ref' (a nil value)", and also replacing "function Card.calculate_joker(self, context)" 
-- with "function Card:calculate_joker(context)" allows the ref to proc but the new hooked function never procs. 
-- Therefore, with my limited  knowledge, the only thing I could think of left is to instead copy 
-- the entire code of calculate_joker below and overwrite it, instead of hooking.
-- Note: do not edit cards directly here, only ever copy the code from the lovely version of card.lua
quick vessel
quick lantern
quick vessel
#

ye

quick vessel
# quick vessel ```SMODS.Joker:take_ownership(<key w/o 'j_'>, { calculate = function(self, card,...

i feel like u could just do take_ownership + maybe a small patch to return nil before any vanilla calcs if your mod has calcs that dont directly override vanilla equivalent (i.e. if you take_ownership jimbo to add an end_of_round to him, his joker_main would still fire off because he would have a vanilla behavior and the smods calculate returning nil would mean the game goes further into the function)

quick lantern
quick lantern
# quick vessel ye

That solved one of the problems that I had for quite a while! Finally, I don't have to deal with this massive OVERWRITE START / OVERWRITE END block for calculate_joker.

quick vessel
#

although on second thought adding a safeguard patch like if self.config.center.upgrade_mod then return nil end right after the smods' function would be good just in case

quick vessel
#

you'd need to add upgrade_mod = true in the take_ownership but yeah

quick vessel
# quick lantern huh... how does that work?

oversimplified depiction of calculate_joker but

if debuffed then return nil end

-- SMODS calculate (modded jokers + take_ownership)
if center.calculate then
   local o = center.calculate(center, self, context)
  if o then return o end
end

<vanilla calculate joker>

if o doesnt return anything, the game continues looking through vanilla function, so you'd need to patch a small patch after the smods' injection to prevent the specific upgrade mod centers (the ones ur currently hooking for) from firing their vanilla calculate just in case

#

all of what im saying is only relevant if you plan on moving into take_ownership

quick vessel
#

the bit right above line is where smods executes calculate functions of modded jokers (including take_ownership)

quick lantern
#

I have update the mod again, It's getting quite close to every item having an upgrade, after which I can work on the new upgrade items.

quick lantern
#

Okay! The first (and big) part of the mod is pretty much complete. Every item now has an upgrade ||(except for Blueprint and Brainstorm since I haven't figured that out yet)|| and the collection now has a "level select" UI.

crude iris
#

Wow

#

Nice!

willow quest
#

what's the splash upgrade i can't check right now

quick lantern
willow quest
#

that sucks for splash

#

wouldn't you rather play the cards with the editions

granite verge
#

well that seems rude

#

what's your idea then

quick lantern
#

This is actually good in several cases, especially in Bime with polychrome steel kings
And Splash still behaves normally

(Splash is one of the few jokers that is tough to upgrade, since it’s an unusual non-numerical effect. It was no surprise that it was one of the last jokers to get an upgrade)

granite verge
#

also this does seem very good

#

if it works with enhancements aswell, which we might wanna do just so it feels more substantial, then it's crazy powerful

#

the size of your hand now matters a lot, and you can do a hell of a lot with it

willow quest
#

especially when it comes to actually getting good editions on them

willow quest
willow quest
#

or does everything just get one upgrade

quick lantern
quick lantern
willow quest
#

i see

#

yeah i can't use this mod right now because when i install it it crashes on boot because you guys forgot to close a } i think

quick lantern
#

What other mods do you currently have? Also, what version of STEAMODDED are you using?

willow quest
#

i updated steamodded like a week ago

#

i do have a lot of other mods

willow quest
willow quest
#

will recommend this to my more vanilla friends though

quick lantern
willow quest
#

yeah that seems like

#

something to wait for

#

pretty important feature right there

quick vessel
#

i would still advise against hooking calculate_joker due to how retrigger api works

#

because the order would very likely be vanilla -> retrigger api -> upgrademod

quick lantern
#

edit: noticed a bug with Incantation where using it successfully in a booster pack resulted in minus hand size

#

also noticed that crystal ball voucher didn't work properly

#

also, funny bug where the shop generated 24 jokers (though I gotta patch that)

#

There is a bug where the effect of all edition tags would happen but it would only use up the first one

quick lantern
#

EDIT: all of these bugs have been fixed

quick lantern
#

Just noticed that Ouija is bugged

quick lantern
#

Also, using Death on a negative playing card also reduces hand size for some reason
Diet cola is also bugged

quick lantern
#

Okay, did another update. I fixed some bugs and also changed the ante scaling on the Level 2, Level 3, and Level 4 decks.

Though Strength is bugged in booster packs

quick lantern
#

Ah... working on one of the big parts... creating the Upgrades items.

Row 1: Mult, XMult, Chips, Econ, Effect
Row 2: Tarot, Planet, Spectral, Enhancement
Row 3: Edition&Seal, Pack, Voucher, Tag

#

How does it work on steamodded?

sharp mason
#

like making consumables?

quick lantern
spring orbit
quick lantern
sharp mason
#

I'm not a modder, so I don't really know. Probably best to ask in modding-dev

quick lantern
#

Also, I did an overhaul to the collection pages, so I have to do the collection separately.

sharp mason
#

though I think the colors are the balatro colors C:[whatever]

quick lantern
#

This mod is nearly complete now. Just need to do some testing and add some custom music to finish it off.

woven karma
#

813a?

#

that's quite old, right?

quick vessel
#

ya

#

very old

sharp mason
#

Yeah a monrh and a half is a long ass time with smod development

quick lantern
crisp hazel
#

I might have to try this again because I wanna test this but I'm not sure it has full Linux support or not or even if mods are incompatible with it

sharp mason
#

I still don't think mods even can be incompatible with linux. With balatro and lovely using proton and everything

woven karma
#

what would cause a mod not to have linux support?

sharp mason
#

I remember joey was having some weird problems related ro capitalization at some point, but I never had anything like that also being on linux nor could I see how it's possible

woven karma
#

yeah filesystem stuff would be the only difference

crisp hazel
#

Idk I was having issues with Othermod heavily but that could have also been like a ton of other factors

quick lantern
#

Updated upgrademod again. This time, the first version of this mod is basically complete. All is left is to do some test runs on the new decks. At the moment, the ante scaling on the other decks is a bit low, especially with upgrade items now in the game. https://github.com/ValkyRiver/upgrademod

GitHub

upgrademod is a Balatro mod by ValkyRiver which allows every item in the Collection to be upgraded (except for decks, but there are 3 new decks). This mod is currently only half-complete and is sti...

#

upgrademod — upgrade any item in the game!

rain lagoon
#

How will this be interacting with joker evolution

rain lagoon
#

Also have mod conflict in my pack

spring orbit
#

Is this fine to install now? Wanted to try it out.

quick lantern
# rain lagoon Also have mod conflict in my pack

upgrademod is quite different from most other mods — instead of adding new jokers or consumables etc. to the game, it alters (upgrades) every item in the vanilla game. Because of that, it is probably not going to be compatible with many other mods, and even if it were, the items in the other mod wouldn’t be upgradeable at this moment.

quick lantern
spring orbit
#

I'll text it in my current hyper-modded profile, but I don't expect it to go too well.

quick lantern
rain lagoon
#

It will be sick if you can do that

#

But currently it just crashes

spring orbit
spring orbit
#

Yeah, I kinda expected that.

#

@quick lantern Is this a mod compat issue, or is something up with the mod?

quick lantern
# spring orbit

That’s odd. I don’t recall Green Joker being bugged on upgrademod
(Line 533 is supposed to set the upgrade values of Green Joker, but maybe another mod interacted with that)

rain lagoon
#

I should say that it loads fine with only upgrademod

quick lantern
#

Okay, so some other probably interacted with the upgrademod.lua file

rain lagoon
#

But I am kinda lazy to figure out what is causing it to be crashing

quick lantern
# rain lagoon

Line 10378 is supposed to register the “atlasdeck” sprite (newdecks.png)

quick lantern
# rain lagoon

I’m pretty sure another mod overwrote tag.lua in a way that’s incompatible with upgrademod

rain lagoon
#

Maybe decks conflicting?

fast field
#

So probably a cryptid incompatibility

quick lantern
# rain lagoon Maybe decks conflicting?

attempt to index local value 'atlasdeck' (a nil value)
a nil value suggests that the variable atlasdeck hasn’t been defined yet. But I defined atlasdeck just one line earlier, so maybe some other mod altered the file.

modern cedar
#

i replied accidently

quick lantern
modern cedar
#

no i meant like in the code

#

if you dont mind me asking

#

i wanted to make a wraparound joker for a while

quick lantern
# modern cedar no i meant like in the code
  local ret = {}
  local four_fingers = 0
  if next(find_joker('Four Fingers')) then four_fingers = 1 end
  if #hand > 5 or #hand < (5 - four_fingers) then return ret else
    local t = {}
    local IDS = {}
    for i=1, #hand do
      local id = hand[i]:get_id()
      if id > 1 and id < 15 then
        if IDS[id] then
          IDS[id][#IDS[id]+1] = hand[i]
        else
          IDS[id] = {hand[i]}
        end
      end
    end
    local straight_length = 0
    local straight = false
    local can_skip = next(find_joker('Shortcut')) 
    local skipped_rank = false
    if wraparound then
      for j = 1, 21 do
        if IDS[(j == 1 and 14) or (j == 15 and 2) or (j == 16 and 3) or (j == 17 and 4) or (j == 18 and 5) or (j == 19 and 6) or (j == 20 and 7) or (j == 21 and 8) or j] then
          straight_length = straight_length + 1
          skipped_rank = false
          for k, v in ipairs(IDS[(j == 1 and 14) or (j == 15 and 2) or (j == 16 and 3) or (j == 17 and 4) or (j == 18 and 5) or (j == 19 and 6) or (j == 20 and 7) or (j == 21 and 8) or j]) do
            t[#t+1] = v
          end
        elseif can_skip then
            skipped_rank = true
        else
          straight_length = 0
          skipped_rank = false
          if not straight then t = {} end
          if straight then break end
        end
        if straight_length >= (5 - four_fingers) then straight = true end 
      end
      if not straight then return ret end
      table.insert(ret, t)
      return ret
    else```
#
        if IDS[j == 1 and 14 or j] then
          straight_length = straight_length + 1
          skipped_rank = false
          for k, v in ipairs(IDS[j == 1 and 14 or j]) do
            t[#t+1] = v
          end
        elseif can_skip and not skipped_rank and j ~= 14 then
          skipped_rank = true
        else
          straight_length = 0
          skipped_rank = false
          if not straight then t = {} end
          if straight then break end
        end
        if straight_length >= (5 - four_fingers) then straight = true end 
      end
      if not straight then return ret end
      table.insert(ret, t)
      return ret
    end
  end
end```
modern cedar
#

do i just put this in the function part of a joker?

quick lantern
#

Though the way I did it in upgrademod is a bit more complicated, since I had to account for Level 2 Four Fingers as well

modern cedar
#

cool! thanks, this is for personal use btw fyi

rain lagoon
rain lagoon
spring orbit
#

Alright.

rain lagoon
#

mods that I found conflicting, but need further testing:

  • Aura
  • Actions
  • Bunco
  • Cryptid
  • Enhanced Enhancement
  • Talisman
#

That's a new one

rain lagoon
#

Ok I'm not gonna bother with testing compatibility

glossy zephyr
#

i just have upgrademod installed and polycromes just killed the game

quick lantern
glossy zephyr
#

1.0.0-alpha-820c

#

and ill get the error in a second

#

Oops! The game crashed:
functions/misc_functions.lua:1872: bad argument #1 to 'ipairs' (table expected, got nil)

Additional Context:
Balatro Version: 1.0.1g-FULL
Modded Version: 1.0.0~ALPHA-0820c-STEAMODDED
Love2D Version: 11.5.0
Lovely Version: 0.5.0-beta6
Steamodded Mods:
1: upgrademod by ValkyRiver [ID: upgrademod, Uses Lovely]
Lovely Mods:

Stack Traceback

(3) global C function 'ipairs'
(4) Lua global 'localize' at file 'functions/misc_functions.lua:1872'
Local variables:
args = table: 0x14b16b18 {type:name, key:c_fool, set:Tarot}
misc_cat = nil
loc_target = table: 0x14b12580 {name:The Fool, text:table: 0x151aee20}
ret_string = nil
(5) Lua upvalue 'Card_generate_UIBox_ability_table_ref' at file 'functions/common_events.lua:2635'
Local variables:
_c = table: 0x1507bab8 {order:1, _d:false, key:c_fool, set:Tarot, consumeable:true, _saved_d_u:true (more...)}
full_UI_table = table: 0x151253b8 {main:table: 0x14d0be90, badges:table: 0x155a12a0, info:table: 0x151253e0 (more...)}
specific_vars = nil
card_type = string: "Tarot"
badges = table: 0x155a12a0 {card_type:Tarot}
hide_desc = nil
main_start = nil
main_end = nil
card = table: 0x155c7fb8 {click_offset:table: 0x14b57888, children:table: 0x1519c058, ambient_tilt:0.2 (more...)}
first_pass = boolean: true
desc_nodes = table: 0x14d0be90 {}
name_override = nil
info_queue = table: 0x14b16af0 {}
(6) Lua method 'generate_UIBox_ability_table' at Steamodded file 'loader/loader.lua:338'
Local variables:
self = table: 0x155c7fb8 {click_offset:table: 0x14b57888, children:table: 0x1519c058, ambient_tilt:0.2 (more...)}
(7) Lua method 'hover' at file 'card.lua:4585'
Local variables:
self = table: 0x155c7fb8 {click_offset:table: 0x14b57888, children:table: 0x1519c058, ambient_tilt:0.2 (more...)}
(8) Lua method 'update' at file 'engine/controller.lua:399'
Local variables:
self = table: 0x14d66220 {held_button_times:table: 0x14d815d8, focus_cursor_stack_level:1, snap_cursor_to:table: 0x14d97f70 (more...)}
dt = number: 0.00228172
(9) Lua upvalue 'gameUpdateRef' at file 'game.lua:2639'
Local variables:
self = table: 0x14ab1138 {F_GUIDE:false, F_CRASH_REPORTS:false, F_QUIT_BUTTON:true, HUD_tags:table: 0x155d42a8 (more...)}
dt = number: 0.00228172
(10) Lua method 'update' at Steamodded file 'core/ui.lua:81'
Local variables:
self = table: 0x14ab1138 {F_GUIDE:false, F_CRASH_REPORTS:false, F_QUIT_BUTTON:true, HUD_tags:table: 0x155d42a8 (more...)}
dt = number: 0.00228172
(11) Lua field 'update' at file 'main.lua:936'
Local variables:
dt = number: 0.00228172
(12) Lua function '?' at file 'main.lua:880' (best guess)
(13) global C function 'xpcall'
(14) Love2D function at file 'boot.lua:377' (best guess)
Local variables:
func = Lua function '?' (defined at line 851 of chunk main.lua)
inerror = boolean: true
deferErrhand = Lua function '(Love2D Function)' (defined at line 348 of chunk [love "boot.lua"])
earlyinit = Lua function '(Love2D Function)' (defined at line 355 of chunk [love "boot.lua"])

quick lantern
glossy zephyr
#

green joker i belive lemme crash it again

#

its golden joker

#

i restarted from the console and it worked

#

it shouldn't have made a difference but hey temp fix

quick lantern
# glossy zephyr 1.0.0-alpha-820c

On my end, I don't see a problem with Golden Joker
So maybe it has something to do with 820c
The latest version that I have tested this mod on is 919a

quick lantern
glossy zephyr
#

the joker appearing in the shop

#

i rerolled

#

on 4 deck

#

but ill grab the new steamodded maybe itll be more stable

#

buying also crashes the game

quick vessel
#

it hooks calculate_joker which means it won't work properly with retrigger api

quick lantern
quick vessel
#

@quick lantern do you need any help converting your hook into steamodded's take_ownership calls

quick lantern
#

I'm thinking of just using lovely.toml instead

quick vessel
#

why

#

steamodded's api should be enough

#

I can make a PR later today

quick lantern
quick vessel
#

pull request

#

I can translate the hook into take_ownership calls and then submit it as a pull request on github

#

but basic structure should be basically just
SMODS.Joker:take_ownership(<key>, {calculate = function(self, card, context) <your code> end})

quick vessel
quick lantern
quick vessel
glossy zephyr
#

@quick lantern are you aware that on level 4 deck seltzer does not work

#

also i updated steammodded and polychromes are now more stable ish

quick lantern
glossy zephyr
#

i have a nack for breaking things

quick lantern
glossy zephyr
#

because now i keep crashing for the fool card

quick lantern
glossy zephyr
#

seeing it

quick lantern
glossy zephyr
#

seeing the texture of it when its not moving so if i get it from a purple seal if i see it in the shop, open a ppack

#

it could be that now im on too new of a steammodded vers

quick lantern
#

let me test it on the newest steamodded version

glossy zephyr
#

don't we love debugging

quick lantern
#

Once again, it works on my side, so I can't really confirm the bug (I have no idea what's going on on your side)

#

let me check functions/misc_functions.lua:1870

glossy zephyr
#

i break things i can try reinstalling steammodded

quick lantern
#

also try installing the newest version of upgrademod

quick lantern
glossy zephyr
#

oh yeah no i dont even boot

quick vessel
#

can't because I'm not at PC but if it's done via lovely patching it should work as intended (although taking ownership would still be preferred)

quick lantern
glossy zephyr
#

nope it crashes right after loading

quick lantern
glossy zephyr
#

lemme bring it up

quick lantern
#

(I've having so much trouble debugging, since none of these problems are present on my side)
I'm now using 927a

glossy zephyr
#

i can break any game if you give me access to any form of modifacation

#

the amount of times i have had to find random terraria devs on reddit or twitter or discord because their mod something normal youd not believe

#

i just playtest really badly

#

hire me, litterally anyone, ill break your stuff

#

and you wont replicate it

#

maybe its a hardware issue, i mean im on a r9 5950x and a 3070

quick lantern
#

maybe

glossy zephyr
#

and i have 128 gigs of okay ram

quick lantern
#

This is what my side looks like (just the end)

#
INFO - [G] 2024-10-03 14:26:07 :: INFO  :: TIMER :: [0000] Injected [INTERNAL] in 0.759 ms
INFO - [G] 2024-10-03 14:26:07 :: INFO  :: TIMER :: [0004] Injected Atlas in 365.277 ms
INFO - [G] 2024-10-03 14:26:07 :: INFO  :: TIMER :: [0001] Injected Sound in 2.159 ms
INFO - [G] 2024-10-03 14:26:07 :: INFO  :: TIMER :: [0008] Injected Stake in 0.234 ms
INFO - [G] 2024-10-03 14:26:08 :: INFO  :: TIMER :: [0004] Injected ConsumableType in 0.026 ms
INFO - [G] 2024-10-03 14:26:08 :: INFO  :: TIMER :: [0064] Injected Center in 0.739 ms
INFO - [G] 2024-10-03 14:26:08 :: INFO  :: TIMER :: [0007] Injected Undiscovered Sprite in 0.025 ms
INFO - [G] 2024-10-03 14:26:08 :: INFO  :: TIMER :: [0002] Injected Blind in 0.039 ms
INFO - [G] 2024-10-03 14:26:08 :: INFO  :: TIMER :: [0000] Injected Seal in 0.003 ms
INFO - [G] 2024-10-03 14:26:08 :: INFO  :: TIMER :: [0004] Injected Suit in 0.067 ms
INFO - [G] 2024-10-03 14:26:08 :: INFO  :: TIMER :: [0013] Injected Rank in 0.217 ms
INFO - [G] 2024-10-03 14:26:08 :: INFO  :: TIMER :: [0012] Injected PokerHand in 0.350 ms
INFO - [G] 2024-10-03 14:26:08 :: INFO  :: TIMER :: [0020] Injected Challenge in 0.200 ms
INFO - [G] 2024-10-03 14:26:08 :: INFO  :: TIMER :: [0000] Injected Tag in 0.002 ms
INFO - [G] 2024-10-03 14:26:08 :: INFO  :: TIMER :: [0004] Injected Sticker in 0.271 ms
INFO - [G] 2024-10-03 14:26:08 :: INFO  :: TIMER :: [0000] Injected Dollar Row in 0.002 ms
INFO - [G] 2024-10-03 14:26:08 :: INFO  :: TIMER :: [0000] Injected Shader in 0.003 ms
INFO - [G] 2024-10-03 14:26:08 :: INFO  :: TIMER :: [0000] Injected Keybind in 0.002 ms
INFO - [G] 2024-10-03 14:26:08 :: INFO  :: TIMER :: [0000] Injected Achievement in 0.058 ms
INFO - [G] 2024-10-03 14:26:08 :: INFO  :: TIMER :: [0000] Injected [INTERNAL] in 0.265 ms
Setting breakpad minidump AppID = 2379780
SteamInternal_SetMinidumpSteamID:  Caching Steam ID:  76561198951528281 [API loaded no]```
quick lantern
glossy zephyr
#

could it really be hardware

quick lantern
#

I don't know, and I don't really have a way to test that

glossy zephyr
#

yeah i dont either

#

i mean it shouldn't be an issue unless lovley or love2d just doesn't like ryzen microcode

quick lantern
#

file not found: main.lua: No such file or directory in the error suggests that the file main.lua is missing

#

which definitely shouldn't be the case, since is main.lua was really missing, it would prevent Balatro from starting up normally

quick vessel
#

main.lua is missing is just what Balatro says when code is wrong

quick lantern
#

Can someone else please check whether upgrademod works on their side? We currently have this anomaly where upgrademod runs fine on my side, but not on strikes_cat's side.

glossy zephyr
#

lemme try deleting level.dll and replacing it back

#

sometimes SOMETIMES thats fixes things

quick lantern
glossy zephyr
#

you know level.dll and version.dll are very easy to get confused when you are tired

quick vessel
#

version.dll?

quick lantern
glossy zephyr
#

and with that being said im going to bed ping me with updates, ill check up on them when i get the chance

glossy zephyr
#

also disclaimer: its probably a me issue i need to format my drives and i just really haven't felt like putting all my stuff (that i actually care about) on a backup

quick lantern
#

Oh, it's worth noting, the "Choose an Upgrade" item can appear in both the main shop and the booster packs area

quick lantern
#

I made another small change to upgrademod, buffing the Mult and Chips upgrades

#

I also fixed Business Card and Strength

quick lantern
#

Also, I fixed a few more bugs

hollow marlin
#

The game crashes on startup, is there something I need to do beyond chucking it in steamodded with my other mods?

sharp mason
#

@quick lantern what version of steamodded are you testing against?

#

People seem to be having issues

quick lantern
quick lantern
crisp hazel
#

found a bug

#

with liquidation

#

i have enough $ and yet

#

can't buy it

#

(also it being incompatible with like almost every other mod sucks)

#

unrelated but

quick lantern
# crisp hazel (also it being incompatible with like almost every other mod sucks)

upgrademod is quite different from most other mods — instead of adding new jokers or consumables etc. to the game, it alters (upgrades) every item in the vanilla game. Because of that, it is probably not going to be compatible with many other mods, and even if it were, the items in the other mod wouldn’t be upgradeable at this moment.

crisp hazel
#

understandable ig

quick lantern
#

Though I probably need to fix the clearance sale / liquidation bug

modern cedar
quick lantern
crisp hazel
#

which is uh

#

jank

#

Anyways the only real balance thing I feel is $15 for the upgrade packs is a little audacious, I feel like a price reduction would be nice but as a nerf only have like 2 upgrades choosable

quick lantern
crisp hazel
#
card.lua:1811: attempt to index a nil value

Additional Context:
Balatro Version: 1.0.1g-FULL
Modded Version: 1.0.0~ALPHA-0927a-STEAMODDED
Love2D Version: 11.5.0
Lovely Version: 0.5.0-beta6
Steamodded Mods:
    1: upgrademod by ValkyRiver [ID: upgrademod, Uses Lovely]
Lovely Mods:

Stack Traceback
===============
(3) Lua method 'can_use_consumeable' at file 'card.lua:1811'
Local variables:
 self = table: 0x07a379f0  {created_on_pause:false, click_offset:table: 0x07adb758, children:table: 0x062df820, ambient_tilt:0.2, parent:table: 0x0799d750, under_overlay:false (more...)}
 any_state = nil
 skip_check = nil
 obj = table: 0x08a87880  {order:5, _d:false, set:Spectral, consumeable:true, _saved_d_u:true, alerted:true, discovered:true, key:c_aura, pos:table: 0x08a87970, unlocked:true (more...)}
 (*temporary) = nil
 (*temporary) = number: 9.22662
 (*temporary) = number: 1.86406
 (*temporary) = number: 0
 (*temporary) = number: 1.86406
 (*temporary) = number: 2.666
 (*temporary) = number: 855.895
 (*temporary) = string: "attempt to index a nil value"
(4) Lua function '?' at file 'functions/button_callbacks.lua:2133' (best guess)
Local variables:
 e = table: 0x04e99c98  {pixellated_rect:table: 0x03d60e90, click_offset:table: 0x11d4df48, children:table: 0x05f3a2d0, parent:table: 0x03d7be48, T:table: 0x06030b10 (more...)}
(5) Lua method 'update' at file 'engine/ui.lua:953'
Local variables:
 self = table: 0x04e99c98  {pixellated_rect:table: 0x03d60e90, click_offset:table: 0x11d4df48, children:table: 0x05f3a2d0, parent:table: 0x03d7be48, T:table: 0x06030b10 (more...)}
 dt = number: 0.0344777
(6) Lua upvalue 'gameUpdateRef' at file 'game.lua:2687'
Local variables:
 self = table: 0x03bf8538  {F_GUIDE:false, F_CRASH_REPORTS:false, booster_pack_sparkles:table: 0x0bc35490, F_QUIT_BUTTON:true, HUD_tags:table: 0x0bbfaf58, F_ENGLISH_ONLY:false (more...)}
 dt = number: 0.00861943
 http_resp = nil
 move_dt = number: 0.00861943
 (for generator) = C function: next
 (for state) = table: 0x03bfcdd0  {1:table: 0x092f1d78, 2:table: 0x11cf25e8, 3:table: 0x03ee80e8, 4:table: 0x06325e80, 5:table: 0x06326fe0, 6:table: 0x06056788, 7:table: 0x060578b0 (more...)}
 (for control) = number: nan
 k = number: 659
 v = table: 0x04e99c98  {pixellated_rect:table: 0x03d60e90, click_offset:table: 0x11d4df48, children:table: 0x05f3a2d0, parent:table: 0x03d7be48, T:table: 0x06030b10 (more...)}
(7) Lua method 'update' at Steamodded file 'core/ui.lua:81' 
Local variables:
 self = table: 0x03bf8538  {F_GUIDE:false, F_CRASH_REPORTS:false, booster_pack_sparkles:table: 0x0bc35490, F_QUIT_BUTTON:true, HUD_tags:table: 0x0bbfaf58, F_ENGLISH_ONLY:false (more...)}
 dt = number: 0.00861943
(8) Lua field 'update' at file 'main.lua:965'
Local variables:
 dt = number: 0.00861943
(9) Lua function '?' at file 'main.lua:909' (best guess)
(10) global C function 'xpcall'
(11) Love2D function at file 'boot.lua:377' (best guess)
Local variables:
 func = Lua function '?' (defined at line 880 of chunk main.lua)
 inerror = boolean: true
 deferErrhand = Lua function '(Love2D Function)' (defined at line 348 of chunk [love "boot.lua"])
 earlyinit = Lua function '(Love2D Function)' (defined at line 355 of chunk [love "boot.lua"])
#

bug with Aura lvl 2

crisp hazel
#

The only other thing I would reccomend on the Upgrades is to change the tooltip to be something like this:


(currently level 1)```
quick lantern
#

what exactly did you do with Aura?

crisp hazel
#

That's all I did

#

I selected it and then selected a card

#

and it crashed

quick lantern
quick lantern
# crisp hazel The only other thing I would reccomend on the Upgrades is to change the tooltip ...

I tried doing that previously, but I wasn't able to figure out how to make dynamic tooltips.
But I just realized that I could just define that like any other changed description that I had already defined.
https://github.com/ValkyRiver/upgrademod

GitHub

upgrademod is a Balatro mod by ValkyRiver which allows every item in the Collection to be upgraded (except for decks, but there are 3 new decks) - ValkyRiver/upgrademod

crisp hazel
#

also some of the stuff isn't working properly.

I have level 2 editions and this holo card should give 15 mult but only gives 10

quick lantern
hollow marlin
#

Ive got nothing installed except lovely/steamodded

#

Do I need to install it differently from other steamodded mods?

crisp hazel
#

Change lovely ver. To beta6

hollow marlin
#

O shoot

#

Still no :(

#

Oh-

#

I was installing it wrong

#

Forgot the file for lovely goes somewhere different

#

Ayyyy it worked thanks @crisp hazel

crisp hazel
#

random crash when hovering over a tag

crisp hazel
#

Some ideas as well:

The Blacksmith - Tarot Card

1 in 4 chance to spawn a Upgrade on use.

Mega Upgrade Pack - 16$

Select 2 of 5 upgades.

crisp hazel
tawny sundial
quick lantern
# crisp hazel

the variable tag_level_new is really there to make sure changing the level of a tag in the collection doesn't suddenly upgrade your tags in game.
So what this suggests is that tag_level_new isn't currently defined, which is strange, since this variable should always be defined (it gets set to 1 when launching the game, and only ever gets changed numerically)

quick lantern
#

Also, fixed the texture of glass cards (which was broken before) as well as the 2x sprites (which were offset by 1 pixel)

hollow marlin
#

Ok this mod is hilarious

#

I just got 4 double tags and used them on a spectral tag, with tags at level 6, to get 24 spectral packs

#

And got 7 hacks with effect jokers at level 5, 6 cards that give 2.85x mult for every card triggered, and a smeared joker to basically guarantee I can play 5 cards each turn, for a total of, if my math is correct, increasing the mult by around a novemnonagintillion (297 digits) times, and this was on the plasma deck so basically double the number of digits and you get the easiest naneinf I've ever seen in a mod, by ante 22

crisp hazel
#

Any good strats to get more upgrade packs?

#

I'm trying to go for a high score run - got to e12

#

I don't wanna get the level decks as I feel like that's kinda cheating by giving a boost

crisp hazel
#

Man, I really wish we could have levels higher then 4 for most stuff

quartz escarp
#

Im getting this error, Where did I mess up? 😂

spring orbit
rain lagoon
#

It's lovely crash

rain lagoon
quartz escarp
#

@rain lagoon I didnt have steammoded in the mod fodler at the time of that, but im still getting a similar report even with it.

woven karma
#

if there's a syntax error then the game crashes before they can be applied

quick lantern
quick lantern
# quartz escarp https://gyazo.com/589b2b5f879a3c8367a4af11def6e0f4

That is really odd. I didn't change this part of the code at all.

        G.E_MANAGER:add_event(Event({
            blockable = false,
            func = (function() -- Here is line 2559 in card.lua
                    play_sound('whoosh2', math.random()*0.2 + 0.9,0.5)
                    play_sound('crumple'..math.random(1, 5), math.random()*0.2 + 0.9,0.5)
                return true end)
        }))
    end```
So maybe some other mod messed with card.lua as well.
quick lantern
#

Update: I fixed a glitch with Mail-In Rebate

#

lol 3 upgrades in one shop (sad that I can only afford one)

hollow marlin
#

Would it be possible to at least make it compatible with the talisman mod?

#

That's the one that raises the naneinf value significantly

quick lantern
#

At the moment, there is a bit in the code which sets the score to e306 if overflows

quick lantern
quick lantern
#

By the way, fixed Oops! All 6s and Séance

quick lantern
#

fixed a glitch with wraith

quick lantern
#

Also, stuntman and needle is bugged

quick lantern
quick lantern
smoky venture
quick lantern
smoky venture
quick lantern
smoky venture
#

When it tried to show me the cards

#

also, a different error now, for some reason, when I play with just this mod without talisman, it deletes some of my jokers at the end of round and each of them says saved

quick lantern
smoky venture
#

Also, for the other error, I have video

noble garden
quick lantern
# noble garden Such a bizarre error

I figured out the error. In the part of the code that deals with Mr. Bones, it checks like this (simplified pseudocode):

if Mr. Bones and game over and (Talisman mod and score (Talisman format) reached**) **or score reached

but that actually triggers when only score reached is true.

instead, it should be

if Mr. Bones and game over and (Talisman mod and score (Talisman format) reached or score reached)

Note the position of )

quick lantern
smoky venture
#

No, sadly

#

Another bug, this one way simpler. If you use upgraded grim to get tags, it can give you the one that upgrades a random hand, which doesn't choose a hand, so the game crashes when it tries to upgrade it.

#

Another one, although it doesn't matter that much. If the upgrade item is free, you still need to have it's none-free amount of money to buy it, but you don't lose any.

quick lantern
quick lantern
smoky venture
# quick lantern unfortunately, i still couldn't replicate this bug

The thing about that bug is that I also tried doing the same thing, but it worked. My guess is that one of the upgrades just crashes when it shows up, but since there are only 13 or so upgrades, then it should happen more frequently. Although, in all the time I played the mod, I didn’t see a single rare upgrade, so it might have to do with one of them.

#

Also, good news, I believe the run that crashed is still saved on omeganum talisman, so I may be able to get a video of it.

smoky venture
#

Another bug, doesn't affect gameplay. On level 7 aura, it says it has a 5% chance to add holographic and a 100% chance to add polychrome.

#

Another bug, level 4 crystal ball says it gives 4 consumable slots, but it gives 5.

smoky venture
#

Bad bug: I am pretty sure talisman doesn't increase the score limit while you have this mod installed.

smoky venture
noble garden
#

I've been playing with this mod for a while and I gotta say, well done! This shits incredible!

cinder lantern
#

Oops! The game crashed:
Syntax error: card.lua:2676: unexpected symbol near ')'

Additional Context:
Balatro Version: 1.0.1m-FULL
Modded Version: ???
Love2D Version: 11.5.0
Lovely Version: 0.6.0

Stack Traceback

(3) C function 'function: 0x3d52cf38'
(4) global C function 'require'
(5) main chunk of file 'main.lua' at line 859
(6) global C function 'require'
(7) Love2D function at file 'boot.lua:323' (best guess)
Local variables:
c = table: 0x3d52a5a8 {identity:false, version:11.5, accelerometerjoystick:true, modules:table: 0x3d52a5f8 (more...)}
openedconsole = boolean: false
confok = boolean: true
conferr = nil
(8) global C function 'xpcall'
(9) Love2D function at file 'boot.lua:362' (best guess)
Local variables:
result = boolean: true
(10) global C function 'xpcall'
(11) Love2D function at file 'boot.lua:377' (best guess)
Local variables:
func = Lua function '(Love2D Function)' (defined at line 355 of chunk [love "boot.lua"])
inerror = boolean: true
deferErrhand = Lua function '(Love2D Function)' (defined at line 348 of chunk [love "boot.lua"])
earlyinit = Lua function '(Love2D Function)' (defined at line 355 of chunk [love "boot.lua"])

#

anyone know what i did wrong here?

#

getting this anytime i boot it up

quick lantern
quick lantern
smoky venture
noble garden
#

Is this mod not compatible witg any other mod?

smoky venture
noble garden
#

ruins it for me

quick lantern
# noble garden Is this mod not compatible witg any other mod?

upgrademod is quite different from most other mods — instead of adding new jokers or consumables etc. to the game, it alters (upgrades) every item in the vanilla game. Because of that, it is probably not going to be compatible with many other mods, and even if it were, the items in the other mod wouldn’t be upgradeable at this moment.

noble garden
#

There are mods I like to use (like grim) who add things that aren't joker related

#

And I'd like to use them in conjuction to this

quick lantern
#

Since this mod makes a lot of changes to the base game directly (instead of adding features), there's a decent amount of overwriting, which can cause incompatibility

#

I've only recently made it compatible with Talisman in version 4 — prior to that, this mod was also not compatible with Talisman

noble garden
#

The game still crashed for me when I tried to use it

quick lantern
noble garden
#

No just talisman

#

I might have to update my talisman tho

#

I'll come back to you on that

minor sentinel
#

I'm getting this whenever i play a hand and a joker has polychrome 🫤

quick lantern
#

this was just an oversight, since i had to make significant changes to the code just to make it compatible with Talisman (and I overlooked that there shouldn't be a 2 at the of edition_effects)

cedar oracle
#

Oops! The game crashed:
Syntax error: card.lua:2672: unexpected symbol near ')'

Additional Context:
Balatro Version: 1.0.1m-FULL
Modded Version: ???
Love2D Version: 11.5.0
Lovely Version: 0.6.0

Stack Traceback

(3) C function 'function: 0x241dcee8'
(4) global C function 'require'
(5) main chunk of file 'main.lua' at line 859
(6) global C function 'require'
(7) Love2D function at file 'boot.lua:323' (best guess)
Local variables:
c = table: 0x241d9c68 {identity:false, version:11.5, accelerometerjoystick:true, modules:table: 0x241d9cb8 (more...)}
openedconsole = boolean: false
confok = boolean: true
conferr = nil
(8) global C function 'xpcall'
(9) Love2D function at file 'boot.lua:362' (best guess)
Local variables:
result = boolean: true
(10) global C function 'xpcall'
(11) Love2D function at file 'boot.lua:377' (best guess)
Local variables:
func = Lua function '(Love2D Function)' (defined at line 355 of chunk [love "boot.lua"])
inerror = boolean: true
deferErrhand = Lua function '(Love2D Function)' (defined at line 348 of chunk [love "boot.lua"])
earlyinit = Lua function '(Love2D Function)' (defined at line 355 of chunk [love "boot.lua"])

#

I dont have any other mod installed

#

only lovely and steammoded

quick lantern
# sleek vortex same

I can’t fix this bug if I don’t know what caused that, could someone explain?

sleek vortex
#

how do i figure that out?

sleek vortex
#

this is the error log
Oops! The game crashed:
Syntax error: card.lua:2674: unexpected symbol near ')'

Additional Context:
Balatro Version: 1.0.1m-FULL
Modded Version: ???
Love2D Version: 11.5.0
Lovely Version: 0.6.0

Stack Traceback

(3) C function 'function: 0x0002ce50'
(4) global C function 'require'
(5) main chunk of file 'main.lua' at line 859
(6) global C function 'require'
(7) Love2D function at file 'boot.lua:323' (best guess)
Local variables:
c = table: 0x00026f90 {identity:false, version:11.5, accelerometerjoystick:true, modules:table: 0x00026fe0 (more...)}
openedconsole = boolean: false
confok = boolean: true
conferr = nil
(8) global C function 'xpcall'
(9) Love2D function at file 'boot.lua:362' (best guess)
Local variables:
result = boolean: true
(10) global C function 'xpcall'
(11) Love2D function at file 'boot.lua:377' (best guess)
Local variables:
func = Lua function '(Love2D Function)' (defined at line 355 of chunk [love "boot.lua"])
inerror = boolean: true
deferErrhand = Lua function '(Love2D Function)' (defined at line 348 of chunk [love "boot.lua"])
earlyinit = Lua function '(Love2D Function)' (defined at line 355 of chunk [love "boot.lua"])

quick lantern
#

Did this error occur as soon as you loaded the game?

quick lantern
spring orbit
#

👀
Man, I wish I could try this mod out, but it being incompatible with almost every other mod is kinda a buzzkill.

crisp hazel
#

It's a neat concept for sure but I feel like limiting it to only 4 upgrades for most stuff is also kind of a mediocre turnout

#

maybe i'm used to more cryptid esque things

quick lantern
quick lantern
#

Essentially, because upgrademod alters the vanilla game directly, instead of adding things, it’s incompatible with other mods by its very design

spring orbit
quick lantern
#

I only just managed to make it compatible with Talisman as of now

quick lantern
# spring orbit Yee, that's unfortunate... I know that Tattered Decks was having some alterered ...

But a separate Joker is not the same as changing an existing Joker (which other mods might depend upon), let alone in the middle of a run.

I don’t think I’ve seen another mod that dynamically changes items mid-game, and this is what makes upgrademod unique. But this uniqueness comes with a catch — incompatibility.

I have already thought about the compatibility problem for a long time, and I have yet to come up with a solution that generalizes to other mods.

#

So for now, upgrademod should only be used alone (or with Talisman)

willow quest
#

(jokerevolution doesn't do that last part idt but i'm sure you could do it)

quick lantern
willow quest
#

it is inefficient yes, but it does solve all compatibility issues

#

actually wait

#

if you do it by modifying base jokers

#

you'd only need to make just 1 extra set of items

#

and then you can modify the extra set of items to upgrade them

#

thus not interfering with vanilla code or jokers

#

and being more efficient

quick lantern
willow quest
#

people like using mods and lots of them

quick lantern
#

Even if I solved these "issues" this still doesn't solve the core problem — imagine that you are using upgrademod with another mod. Well... the new modded jokers don't have upgrades, so it is still "incompatible" in some sense.

willow quest
#

it's not really incompatible

#

incompatibility is not being able to use the mods together at all

#

but yeah if people wanted mod compatibility it'd be on them to make it

quick lantern
#

Unfortunately, I kind of have to leave it this way for now — the mechanics of upgrademod already make a lot of changes to the code of the base game (which is what other mods depend on). The fix is not as simple as just creating a second set for all items in the game.

willow quest
#

not a second set of identical items

#

so you have the base items, which you can then upgrade into the next level as normal, replacing them with the new set

and now the new set you can use your existing method for because they're not the vanilla items, right?

#

i hope i'm getting this across properly

#

i'm gonna put it into an example just in case

#

so you've got vanilla splash and your funny upgrade item for level 2

#

use the upgrade on splash, it gets destroyed and replaced with splash level 2 from the copy of items you made

#

now, when you make it level 3, you just modify the splash level 2 joker code like you do now

#

so the regular vanilla splash is not affected by the changes

#

and you only have to make 1 set

#

and hopefully it can be used with other mods

#

it is a bit inefficient, but doesn't add more workload when you add more upgrade levels and if you use a custom rarity they won't appear in the shop

#

they will still be obtainable via cryptid's deck of equillibrium or the funny exotic that spawns by collection order, you could remove them from the collection or specifically patch these two out because cryptid is pretty big

#

pointer doesn't count because it ignores custom rarity jokers (except cryptid's own Epic)

quick lantern
#

Yeah, it's not as simple as that. It's issue is not just with the items. I had to dig into the code itself in a lot of places, even overwriting certain parts that can't be easily be modified from the item alone. Essentially, I reworked the game itself in some places.

willow quest
#

so what if you instead

take ownership of all vanilla items
add a new variable to them called "Upgrade Level"
and put their effects in if statements that check the upgrade level and run the code of the respective upgrade level (and also replace the joker's text when you upgrade it)

#

and then you increase the upgrade level with the upgrade items

#

does that work

#

this could have some collisions with mods that overwrite other vanilla jokers, but that's still less incompatible mods than "Every mod except Talisman"

#

and it's more likely to just overwrite the other mod's changes than collide with them (I assume)

#

this does have one incompatibility which i guess depends on the method used to detect what a "Modded Joker" is

#

morefluff has two jokers that target "modded jokers" idk if they count jokers you've taken ownership of

#

but that's not too big of a problem

quick lantern
#

As far as I'm aware, the main compatibility issue isn't with the items itself

willow quest
#

well this changes the system of upgrading the jokers

#

it would contain your mod's code in itself with barely any patches or changes to vanilla wouldn't it

#

if i had to guess you'd have to make a change to joker descriptions to let them be updated mid-game? but you could probably do that just by adding to code rather than altering/replacing existing code

quick lantern
#

The main issues are with all of those overwritten functions that come from the base game

#

like evaluate_play, create_card_for_shop, end_round

willow quest
#

why do you need to overwrite these functions

#

if it's just for actually upgrading the items, this should work since it uses a self contained upgrade method, right?

#

also what if rather than overwriting the functions you check if an item that requires them is active, and use the new function if it is, and the old one if it's not

#

or hook functions to add code to them without modifying base code at all

quick lantern
#

I can't hook the function if the if is inside a for

willow quest
#

what exactly do the overwritten functions do/change

quick lantern
#

Example: upgraded Splash triggers editions on cards held in hand. This changes how some playing cards are evaluated, so I would have to add a section in evaluate_play to take in upgraded Splash into account. And I can’t hook it normally, since it’s inside a for loop.

willow quest
#

that seems unnecessary

#

can't you just check the editions of the cards held in hand and give their effects like baron does

#

that seems really easy actually, at worst you hardcode vanilla editions and add support for large mods' editions (maybe)

quick lantern
willow quest
#

why can't that be done in the joker's own code if it sees h_chips in the edition table

patent flame
#

No you wouldn’t

#

The joker code can evaluate all cards in hand

#

Doing it Marie’s way would take time to set up, especially considering you’ve already done all your changes to the code, but it would probably make everything a lot simpler AND make it so this mod can be used alongside other mods

willow quest
#

i'd be down to pitch in code for it (not today though)

#

it'd be super cool for this mod to be compatible with other mods

patent flame
#

At the very least, overwriting functions should not be done unless absolutely necessary, you should either hook them or lovely patch into them

quick lantern
#

Really, it’s just not high on my priority list for this mod, to make such a drastic change to it…

Heck, this mod isn’t even in my priority list at the moment

willow quest
#

:(

quick lantern
#

It’s not like I don’t care about this mod — I certainly do, but I’m not quite ready to start another big project yet

willow quest
#

that's alright

#

well if you do ever get around to overhauling this mod for compatibility i could take some load off the coding

quick lantern
#

For now, I might just try case by case, to see where the most common places of incompatibility are

dusty lance
#

Hey, i get this error as soon as I launch the game. Here are the mods I use, and I don't think those are the issue as there are quality of life mods.

Syntax error: card.lua:2691: unexpected symbol near ')'


Additional Context:
Balatro Version: 1.0.1n-FULL
Modded Version: 1.0.0~ALPHA-1227a-STEAMODDED
LÖVE Version: 11.5.0
Lovely Version: 0.6.0

Stack Traceback
===============
(3)  C function 'function: 0x1ca1bbe0'
(4) global C function 'require'
(5) main chunk of file 'main.lua' at line 1025
(6) global C function 'require'
(7) LÖVE function at file 'boot.lua:323' (best guess)
Local variables:
 c = table: 0x1ca1a500  {identity:false, version:11.5, accelerometerjoystick:true, modules:table: 0x1ca1a550 (more...)}
 openedconsole = boolean: false
 confok = boolean: true
 conferr = nil
(8) global C function 'xpcall'
(9) LÖVE function at file 'boot.lua:362' (best guess)
Local variables:
 result = boolean: true
(10) global C function 'xpcall'
(11) LÖVE function at file 'boot.lua:377' (best guess)
Local variables:
 func = Lua function '(LÖVE Function)' (defined at line 355 of chunk [love "boot.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"])
#

I was trying to get a previous Steamodded version, as the Github says that it has been tested in a previous version that I have, but sadly I couldn't find it, so if you could help me with it I would appreciate it a ton :)

quick lantern
#

Did you have any other mods active?

dusty lance
#

the ones from the image were the only mods I had

#

I'll try without them

#

I've tried with just Steamodded, Lovely and the version without Talisman, but the error is similar

#
Oops! The game crashed:
Syntax error: card.lua:2684: unexpected symbol near ')'


Additional Context:
Balatro Version: 1.0.1n-FULL
Modded Version: 1.0.0~ALPHA-1227a-STEAMODDED
LÖVE Version: 11.5.0
Lovely Version: 0.6.0

Stack Traceback
===============
(3)  C function 'function: 0x383dcee8'
(4) global C function 'require'
(5) main chunk of file 'main.lua' at line 881
(6) global C function 'require'
(7) LÖVE function at file 'boot.lua:323' (best guess)
Local variables:
 c = table: 0x383d9c68  {identity:false, version:11.5, accelerometerjoystick:true, modules:table: 0x383d9cb8 (more...)}
 openedconsole = boolean: false
 confok = boolean: true
 conferr = nil
(8) global C function 'xpcall'
(9) LÖVE function at file 'boot.lua:362' (best guess)
Local variables:
 result = boolean: true
(10) global C function 'xpcall'
(11) LÖVE function at file 'boot.lua:377' (best guess)
Local variables:
 func = Lua function '(LÖVE Function)' (defined at line 355 of chunk [love "boot.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"])
```
quick lantern
jaunty valve
#

Very interesting looking mod but cant load it whatsoever, it gives the same error as above.

quick lantern
#

I'm finding it difficult to fix this, since this doesn't happen on my side — which version of Steamodded and Lovely are you using, and do you have any other mods installed?

warm bobcat
#

also have the same issue

quick lantern
# warm bobcat also have the same issue

I can't fix it if you don't tell me which version of Steammodded and Lovely you're using, and if there are any mods installed.
This is because on my side, upgrademod works perfectly fine, so there has to be something different on your side.

noble tundra
#

One second, sent the wrong one

quick lantern
noble tundra
#

I see, if I had upgrademod try before, could that've caused me issues?

quick lantern
noble tundra
#

Oh wait

#

I'm in the wrong freaking chat again

#

God, I hate discord forums

#

I'm supposed to be in the autoUPDATE chat

livid lance
#

hey, I get the error when I launch game with this mod, what could be the issue?
I removed any mods from folder except this one

#

Oops! The game crashed:
Syntax error: card.lua:2666: unexpected symbol near ')'

Additional Context:
Balatro Version: 1.0.1n-FULL
Modded Version: 1.0.0~ALPHA-1418a-STEAMODDED
LÖVE Version: 11.5.0
Lovely Version: 0.7.1
Platform: Windows

Stack Traceback

(3) C function 'function: 0x2a0fd378'
(4) global C function 'require'
(5) main chunk of file 'main.lua' at line 881
(6) global C function 'require'
(7) LÖVE function at file 'boot.lua:323' (best guess)
Local variables:
c = table: 0x2a0ff090 {identity:false, version:11.5, accelerometerjoystick:true, modules:table: 0x2a0f4878 (more...)}
openedconsole = boolean: false
confok = boolean: true
conferr = nil
(8) global C function 'xpcall'
(9) LÖVE function at file 'boot.lua:362' (best guess)
Local variables:
result = boolean: true
(10) global C function 'xpcall'
(11) LÖVE function at file 'boot.lua:377' (best guess)
Local variables:
func = Lua function '(LÖVE Function)' (defined at line 355 of chunk [love "boot.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"])

quick lantern
quick lantern
#

See, in the game's code, Purple Seal and 8 Ball use the same seed

quick lantern
#

upgrademod is now compatible with Balatro Multiplayer!
https://github.com/ValkyRiver/upgrademod

(If using upgrademod with Balatro Multiplayer, one must replace the file BalatroMultiplayer / Networking / Action_Handlers.lua with the version of the file in the upgrademod zip file) EDIT: this is no longer necessary.

GitHub

upgrademod is a Balatro mod by ValkyRiver which allows every item in the Collection to be upgraded (except for decks, but there are 3 new decks) - ValkyRiver/upgrademod

quick vessel
#

cus lovely supports cross-mod patches

quick lantern
#

This is no longer necessary due to a Balatro Multiplayer update

civic valve
#

happens when I buy anything

#

on the Level 2 deck

quick lantern
#

try just upgrademod, balatro multiplayer, and perhaps talisman

civic valve
#

none of those other mods themselves are the issue

#

I'll stress test tomorrow with just the essentials though

#

my thought right now is this is a most recent smods thing and not an upgrademod thing

quick lantern
quick lantern
#

note: balatro multiplayer just got an update (0.2.0). the current version of upgrademod is only compatible with 0.1.8.4, not 0.2.0

willow quest
#

this really is the shedinja of balatro mods

void kelp
#

Is this mod on BMM?

quick lantern
quick lantern
#

I haven’t tested BMM with upgrademod

void kelp
#

just makes installing/managing/updating mods easier as you start to download a bunch of them

civic valve
#

Happens upon buying anything in the shop. On ante 1 Blue Deck, it also seems to apply x-chips

#

this happens on both 0312b and 0323b

#

nothing except upgrademod, smods and lovely