Skip to content

Crash attempting to save with an Envy tag #122

@Skelebrolo

Description

@Skelebrolo

Winning the game or closing to Main Menu with an Envy tag crashes the game. I hypothesize this is because SMODS fails to evaluate the function within the Envy tag when the variable G.jokers.cards is not loaded.
if #G.jokers.cards > 0 then seems to cause an index of nil only on save, not on initialization. Setting this "if" statement to True seems to save the Envy tag without issue.

Oops! The game crashed:
[SMODS entr "items/inversions/reverse_runes.lua"]:399: attempt to index field 'jokers' (a nil value)

Additional Context:
Balatro Version: 1.0.1o-FULL
Modded Version: 1.0.0~BETA-1503a-STEAMODDED
LÖVE Version: 11.5.0
Lovely Version: 0.9.0
Platform: Windows
Steamodded Mods:
    1: Entropy by Ruby, The Entropy Discord [ID: entr, Priority: 666, Version: 1.3.3, Uses Lovely]
    2: Card Sleeves by Larswijn [ID: CardSleeves, Priority: -10, Version: 1.8.0, Uses Lovely]
    3: Luna's Enhancedments by LunaAstraCassiopeia [ID: EnhancedEnhancements]
    4: Galdur by Eremel_ [ID: galdur, Priority: -10000, Version: 1.2.1d, Uses Lovely]
    5: Banner by SylviBlossom [ID: banner, Version: 1.2.1, Uses Lovely]
    6: SystemClock by Breezebuilder [ID: SystemClock, Priority: 100000, Version: 1.7.1, Uses Lovely]
    7: Handy by SleepyG11 [ID: Handy, Version: 1.5.1f, Uses Lovely]
    8: Rain World Cards by Omlain [ID: rw_deck, Version: 1.0.0]
    9: DebugPlus by WilsontheWolf [ID: DebugPlus, Version: 1.5.2, Uses Lovely]
    10: Spectrallib by lord.ruby, InvalidOS [ID: Spectrallib, Priority: -1000, Version: 1.1.2, 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 616 of chunk [lovely debugplus.console "debugplus/console.lua"])
 handler = Lua function '(LÖVE Function)' (defined at line 616 of chunk [lovely debugplus.console "debugplus/console.lua"])
(4) Lua method 'calculate' at file 'items/inversions/reverse_runes.lua:399' (from mod with id entr)
Local variables:
 self = table: 0x2e4087c8  {alerted:true, object_type:RuneTag, cry_order:7057, _saved_d_u:true, original_key:envy, mod:table: 0x2d4e6500, registered:true, _discovered_unlocked_overwritten:true (more...)}
 mark = table: 0x2ee576c0  {is_rune:true, HUD_sprite:table: 0x2f51fb30, tally:87, tag_sprite:table: 0x2f51fb30, triggered:false, HUD_rune:table: 0x2ebdbc08, pos:table: 0x2e408748 (more...)}
 context = table: 0x2dee0470  {other_card:table: 0x2dfb2e28, card_modified:true}
 (*temporary) = nil
 (*temporary) = nil
 (*temporary) = number: 0.04
 (*temporary) = table: 0x2dfb2e28  {click_offset:table: 0x2ed54b08, children:table: 0x2eb1f0b0, ambient_tilt:0.2, T:table: 0x2ed54ae0, offset:table: 0x2f379ef0, role:table: 0x2d8b9a18 (more...)}
 (*temporary) = nil
 (*temporary) = string: "attempt to index field 'jokers' (a nil value)"
(5) Lua global 'calculate_runes' at file 'items/misc/runes.lua:403' (from mod with id entr)
Local variables:
 context = table: 0x2dee0470  {other_card:table: 0x2dfb2e28, card_modified:true}
 blacklist = table: 0x2e5305e0  {func:true, rune_break:true, remove:true, nope:true}
 (for generator) = C function: next
 (for state) = table: 0x2e4a1850  {1:table: 0x2ee576c0}
 (for control) = number: nan
 i = number: 1
 v = table: 0x2ee576c0  {is_rune:true, HUD_sprite:table: 0x2f51fb30, tally:87, tag_sprite:table: 0x2f51fb30, triggered:false, HUD_rune:table: 0x2ebdbc08, pos:table: 0x2e408748 (more...)}
(6) Lua field 'calculate_context' at file 'items/misc/runes.lua:442' (from mod with id entr)
Local variables:
 context = table: 0x2dee0470  {other_card:table: 0x2dfb2e28, card_modified:true}
 return_table = nil
 ret = nil
(7) Lua method 'set_base' at file 'lib/hooks.lua:314' (from mod with id entr)
Local variables:
 self = table: 0x2dfb2e28  {click_offset:table: 0x2ed54b08, children:table: 0x2eb1f0b0, ambient_tilt:0.2, T:table: 0x2ed54ae0, offset:table: 0x2f379ef0, role:table: 0x2d8b9a18 (more...)}
