Fix/compat to work with Mobile Like Dragging when using MobileMaker On /main.lua replace line 68-93 snippet with this one: -- Called when activation key is pressed. Default F FRJM.activate = function (_) -- don't active when the selection overlay is visible if FRJM.state.selection_ui_active then return end
-- show the selection overlay FRJM.utils:show_card_selection_overlay()
-- handle the selection event G.E_MANAGER:add_event(Event({ trigger = 'immediate', -- Or try 'after' with delay = 0 if 'immediate' still fails func = function () -- don't handle anything if the overlay isn't active anymore if not FRJM.state.selection_ui_active then return true end
local card = G.CONTROLLER.clicked.target
-- If standard click target is nil, check MLD's touch tap state if not card and G.CONTROLLER.HID and G.CONTROLLER.HID.touch and G.CONTROLLER.touch_control and G.CONTROLLER.touch_control.s_tap then -- Check if the tap target exists and is a Card if G.CONTROLLER.touch_control.s_tap.target and G.CONTROLLER.touch_control.s_tap.target:is(Card) then card = G.CONTROLLER.touch_control.s_tap.target end end
-- handle the clicked/tapped card if different from previous card if card and card:is(Card) and card.config.center.set == 'Joker' and card.config.center.key ~= FRJM.state.card_selection.key then FRJM.utils:select_joker_card(card) end
-- Keep listening if overlay is still active and no valid selection was made return false end }))
You mean "locked/undiscovered", right?, Well it isn't available directly on the mod's configuration, why? because it is too OP and make the game less fun, so I hide it, you can enable it by manually editing the configuration file at: config/first-round-joker.jkr And change: ["disable_restriction"] = falseTo: ["disable_restriction"] = true
No, you can only spawn a single Joker. You can change the Joker at any moment but you can't spawn 2 Jokers by using this mod.
But I'm working on a new mod that let you customize the First Shop, so you can spawn any card, booster packs and Voucher you want on the first shop only.
I think this causes game crashes (had several around ante 3) IF you bought the joker on a seeded run. Sometimes I go back to try to beat a seed I failed on that had good potential but game crashes if I bought the neg joker, any idea how to fix?
EDIT just had it happen on non-seeded run
Oops! The game crashed: functions/state_events.lua:873: attempt to concatenate global 'i' (a nil value) Additional Context: Balatro Version: 1.0.1n-FULL Modded Version: 1.0.0~ALPHA-1321a-STEAMODDED LÖVE Version: 11.5.0 Lovely Version: 0.7.0 Platform: Windows Steamodded Mods: 1: Keyboard Shortcuts DorkDad by DorkDad141 [ID: keyboard_dorkdad] 2: First Round Joker by LnxFCA [ID: first-round-joker, Version: 2.1.0] 3: Set Seed Achievements Bypass by infarctus [ID: infarctus_Set_Seed_Achievements_Bypass] 4: Increase Shop Size by MonkeyHiko [ID: IncreaseShopSize] Lovely Mods: Stack Traceback =============== (3) Lua field 'evaluate_round' at file 'functions/state_events.lua:873' Local variables: pitch = number: 1.07 dollars = number: 6 (for generator) = C function: builtin#6 (for state) = table: 0x0ddb50d0 {1:table: 0x0da1f0f8, 2:table: 0x0d5f5280, 3:table: 0x0d58fda0} (for control) = number: 1 _ = number: 1 area = table: 0x0da1f0f8 {click_offset:table: 0x0d345db0, children:table: 0x0d4cc688, shuffle_amt:0 (more...)} (for generator) = C function: builtin#6 (for state) = table: 0x0d4cc660 {1:table: 0x0d85f848, 2:table: 0x0d6adc68, 3:table: 0x0d671f40, 4:table: 0x0d6541d0 (more...)} (for control) = number: 4 _ = number: 4 _card = table: 0x0d6541d0 {click_offset:table: 0x0d3f7548, static_rotation:false, ambient_tilt:0.2 (more...)} ret = number: 4 (*temporary) = Lua function '?' (defined at line 1005 of chunk functions/common_events.lua) (*temporary) = table: 0x0d674db8 {bonus:true, dollars:4} (*temporary) = string: "joker" (*temporary) = nil (*temporary) = string: "attempt to concatenate global 'i' (a nil value)" (4) Lua field 'func' at file 'game.lua:3348' (5) Lua method 'handle' at file 'engine/event.lua:99' Local variables: self = table: 0x0d78fa60 {start_timer:true, timer:TOTAL, blockable:true, trigger:immediate, func:function: 0x0d4cd940 (more...)} _results = table: 0x0d374788 {blocking:true, pause_skip:false, time_done:false, completed:false} (6) Lua method 'update' at file 'engine/event.lua:182' Local variables: self = table: 0x0d784cf0 {queue_last_processed:263.68333333342, queues:table: 0x0d784d18, queue_dt:0.016666666666667 (more...)} dt = number: 0.00695055 forced = nil (for generator) = C function: next (for state) = table: 0x0d784d18 {unlock:table: 0x0d784d40, other:table: 0x0d7851b8, tutorial:table: 0x0d784d90 (more...)} (for control) = number: nan k = string: "base" v = table: 0x0d784d68 {1:table: 0x0d6d6588, 2:table: 0x0d78fa60, 3:table: 0x0d5ef940, 4:table: 0x0dd91fc0 (more...)} blocked = boolean: false i = number: 2 results = table: 0x0d374788 {blocking:true, pause_skip:false, time_done:false, completed:false} (7) Lua upvalue 'gameUpdateRef' at file 'game.lua:2524' Local variables: self = table: 0x0d18fac0 {F_GUIDE:false, F_CRASH_REPORTS:false, F_QUIT_BUTTON:true, HUD_tags:table: 0x0db9a110 (more...)} dt = number: 0.00695055 http_resp = nil (8) Lua method 'update' at Steamodded file 'src/ui.lua:81' Local variables: self = table: 0x0d18fac0 {F_GUIDE:false, F_CRASH_REPORTS:false, F_QUIT_BUTTON:true, HUD_tags:table: 0x0db9a110 (more...)} dt = number: 0.00695055 (9) Lua field 'update' at file 'main.lua:992' Local variables: dt = number: 0.00695055 (10) Lua function '?' at file 'main.lua:931' (best guess) (11) global C function 'xpcall' (12) LÖVE function at file 'boot.lua:377' (best guess) Local variables: func = Lua function '?' (defined at line 902 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"])
NOTE: Is likely that the error is due to an incompatibility with other mods, also try to check that you have installed SMODS as indicated here: https://github.com/Steamodded/smods/wiki/#step-3-installing-steamodded, due to recent changes on Steamodded the latest version may have errors.
I tested the mods you mentioned but couldn’t reproduce the error in either seeded or non-seeded runs. Could you please update your Steamodded installation and try again to see if the issue persists?
I believe the error might have been caused by Steamodded and has been resolved in this commit: e29fc8a Let me know if updating resolves the issue!
Hi, I'm not seeing how to turn off the negative effect in the config file. I want to play with several jokers, but the negative effect makes them too expensive to purchase first round. Thanks for making this!
You can activate de "Base price" option, which reduces the card cost.
Also a new version is coming soon, I will add a way to "save" the Joker so that you can purchase it when you have the money. This is useful for Legendary Jokers whose base price is 20+. (It will be a new mod instead, since that feature will be helpful in other cases).
You can use Lock the Deal, it allows "saving" the item between shops/re-rerolls.
14 comments
On /main.lua replace line 68-93 snippet with this one:
-- Called when activation key is pressed. Default F
FRJM.activate = function (_)
-- don't active when the selection overlay is visible
if FRJM.state.selection_ui_active then return end
-- show the selection overlay
FRJM.utils:show_card_selection_overlay()
-- handle the selection event
G.E_MANAGER:add_event(Event({
trigger = 'immediate', -- Or try 'after' with delay = 0 if 'immediate' still fails
func = function ()
-- don't handle anything if the overlay isn't active anymore
if not FRJM.state.selection_ui_active then return true end
local card = G.CONTROLLER.clicked.target
-- If standard click target is nil, check MLD's touch tap state
if not card
and G.CONTROLLER.HID
and G.CONTROLLER.HID.touch
and G.CONTROLLER.touch_control
and G.CONTROLLER.touch_control.s_tap
then
-- Check if the tap target exists and is a Card
if G.CONTROLLER.touch_control.s_tap.target and G.CONTROLLER.touch_control.s_tap.target:is(Card) then
card = G.CONTROLLER.touch_control.s_tap.target
end
end
-- handle the clicked/tapped card if different from previous card
if card and card:is(Card)
and card.config.center.set == 'Joker'
and card.config.center.key ~= FRJM.state.card_selection.key
then
FRJM.utils:select_joker_card(card)
end
-- Keep listening if overlay is still active and no valid selection was made
return false
end
}))
config/first-round-joker.jkr
And change:
["disable_restriction"] = false
To:["disable_restriction"] = true
But I'm working on a new mod that let you customize the First Shop, so you can spawn any card, booster packs and Voucher you want on the first shop only.
EDIT just had it happen on non-seeded run
Oops! The game crashed:
functions/state_events.lua:873: attempt to concatenate global 'i' (a nil value)
Additional Context:
Balatro Version: 1.0.1n-FULL
Modded Version: 1.0.0~ALPHA-1321a-STEAMODDED
LÖVE Version: 11.5.0
Lovely Version: 0.7.0
Platform: Windows
Steamodded Mods:
1: Keyboard Shortcuts DorkDad by DorkDad141 [ID: keyboard_dorkdad]
2: First Round Joker by LnxFCA [ID: first-round-joker, Version: 2.1.0]
3: Set Seed Achievements Bypass by infarctus [ID: infarctus_Set_Seed_Achievements_Bypass]
4: Increase Shop Size by MonkeyHiko [ID: IncreaseShopSize]
Lovely Mods:
Stack Traceback
===============
(3) Lua field 'evaluate_round' at file 'functions/state_events.lua:873'
Local variables:
pitch = number: 1.07
dollars = number: 6
(for generator) = C function: builtin#6
(for state) = table: 0x0ddb50d0 {1:table: 0x0da1f0f8, 2:table: 0x0d5f5280, 3:table: 0x0d58fda0}
(for control) = number: 1
_ = number: 1
area = table: 0x0da1f0f8 {click_offset:table: 0x0d345db0, children:table: 0x0d4cc688, shuffle_amt:0 (more...)}
(for generator) = C function: builtin#6
(for state) = table: 0x0d4cc660 {1:table: 0x0d85f848, 2:table: 0x0d6adc68, 3:table: 0x0d671f40, 4:table: 0x0d6541d0 (more...)}
(for control) = number: 4
_ = number: 4
_card = table: 0x0d6541d0 {click_offset:table: 0x0d3f7548, static_rotation:false, ambient_tilt:0.2 (more...)}
ret = number: 4
(*temporary) = Lua function '?' (defined at line 1005 of chunk functions/common_events.lua)
(*temporary) = table: 0x0d674db8 {bonus:true, dollars:4}
(*temporary) = string: "joker"
(*temporary) = nil
(*temporary) = string: "attempt to concatenate global 'i' (a nil value)"
(4) Lua field 'func' at file 'game.lua:3348'
(5) Lua method 'handle' at file 'engine/event.lua:99'
Local variables:
self = table: 0x0d78fa60 {start_timer:true, timer:TOTAL, blockable:true, trigger:immediate, func:function: 0x0d4cd940 (more...)}
_results = table: 0x0d374788 {blocking:true, pause_skip:false, time_done:false, completed:false}
(6) Lua method 'update' at file 'engine/event.lua:182'
Local variables:
self = table: 0x0d784cf0 {queue_last_processed:263.68333333342, queues:table: 0x0d784d18, queue_dt:0.016666666666667 (more...)}
dt = number: 0.00695055
forced = nil
(for generator) = C function: next
(for state) = table: 0x0d784d18 {unlock:table: 0x0d784d40, other:table: 0x0d7851b8, tutorial:table: 0x0d784d90 (more...)}
(for control) = number: nan
k = string: "base"
v = table: 0x0d784d68 {1:table: 0x0d6d6588, 2:table: 0x0d78fa60, 3:table: 0x0d5ef940, 4:table: 0x0dd91fc0 (more...)}
blocked = boolean: false
i = number: 2
results = table: 0x0d374788 {blocking:true, pause_skip:false, time_done:false, completed:false}
(7) Lua upvalue 'gameUpdateRef' at file 'game.lua:2524'
Local variables:
self = table: 0x0d18fac0 {F_GUIDE:false, F_CRASH_REPORTS:false, F_QUIT_BUTTON:true, HUD_tags:table: 0x0db9a110 (more...)}
dt = number: 0.00695055
http_resp = nil
(8) Lua method 'update' at Steamodded file 'src/ui.lua:81'
Local variables:
self = table: 0x0d18fac0 {F_GUIDE:false, F_CRASH_REPORTS:false, F_QUIT_BUTTON:true, HUD_tags:table: 0x0db9a110 (more...)}
dt = number: 0.00695055
(9) Lua field 'update' at file 'main.lua:992'
Local variables:
dt = number: 0.00695055
(10) Lua function '?' at file 'main.lua:931' (best guess)
(11) global C function 'xpcall'
(12) LÖVE function at file 'boot.lua:377' (best guess)
Local variables:
func = Lua function '?' (defined at line 902 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"])
Did you follow the general troubleshooting instructions here?: https://github.com/LnxFCA/balatro-mods/tree/main/first-round-joker#troubleshooting.
If so, and the problem still persist, can you please share the links of the other 3 mods you have installed so I can check them and provide better help to you.NOTE: Is likely that the error is due to an incompatibility with other mods,
also try to check that you have installed SMODS as indicated here: https://github.com/Steamodded/smods/wiki/#step-3-installing-steamodded, due to recent changes on Steamodded the latest version may have errors.Could you please update your Steamodded installation and try again to see if the issue persists?
I believe the error might have been caused by Steamodded and has been resolved in this commit: e29fc8a
Let me know if updating resolves the issue!
Also a new version is coming soon, I will add a way to "save" the Joker so that you can purchase it when you have the money. This is useful for Legendary Jokers whose base price is 20+. (It will be a new mod instead, since that feature will be helpful in other cases).
You can use Lock the Deal, it allows "saving" the item between shops/re-rerolls.