From ff55a27567d70b05cea7f47bf48bb90dfd4622ce Mon Sep 17 00:00:00 2001 From: Emik Date: Fri, 31 Jul 2026 05:25:52 +0200 Subject: [PATCH] Improve stability of Frozen and debugging tools --- manifest.json | 2 +- src/edition.lua | 12 +++++++++--- src/lib/shared.lua | 11 +++++++---- src/tag.lua | 1 + 4 files changed, 18 insertions(+), 8 deletions(-) diff --git a/manifest.json b/manifest.json index e1867fa..8834aa2 100644 --- a/manifest.json +++ b/manifest.json @@ -3,7 +3,7 @@ "id": "Roland", "name": "Roland", "prefix": "Roland", - "version": "2.9.86", + "version": "2.9.87", "badge_colour": "8BE9FD", "display_name": "Roland", "main_file": "src/main.lua", diff --git a/src/edition.lua b/src/edition.lua index 4e8fb91..b0932a5 100644 --- a/src/edition.lua +++ b/src/edition.lua @@ -329,8 +329,6 @@ function Card:calculate_dollar_bonus(...) return orig_calculate_dollar_bonus(self, ...) end -local orig_get_probability_vars = SMODS.get_probability_vars - function SMODS.current_mod.bootstraps_mult(card) local ability = card.Roland_frozen_ability local ret = math.floor((G.GAME.dollars + (G.GAME.dollar_buffer or 0)) / card.ability.extra.dollars) @@ -343,9 +341,17 @@ function SMODS.current_mod.bootstraps_mult(card) return ability.Roland_bootstraps_mult end +local orig_get_probability_vars = SMODS.get_probability_vars + function SMODS.get_probability_vars(trigger_obj, ...) local numerator, denominator = orig_get_probability_vars(trigger_obj, ...) - return trigger_obj and (trigger_obj.Roland_frozen or {}).probability or numerator, denominator + local override = ((trigger_obj or {}).Roland_frozen or {}).probability + + if override then + return type(denominator) == "table" and to_big(override) or override, denominator + else + return numerator, denominator + end end q { diff --git a/src/lib/shared.lua b/src/lib/shared.lua index b4b5ee4..6db1a88 100644 --- a/src/lib/shared.lua +++ b/src/lib/shared.lua @@ -14,10 +14,13 @@ local function add(v) end if G.P_BLINDS[v] then - G.from_boss_tag = true - G.GAME.perscribed_bosses = G.GAME.perscribed_bosses or {} - G.GAME.perscribed_bosses[G.GAME.round_resets.ante] = v - G.FUNCS.reroll_boss() + if G.STATE ~= G.STATES.MENU then + G.from_boss_tag = true + G.GAME.perscribed_bosses = G.GAME.perscribed_bosses or {} + G.GAME.perscribed_bosses[G.GAME.round_resets.ante] = v + G.FUNCS.reroll_boss() + end + return G.P_BLINDS[v] end diff --git a/src/tag.lua b/src/tag.lua index 5657c3c..c106ea8 100644 --- a/src/tag.lua +++ b/src/tag.lua @@ -122,6 +122,7 @@ SMODS.Tag { ab.total_rounds = ab.total_rounds or self.config.total_rounds if tag.triggered or + not G.jokers or not next(G.jokers.cards) or ab.invis_rounds < ab.total_rounds or #G.jokers.cards + (modifiers.Roland_invisible or 0) >= G.jokers.config.card_limit then