(8) Lua upvalue 'card_init' at file 'card.lua:45'
Local variables:
 self = table: 0x2dfb2e28  {click_offset:table: 0x2ed54b08, children:table: 0x2eb1f0b0, ambient_tilt:0.2, T:table: 0x2ed54ae0, offset:table: 0x2f379ef0, role:table: 0x2d8b9a18 (more...)}
 X = number: 0
 Y = number: 0
 W = number: 2.70439
 H = number: 3.63161
 card = table: 0x2e6b7f50  {lc_atlas:cards_1, pos:table: 0x2e6b8040, value:Ace, hc_atlas:cards_2, name:Ace of Spades, suit:Spades}
 center = table: 0x2e0098a0  {max:500, unlocked:true, key:c_base, set:Default, config:table: 0x2e009ab0, _saved_d_u:true, effect:Base, discovered:true, line:base, pos:table: 0x2e009a50 (more...)}
 params = nil
(9) Lua method 'init' at Steamodded file 'src/overrides.lua:2045' 
Local variables:
 self = table: 0x2dfb2e28  {click_offset:table: 0x2ed54b08, children:table: 0x2eb1f0b0, ambient_tilt:0.2, T:table: 0x2ed54ae0, offset:table: 0x2f379ef0, role:table: 0x2d8b9a18 (more...)}
 X = number: 0
 Y = number: 0
 W = number: 2.70439
 H = number: 3.63161
 card = table: 0x2e6b7f50  {lc_atlas:cards_1, pos:table: 0x2e6b8040, value:Ace, hc_atlas:cards_2, name:Ace of Spades, suit:Spades}
 center = table: 0x2e0098a0  {max:500, unlocked:true, key:c_base, set:Default, config:table: 0x2e009ab0, _saved_d_u:true, effect:Base, discovered:true, line:base, pos:table: 0x2e009a50 (more...)}
 params = nil
(10) Lua global 'Card' at file 'engine/object.lua:35'
Local variables:
 self = table: 0x2d8f06a0  {get_chip_x_bonus:function: 0x2d8dbf38, should_hide_front:function: 0x2d8dfde0, set_base:function: 0x2de992f8, no:function: 0x2e20b508, set_card_area:function: 0x2d95f828 (more...)}
 obj = table: 0x2dfb2e28  {click_offset:table: 0x2ed54b08, children:table: 0x2eb1f0b0, ambient_tilt:0.2, T:table: 0x2ed54ae0, offset:table: 0x2f379ef0, role:table: 0x2d8b9a18 (more...)}
(11) Lua upvalue 'gameMainMenuRef' at file 'game.lua:1674'
Local variables:
 self = table: 0x2d580288  {F_GUIDE:false, F_CRASH_REPORTS:false, runes:table: 0x2e4a1850, F_QUIT_BUTTON:true, F_ENGLISH_ONLY:false, sort_id:569, F_DISCORD:true, STAGE:1 (more...)}
 change_context = nil
 splash_args = table: 0x2df13ac8  {mid_flash:0}
 SC_scale = number: 1.1
 CAI = table: 0x2f3d4120  {TITLE_TOP_W:2.0487804878049, TITLE_TOP_H:2.7512195121951}
(12) Lua upvalue 'game_main_menu_ref' at Steamodded file 'src/ui.lua:262' 
Local variables:
 self = table: 0x2d580288  {F_GUIDE:false, F_CRASH_REPORTS:false, runes:table: 0x2e4a1850, F_QUIT_BUTTON:true, F_ENGLISH_ONLY:false, sort_id:569, F_DISCORD:true, STAGE:1 (more...)}
 change_context = nil
(13) Lua upvalue 'oldfunc' at file 'src/core.lua:138' (from lovely module systemclock.core)
Local variables:
 self = table: 0x2d580288  {F_GUIDE:false, F_CRASH_REPORTS:false, runes:table: 0x2e4a1850, F_QUIT_BUTTON:true, F_ENGLISH_ONLY:false, sort_id:569, F_DISCORD:true, STAGE:1 (more...)}
 change_context = nil
(14) Lua method 'main_menu' at file 'lib/loader.lua:105' (from mod with id entr)
Local variables:
 change_context = table: 0x2d580288  {F_GUIDE:false, F_CRASH_REPORTS:false, runes:table: 0x2e4a1850, F_QUIT_BUTTON:true, F_ENGLISH_ONLY:false, sort_id:569, F_DISCORD:true, STAGE:1 (more...)}
(15) Lua field 'func' at file 'functions/button_callbacks.lua:3103'
(16) Lua method 'handle' at file 'engine/event.lua:96'
Local variables:
 self = table: 0x2ea970d8  {start_timer:true, timer:REAL, func:function: 0x2f365368, blockable:true, trigger:immediate, created_on_pause:true, delay:0, complete:false, time:47.43166298737 (more...)}
 _results = table: 0x2e060ed0  {blocking:false, pause_skip:false, time_done:false, completed:false}
