Compare commits
18 commits
| Author | SHA1 | Date | |
|---|---|---|---|
| 2720ce3848 | |||
| 6c1b07f27e | |||
| 240088b373 | |||
| 198ff17dbd | |||
| efbcf3b89a | |||
| 990bae1c97 | |||
| 717a690a9c | |||
| e2b66b1931 | |||
| fffffd4aa3 | |||
| 46107b7d72 | |||
| de1c151802 | |||
| 00b3756cb6 | |||
| 5ebb26a677 | |||
| 44aa811ce9 | |||
| 622686c6d5 | |||
| 122d9a0210 | |||
| 020e100eb6 | |||
| 4e11ded51f |
2 changed files with 114 additions and 28 deletions
140
lovely.toml
140
lovely.toml
|
|
@ -20,62 +20,148 @@ 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"]'
|
||||||
position = "prepend"
|
position = "prepend"
|
||||||
payload = """
|
payload = """sendInfoMessage("Attempting to register the Walled Garden ruleset...", "WalledGarden");
|
||||||
sendInfoMessage("Attempting to register the Walled Garden ruleset...", "WalledGarden");
|
|
||||||
|
|
||||||
-- for k, v in pairs(G.P_CENTERS) do
|
|
||||||
-- local _ = not k:find "experimental" and
|
|
||||||
-- not k:find "sandbox" and
|
|
||||||
-- k:find "j_" and
|
|
||||||
-- ({jane = true, Multiplayer = true})[v.mod.id] and
|
|
||||||
-- table.insert(banned.jokers, k)
|
|
||||||
-- end
|
|
||||||
(function()
|
(function()
|
||||||
local banned = {
|
local banned = {
|
||||||
tags = {"tag_Bakery_DownTag"},
|
tags = {
|
||||||
consumables = {"c_Bakery_Scribe", "c_mp_asteroid"},
|
-- Disabling boss blinds doesn't do anything in PvP blinds.
|
||||||
vouchers = {"v_jane_token_voucher", "v_jane_token_voucher_plus"},
|
"tag_Bakery_DownTag",
|
||||||
|
},
|
||||||
|
enhancements = {
|
||||||
|
-- Banning this does not prevent the enhancement from being obtainable through the spectral,
|
||||||
|
-- this simply prevents the enhancement from showing up in Booster Packs or Illusion.
|
||||||
|
-- This made standard booster packs a must-open. and reduced the complexity of choosing cards.
|
||||||
|
"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 = {
|
||||||
|
-- Banned in favor of `c_mp_ouija_standard`.
|
||||||
|
"c_ouija",
|
||||||
|
-- Allows you to duplicate your strongest joker,
|
||||||
|
-- potentially even multiple times, for one hand.
|
||||||
|
-- Skipping on a Scribe almost guarantees a lost life.
|
||||||
|
"c_Bakery_Scribe",
|
||||||
|
-- Doesn't apply any stickers, presumably because of some Multiplayer bug.
|
||||||
|
"c_bongcloud_the_knight",
|
||||||
|
-- Immediately converges gameplay to Flush Five.
|
||||||
|
"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.
|
||||||
|
"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`
|
||||||
|
"j_Bakery_Wearywolf",
|
||||||
|
-- See `j_idol`.
|
||||||
|
"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`.
|
||||||
|
-- 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,
|
||||||
|
-- especially when all of them are of Uncommon rarity.
|
||||||
|
"j_idol",
|
||||||
|
-- Disabling boss blinds doesn't do anything in PvP blinds.
|
||||||
"j_chicot",
|
"j_chicot",
|
||||||
|
-- See `j_chicot`.
|
||||||
"j_luchador",
|
"j_luchador",
|
||||||
"j_jane_escapey",
|
-- The first ante is the only time this would trigger.
|
||||||
"j_jane_spearmaster",
|
"j_matador",
|
||||||
|
-- Preventing Death doesn't do anything in PvP blinds.
|
||||||
|
"j_mr_bones",
|
||||||
|
-- Trivializes Spacious deck because it gives a free Joker slot and is a Common.
|
||||||
|
"j_ExtraCredit_forklift",
|
||||||
|
-- Cards do not get debuffed in PvP blinds.
|
||||||
|
"j_ExtraCredit_permanentmarker",
|
||||||
|
-- This heavily encourages high card spam to capitalize on the held in hand plays.
|
||||||
"j_jane_survivor",
|
"j_jane_survivor",
|
||||||
"j_jane_rot",
|
-- Getting Ankh 3 times within 9 antes is too speculative.
|
||||||
"j_jane_maxie",
|
"j_jane_saint",
|
||||||
"j_jane_honey",
|
-- 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",
|
||||||
"j_jane_artificer",
|
|
||||||
"j_jane_monk",
|
|
||||||
"j_jane_betmma",
|
|
||||||
"j_mp_pacifist",
|
"j_mp_pacifist",
|
||||||
"j_mp_lets_go_gambling",
|
"j_mp_lets_go_gambling",
|
||||||
"j_jane_hunter",
|
|
||||||
"j_mp_pizza",
|
"j_mp_pizza",
|
||||||
"j_jane_saint",
|
|
||||||
"j_jane_oxy",
|
|
||||||
"j_jane_rivulet",
|
|
||||||
"j_mp_taxes",
|
"j_mp_taxes",
|
||||||
"j_jane_gourmand",
|
|
||||||
"j_mp_penny_pincher",
|
"j_mp_penny_pincher",
|
||||||
"j_mp_defensive_joker",
|
"j_mp_defensive_joker",
|
||||||
"j_mp_speedrun",
|
"j_mp_speedrun",
|
||||||
},
|
},
|
||||||
}
|
}
|
||||||
|
|
||||||
local ruleset = {key = "walledgarden", layers = {"standard"}}
|
local ruleset = {
|
||||||
|
key = "walledgarden",
|
||||||
|
layers = {"standard"},
|
||||||
|
multiplayer_content = true,
|
||||||
|
reworked_consumables = {"c_mp_ouija_standard"},
|
||||||
|
}
|
||||||
|
|
||||||
for k, v in pairs(banned) do
|
for k, v in pairs(banned) do
|
||||||
ruleset["banned_" .. k] = v
|
ruleset["banned_" .. k] = v
|
||||||
end
|
end
|
||||||
|
|
||||||
MP.Ruleset(ruleset):inject()
|
MP.Ruleset(ruleset):inject()
|
||||||
sendInfoMessage("Successfully registered \\"Walled Garden\\" as a ruleset under the Experimental tab!", "WalledGarden")
|
|
||||||
|
sendInfoMessage(
|
||||||
|
"Successfully registered Walled Garden as a ruleset under the Experimental tab!",
|
||||||
|
"WalledGarden"
|
||||||
|
)
|
||||||
end)()
|
end)()
|
||||||
"""
|
"""
|
||||||
match_indent = true
|
match_indent = true
|
||||||
|
|
|
||||||
|
|
@ -1,6 +1,6 @@
|
||||||
{
|
{
|
||||||
"priority": 10000001,
|
"priority": 10000001,
|
||||||
"version": "1.0.0",
|
"version": "1.0.18",
|
||||||
"id": "WalledGarden",
|
"id": "WalledGarden",
|
||||||
"name": "WalledGarden",
|
"name": "WalledGarden",
|
||||||
"icon_path": "icon.png",
|
"icon_path": "icon.png",
|
||||||
|
|
|
||||||
Loading…
Add table
Reference in a new issue