From 0b6334f558c95f85c2209aa635aab836d1247365 Mon Sep 17 00:00:00 2001 From: Stephen Kirk Date: Mon, 8 Jun 2026 17:58:59 +0200 Subject: [PATCH 1/3] chore(release): bump version to 0.4.1~DEV --- Multiplayer.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Multiplayer.json b/Multiplayer.json index a5dadd5a..14bfb40e 100644 --- a/Multiplayer.json +++ b/Multiplayer.json @@ -12,7 +12,7 @@ "priority": 10000000, "badge_colour": "AC3232", "badge_text_colour": "FFFFFF", - "version": "0.4.0~pre3-DEV", + "version": "0.4.1~DEV", "dependencies": [ "Steamodded (>=1.0.0~BETA-1221a)", "Lovely (>=0.8)", From b3a6358b6d37f2687e6f557d479d883c9a6e115a Mon Sep 17 00:00:00 2001 From: SleepyG11 <35398172+SleepyG11@users.noreply.github.com> Date: Tue, 9 Jun 2026 01:07:32 +0300 Subject: [PATCH 2/3] fixes (#462) --- ui/game/timer.lua | 31 ++++++++++++++++++------------- 1 file changed, 18 insertions(+), 13 deletions(-) diff --git a/ui/game/timer.lua b/ui/game/timer.lua index e3b4c659..8665cc76 100644 --- a/ui/game/timer.lua +++ b/ui/game/timer.lua @@ -3,6 +3,7 @@ function MP.UI.cam_timer_opponent() if not MP.LOBBY.config.timer then return false end if MP.GAME.pvp_countdown_in_progress then return false end + if MP.GAME.timer <= 0 then return false end if MP.is_pvp_boss() and MP.is_layer_active("pvp_timer") then if G.STATE == G.STATES.ROUND_EVAL or G.STATE == G.STATES.NEW_ROUND then return false end if MP.INSANE_INT.greater_than(MP.GAME.score, MP.GAME.enemy.score) then return true end @@ -194,7 +195,7 @@ SMODS.Gradient({ -- When you "timering" opponent, timer stops and you cannot see is button pressed -- So we need switch to real timer to make it flush - local time_value = (MP.GAME.timer_started and G.TIMERS.REAL or -(MP.GAME.timer or 0)) + local time_value = MP.GAME.timer_started and G.TIMERS.REAL or -(MP.GAME.timer or 0) local timer = (time_value / speedup) % self.cycle local start_index = math.ceil(timer * #self.colours / self.cycle) if start_index == 0 then start_index = 1 end @@ -225,7 +226,8 @@ SMODS.Gradient({ if #self.colours < 2 or not MP.speedlatro_timer then return end local speedup = MP.current_ruleset().timer_speedup_multiplier or 1 - local timer = MP.GAME.ready_blind and 0 or ((-(MP.speedlatro_timer.real or 0) / speedup) % self.cycle) + 0.5 + local timer_value = MP.GAME.ready_blind and 0 or -(MP.speedlatro_timer.real or 0) + local timer = (timer_value / speedup) % self.cycle local start_index = math.ceil(timer * #self.colours / self.cycle) if start_index == 0 then start_index = 1 end local end_index = start_index == #self.colours and 1 or start_index + 1 @@ -363,17 +365,20 @@ function Game:update(dt) if MP.GAME.timer == 0 then MP.GAME.timer_consumed = true - if is_pvp_timer then - -- PvP timer: end PvP immediately as a loss - MP.ACTIONS.fail_pvp_timer() - else - -- Old, No-animations, Pressure timers: lose a live - if MP.GAME.timers_forgiven < MP.LOBBY.config.timer_forgiveness then - MP.GAME.timers_forgiven = MP.GAME.timers_forgiven + 1 - else - MP.ACTIONS.fail_timer() - end - end + -- PvP timer: end PvP immediately as a loss (only when timered by opponent) + if is_pvp_timer then + if MP.GAME.nemesis_timer_started then + MP.ACTIONS.fail_pvp_timer() + end + -- Old, No-animations: lose a live when timered by opponent + -- Pressure timers: lose a live regardless + elseif (is_pressure_timer or MP.GAME.nemesis_timer_started) then + if MP.GAME.timers_forgiven < MP.LOBBY.config.timer_forgiveness then + MP.GAME.timers_forgiven = MP.GAME.timers_forgiven + 1 + else + MP.ACTIONS.fail_timer() + end + end end end From 6b3baf4c2580d68d1bf27852de8fb9b97bed74ba Mon Sep 17 00:00:00 2001 From: Fantom-Balatro Date: Mon, 8 Jun 2026 22:00:55 -0600 Subject: [PATCH 3/3] Update standard.lua WSOB Ruleset lets go --- layers/standard.lua | 12 +----------- 1 file changed, 1 insertion(+), 11 deletions(-) diff --git a/layers/standard.lua b/layers/standard.lua index 7c03164e..c3d9d7bf 100644 --- a/layers/standard.lua +++ b/layers/standard.lua @@ -1,27 +1,17 @@ MP.Layer("standard", { - multiplayer_content = true, + multiplayer_content = false, standard = true, banned_silent = { "j_hanging_chad", - "j_ticket", - "j_selzer", - "j_turtle_bean", "j_bloodstone", - "c_ouija", }, banned_consumables = { "c_justice", }, reworked_jokers = { "j_mp_hanging_chad", - "j_mp_ticket", - "j_mp_seltzer", - "j_mp_turtle_bean", "j_mp_bloodstone", }, - reworked_consumables = { - "c_mp_ouija_standard", - }, reworked_enhancements = { "m_glass", },