(17) Lua method 'update' at file 'engine/event.lua:187'
Local variables:
 self = table: 0x2e0f76a8  {queues:table: 0x2e0f76d0, queue_last_processed:35.983333333333, append_count:0, append_queue:base, queue_dt:0.016666666666667, queue_timer:35.98909930676 (more...)}
 dt = number: 0.00691602
 forced = nil
 (for generator) = C function: next
 (for state) = table: 0x2e0f76d0  {unlock:table: 0x2e0f77c0, galdur:table: 0x2e177758, other:table: 0x2e0f7860, tutorial:table: 0x2e0f7810, entr_desc:table: 0x2e0f7888, base:table: 0x2e0f77e8 (more...)}
 (for control) = number: nan
 k = string: "base"
 v = table: 0x2e0f77e8  {1:table: 0x2ea970d8, 2:table: 0x2ea97100, 3:table: 0x2f703820, 4:table: 0x2f364b30, 5:table: 0x2f488a60, 6:table: 0x2decbfa0, 7:table: 0x2e856498 (more...)}
 blocked = boolean: false
 i = number: 1
 results = table: 0x2e060ed0  {blocking:false, pause_skip:false, time_done:false, completed:false}
(18) Lua upvalue 'gameUpdateRef' at file 'game.lua:2732'
Local variables:
 self = table: 0x2d580288  {F_GUIDE:false, F_CRASH_REPORTS:false, runes:table: 0x2e4a1850, F_QUIT_BUTTON:true, F_ENGLISH_ONLY:false, sort_id:569, F_DISCORD:true, STAGE:1 (more...)}
 dt = number: 0
 http_resp = nil
(19) Lua upvalue 'game_update_ref' at Steamodded file 'src/ui.lua:385' 
Local variables:
 self = table: 0x2d580288  {F_GUIDE:false, F_CRASH_REPORTS:false, runes:table: 0x2e4a1850, F_QUIT_BUTTON:true, F_ENGLISH_ONLY:false, sort_id:569, F_DISCORD:true, STAGE:1 (more...)}
 dt = number: 0.00691602
(20) Lua upvalue 'upd' at file 'src/core.lua:121' (from lovely module systemclock.core)
Local variables:
 self = table: 0x2d580288  {F_GUIDE:false, F_CRASH_REPORTS:false, runes:table: 0x2e4a1850, F_QUIT_BUTTON:true, F_ENGLISH_ONLY:false, sort_id:569, F_DISCORD:true, STAGE:1 (more...)}
 dt = number: 0.00691602
(21) Lua upvalue 'update_ref' at file 'blind_functions.lua:668' (from mod with id Spectrallib)
Local variables:
 self = table: 0x2d580288  {F_GUIDE:false, F_CRASH_REPORTS:false, runes:table: 0x2e4a1850, F_QUIT_BUTTON:true, F_ENGLISH_ONLY:false, sort_id:569, F_DISCORD:true, STAGE:1 (more...)}
 dt = number: 0.00691602
(22) Lua upvalue 'update_ref' at file 'Entropy/card_buttons.lua:758' (from mod with id Spectrallib)
Local variables:
 self = table: 0x2d580288  {F_GUIDE:false, F_CRASH_REPORTS:false, runes:table: 0x2e4a1850, F_QUIT_BUTTON:true, F_ENGLISH_ONLY:false, sort_id:569, F_DISCORD:true, STAGE:1 (more...)}
 dt = number: 0.00691602
(23) Lua upvalue 'update_ref' at file 'lib/hooks.lua:860' (from mod with id entr)
Local variables:
 self = table: 0x2d580288  {F_GUIDE:false, F_CRASH_REPORTS:false, runes:table: 0x2e4a1850, F_QUIT_BUTTON:true, F_ENGLISH_ONLY:false, sort_id:569, F_DISCORD:true, STAGE:1 (more...)}
 dt = number: 0.00691602
(24) Lua upvalue 'upd' at file 'lib/hooks.lua:1981' (from mod with id entr)
Local variables:
 self = table: 0x2d580288  {F_GUIDE:false, F_CRASH_REPORTS:false, runes:table: 0x2e4a1850, F_QUIT_BUTTON:true, F_ENGLISH_ONLY:false, sort_id:569, F_DISCORD:true, STAGE:1 (more...)}
 dt = number: 0.00691602
(25) Lua method 'update' at file 'lib/hooks.lua:2244' (from mod with id entr)
Local variables:
 self = table: 0x2d580288  {F_GUIDE:false, F_CRASH_REPORTS:false, runes:table: 0x2e4a1850, F_QUIT_BUTTON:true, F_ENGLISH_ONLY:false, sort_id:569, F_DISCORD:true, STAGE:1 (more...)}
 dt = number: 0.00691602
(26) Lua upvalue 'love_update_ref' at file 'main.lua:1180'
Local variables:
 dt = number: 0.00691602
(27) Lua field 'update' at file 'modules/controller.lua:1027' (from lovely module handy/controller)
Local variables:
 dt = number: 0.00691602
(28) Lua function '?' at file 'main.lua:964' (best guess)
(29) global C function 'xpcall'
(30) LÖVE function at file 'boot.lua:377' (best guess)
Local variables:
 func = Lua function '?' (defined at line 935 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"])

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions