Compare commits

..

7 commits
1.0.11 ... main

Author SHA1 Message Date
2720ce3848
Unban Rivulet because they are mechanically overhauled 2026-06-23 21:46:35 +02:00
6c1b07f27e
Ban Mrs. Bones 2026-06-22 20:17:50 +02:00
240088b373
Reduce hands by 1 2026-06-22 20:11:32 +02:00
198ff17dbd
Update outdated id 2026-06-21 00:41:27 +02:00
efbcf3b89a
Ban vouchers as a formality 2026-06-20 09:32:04 +02:00
990bae1c97
Ban charm and bad multiplayer card 2026-06-19 18:27:00 +02:00
717a690a9c
Change consumables 2026-06-17 21:26:50 +02:00
2 changed files with 60 additions and 42 deletions

View file

@ -20,6 +20,42 @@ payload = """k_walledgarden = "Walled Garden",
k_walledgarden_description = "Personal ruleset for modded Balatro.",""" k_walledgarden_description = "Personal ruleset for modded Balatro.","""
match_indent = true match_indent = true
[[patches]]
[patches.pattern]
target = '=[SMODS Multiplayer "networking/action_handlers.lua"]'
pattern = "local parsedAction = json.decode(msg)"
position = "at"
payload = """local garden, parsedAction = pcall(function()
return json.decode(msg)
end)
if not garden or type(parsedAction) ~= "table" then
return sendErrorMessage(
"# **DESYNC MAY HAVE OCCURED!!!** | We don't know how to parse this! " ..
tostring(garden) ..
": " ..
tostring(parsedAction), "MULTIPLAYER"
)
end
"""
match_indent = true
[[patches]]
[patches.pattern]
target = '=[SMODS Multiplayer "networking/action_handlers.lua"]'
pattern = "MP.GAME.end_pvp = true"
position = "before"
payload = """(function()
return MP.LOBBY.config.ruleset == "ruleset_mp_walledgarden" and
ease_dollars(
MP.LOBBY.deck.back == "Green Deck" and
(G.GAME.round_resets.hands - 1) * 2 + G.GAME.round_resets.discards or
G.GAME.round_resets.hands - 1
)
end)()
"""
match_indent = true
[[patches]] [[patches]]
[patches.copy] [patches.copy]
target = '=[SMODS Multiplayer "rulesets/experimental/experimental.lua"]' target = '=[SMODS Multiplayer "rulesets/experimental/experimental.lua"]'
@ -38,7 +74,17 @@ payload = """sendInfoMessage("Attempting to register the Walled Garden ruleset..
-- This made standard booster packs a must-open. and reduced the complexity of choosing cards. -- This made standard booster packs a must-open. and reduced the complexity of choosing cards.
"m_Bakery_TimeWalk", "m_Bakery_TimeWalk",
}, },
vouchers = {
-- Strictly a downside when ante number does not exist.
"v_hieroglyph",
"v_petroglyph",
-- Rerolling boss blinds doesn't do anything in PvP blinds.
"v_directors_cut",
"v_retcon",
},
consumables = { consumables = {
-- Banned in favor of `c_mp_ouija_standard`.
"c_ouija",
-- Allows you to duplicate your strongest joker, -- Allows you to duplicate your strongest joker,
-- potentially even multiple times, for one hand. -- potentially even multiple times, for one hand.
-- Skipping on a Scribe almost guarantees a lost life. -- Skipping on a Scribe almost guarantees a lost life.
@ -47,14 +93,24 @@ payload = """sendInfoMessage("Attempting to register the Walled Garden ruleset..
"c_bongcloud_the_knight", "c_bongcloud_the_knight",
-- Immediately converges gameplay to Flush Five. -- Immediately converges gameplay to Flush Five.
"c_Roland_void", "c_Roland_void",
-- Why add more variance on something that's already volatile?
"c_mp_ectoplasm_sandbox",
-- There wasn't anything wrong with regular Wraith to begin with.
-- Don't fix what ain't broke!
"c_mp_wraith",
-- Almost always better than any other planet card. -- Almost always better than any other planet card.
"c_mp_asteroid", "c_mp_asteroid",
}, },
jokers = { jokers = {
-- Strictly a downside when ante number does not exist.
-- Despite being a charm, it can be banned as though it was a joker.
"BakeryCharm_Bakery_Cogwheel",
-- See `j_mr_bones` -- See `j_mr_bones`
"j_Bakery_Wearywolf", "j_Bakery_Wearywolf",
-- See below. -- See `j_idol`.
"j_Roland_idle", "j_Roland_idle",
-- Normally useless in singleplayer, this is a must-pick to get 4X over your opponent.
"j_Roland_mrsbones",
-- Banned because of the existence of `j_Roland_idle` and `j_Bakery_Wherewolf`. -- Banned because of the existence of `j_Roland_idle` and `j_Bakery_Wherewolf`.
-- All three of them are fine on their own, but having all three of them, -- All three of them are fine on their own, but having all three of them,
-- means that you are more than likely to stumble across one of the three, -- means that you are more than likely to stumble across one of the three,
@ -74,10 +130,8 @@ payload = """sendInfoMessage("Attempting to register the Walled Garden ruleset..
"j_ExtraCredit_permanentmarker", "j_ExtraCredit_permanentmarker",
-- This heavily encourages high card spam to capitalize on the held in hand plays. -- This heavily encourages high card spam to capitalize on the held in hand plays.
"j_jane_survivor", "j_jane_survivor",
-- Getting 2 Ankhs or Souls is very unlikely to happen within 9 antes. -- Getting Ankh 3 times within 9 antes is too speculative.
"j_jane_saint", "j_jane_saint",
-- Giving every card an edition makes the game too chaotic.
"j_jane_rivulet",
-- We don't like multiplayer jokers in this household! -- We don't like multiplayer jokers in this household!
"j_mp_conjoined_joker", "j_mp_conjoined_joker",
"j_mp_skip_off", "j_mp_skip_off",
@ -111,39 +165,3 @@ payload = """sendInfoMessage("Attempting to register the Walled Garden ruleset..
end)() end)()
""" """
match_indent = true match_indent = true
[[patches]]
[patches.pattern]
target = '=[SMODS Multiplayer "networking/action_handlers.lua"]'
pattern = "local parsedAction = json.decode(msg)"
position = "at"
payload = """local garden, parsedAction = pcall(function()
return json.decode(msg)
end)
if not garden or type(parsedAction) ~= "table" then
return sendErrorMessage(
"# **DESYNC MAY HAVE OCCURED!!!** | We don't know how to parse this! " ..
tostring(garden) ..
": " ..
tostring(parsedAction), "MULTIPLAYER"
)
end
"""
match_indent = true
[[patches]]
[patches.pattern]
target = '=[SMODS Multiplayer "networking/action_handlers.lua"]'
pattern = "MP.GAME.end_pvp = true"
position = "before"
payload = """(function()
return MP.LOBBY.config.ruleset == "ruleset_mp_walledgarden" and
ease_dollars(
MP.LOBBY.deck.back == "Green Deck" and
G.GAME.round_resets.hands * 2 + G.GAME.round_resets.discards or
G.GAME.round_resets.hands
)
end)()
"""
match_indent = true

View file

@ -1,6 +1,6 @@
{ {
"priority": 10000001, "priority": 10000001,
"version": "1.0.11", "version": "1.0.18",
"id": "WalledGarden", "id": "WalledGarden",
"name": "WalledGarden", "name": "WalledGarden",
"icon_path": "icon.png", "icon_path": "icon.png",