From 8784e13aa4e9a138525ea4ba89c11a27f8ed0b6d Mon Sep 17 00:00:00 2001 From: Emik Date: Thu, 1 Oct 2026 06:18:06 +0200 Subject: [PATCH] Remove incompatibility --- lovely.toml | 195 ++++++++++++++++++++++++++++++++++++++++++++++++++ manifest.json | 6 +- src/main.lua | 18 +++-- 3 files changed, 208 insertions(+), 11 deletions(-) diff --git a/lovely.toml b/lovely.toml index 975996a..8c89a48 100644 --- a/lovely.toml +++ b/lovely.toml @@ -177,6 +177,201 @@ position = "after" payload = 'deletable_jokers = next(SMODS.find_card("j_jane_saint")) and {} or deletable_jokers' match_indent = true +[[patches]] +[patches.pattern] +target = '=[SMODS jen "Jen.lua"]' +pattern = "'rot'," +position = "after" +payload = "'escapey'," +match_indent = true + +[[patches]] +[patches.pattern] +target = '=[SMODS jen "Jen.lua"]' +pattern = "if cen.click_noise then" +position = "before" +payload = """ +if cen.key == "j_jen_escapey" then + local escapey_per = 10 + cen.click_noise_vol = 0.4 + cen.click_noise = 'jen_plasticButton' .. math.random(2) + cen.click_noise_per = math.random() / escapey_per + (escapey_per * 2 - 1) / (escapey_per * 2) +end +""" +match_indent = true + +[[patches]] +[patches.pattern] +target = '=[SMODS jen "Jen.lua"]' +pattern = "--SOUNDS" +position = "after" +payload = """ +SMODS.Sound({ + key = "plasticButton1", + path = "plasticButton1.ogg" +}) + +SMODS.Sound({ + key = "plasticButton2", + path = "plasticButton2.ogg" +}) +""" +match_indent = true + +[[patches]] +[patches.pattern] +target = '=[SMODS jen "Jen.lua"]' +pattern = "local crimbo_quotes = {" +position = "before" +payload = """ +local function destructible(card) + return card.ability.consumeable and not card.highlighted and not (card.ability or {}).eternal +end + +local escapey_quotes = { + marble = {"there is no escape..."}, + normal = { + {"", "I can't wait to work with you!"}, + {"", "Did you need something from me?"}, + {"", "Oh! I'm just so happy to see you!"}, + {"Can I say something irrelevant?", "I promise it won't be long."}, + {"Tell me about your buddies!", "Assuming you have them, anyway."}, + }, + scared = { + "What am I going to do?!", + "I'm not scared, you are!", + "Tell me when this is over...", + "I can't keep looking at this!", + "Let me go hide in this corner... Okay?", + }, +} + +local function escapey_button_text(card) + if card.debuff then + return "DEBUFFED" + end + + for _, v in ipairs(G.consumeables.cards) do + if destructible(v) then + return "CONSUME" + end + end + + return "ESCAPE" +end + +SMODS.Joker { + key = "escapey", + atlas = "jenescapey", + pronouns = "they_them", + loc_txt = { + name = "Escapey", + text = { + "{s:1.25}Use to sell {C:attention,s:1.25}tags", + "{s:1.25}for {X:money,C:white,s:1.25}$#1#X{s:1.25} each", + "If any {C:attention}consumables", + "are unselected, sell", + "those for {C:money}$#3# {}instead", + "{C:inactive,s:0.75,E:1}#4#", + "{C:inactive,s:0.75,E:1}#5#{C:red,s:1.5,E:1}#6#", + }, + }, + config = {extra = {money = 2, xmoney = 2, max = 200, escape_label = "ESCAPE"}}, + attributes = {"destroy_card", "economy", "tag"}, + pos = {x = 0, y = 0}, + sinis = {x = 2, y = 0}, + soul_pos = {x = 1, y = 0}, + cost = 4, + rarity = 2, + eternal_compat = true, + blueprint_compat = false, + perishable_compat = true, + loc_vars = function(_, _, card) + local extra = card.ability.extra + + local normal = Jen.sinister and {"", ""} or + pseudorandom_element(escapey_quotes.normal, pseudoseed "EscapeyQuotes") or {"", ""} + + local scared = not Jen.sinister and "" or + pseudorandom_element(escapey_quotes.scared, pseudoseed "EscapeyQuotes") or "" + + return {vars = {extra.xmoney, number_format(extra.max), extra.money, normal[1], normal[2], scared}} + end, + calculate = function(_, card) + local extra = card.ability.extra + local label = extra.escape_label + extra.escape_label = escapey_button_text(card) + local _ = label ~= extra.escape_label and Bakery_API.rehighlight(card) + end, + Bakery_can_use = function(_, card) + if not jl.canuse() or card.debuff then + return false + end + + if next(G.GAME.tags) then + return true + end + + for _, v in ipairs(G.consumeables.cards) do + if destructible(v) then + return true + end + end + + return false + end, + Bakery_use_button_text = function(_, card) + return card.ability.extra.escape_label + end, + Bakery_use_joker = function(self, card) + if card.debuff then + return + end + + local times, xtimes = 0, 0 + local extra = card.ability.extra + + for _, v in ipairs(G.consumeables.cards) do + if destructible(v) then + v:start_dissolve({HEX "57ecabff"}, nil, 1.6) + times = times + 1 + end + end + + if times == 0 then + local delay = #G.GAME.tags >= self.tag_threshold and 0 or 1 / #G.GAME.tags + local trigger = delay == 0 and "immediate" or "before" + + for _, v in ipairs(G.GAME.tags) do + Q(function() + attention_text { + scale = 0.7, + align = "cm", + text = "ESC", + cover = v.HUD_tag, + colour = G.C.WHITE, + cover_colour = G.C.BLACK, + hold = 0.3 / G.SETTINGS.GAMESPEED, + } + + play_sound("cancel", 1.66, 0.5) + v.HUD_tag.states.visible = false + v:remove() + end, delay, nil, trigger, nil, delay ~= 0) + + xtimes = xtimes + 1 + end + end + + local tag_money = G.GAME.dollars + local tag_times = math.pow(extra.xmoney, xtimes) - 1 + ease_dollars(math.ceil(times * extra.money + tag_money * tag_times)) + end, + tag_threshold = 30, +} +""" +match_indent = true + [[patches]] [patches.pattern] target = '=[SMODS _ "src/utils.lua"]' diff --git a/manifest.json b/manifest.json index 3150f35..67eea36 100644 --- a/manifest.json +++ b/manifest.json @@ -15,8 +15,6 @@ "Lovely (>=0.6)", "Bakery (>=3.2.0~*)" ], - "conflicts": [ - "Jen" - ], - "version": "1.11.28" + "conflicts": [], + "version": "1.11.29" } \ No newline at end of file diff --git a/src/main.lua b/src/main.lua index c702a08..8df7876 100644 --- a/src/main.lua +++ b/src/main.lua @@ -1,3 +1,14 @@ +SMODS.Atlas { + px = 34, + py = 34, + key = "modicon", + path = "almanac_avatar.png", +} + +if SMODS.Mods.jen then + return +end + Jane = { cry = SMODS.Mods.Cryptid and not SMODS.Mods.Cryptid.disabled, config = { @@ -333,13 +344,6 @@ end loc_colour() G.ARGS.LOC_COLOURS.jane_RGB = G.C.jane_RGB -SMODS.Atlas { - px = 34, - py = 34, - key = "modicon", - path = "almanac_avatar.png", -} - SMODS.Atlas { px = 71, py = 95,