diff --git a/assets/1x/blind.png b/assets/1x/blind.png index 972d694..41c13a6 100644 Binary files a/assets/1x/blind.png and b/assets/1x/blind.png differ diff --git a/assets/1x/blind.png.kra b/assets/1x/blind.png.kra new file mode 100644 index 0000000..76edc7d Binary files /dev/null and b/assets/1x/blind.png.kra differ diff --git a/assets/1x/blind.png~ b/assets/1x/blind.png~ new file mode 100644 index 0000000..dff3bbb Binary files /dev/null and b/assets/1x/blind.png~ differ diff --git a/assets/1x/dual.png b/assets/1x/dual.png new file mode 100644 index 0000000..2a575ce Binary files /dev/null and b/assets/1x/dual.png differ diff --git a/assets/1x/mirror.png b/assets/1x/mirror.png new file mode 100644 index 0000000..865670d Binary files /dev/null and b/assets/1x/mirror.png differ diff --git a/assets/1x/seal.png b/assets/1x/seal.png new file mode 100644 index 0000000..b08578f Binary files /dev/null and b/assets/1x/seal.png differ diff --git a/assets/1x/spectral.png b/assets/1x/spectral.png new file mode 100644 index 0000000..5f17565 Binary files /dev/null and b/assets/1x/spectral.png differ diff --git a/assets/2x/Pasted image.png b/assets/2x/Pasted image.png deleted file mode 100644 index 9ce76c1..0000000 Binary files a/assets/2x/Pasted image.png and /dev/null differ diff --git a/assets/2x/afterimage.png b/assets/2x/afterimage.png index 48fcf2c..7b74c87 100644 Binary files a/assets/2x/afterimage.png and b/assets/2x/afterimage.png differ diff --git a/assets/2x/blind.png b/assets/2x/blind.png index c3c8dcb..5a97645 100644 Binary files a/assets/2x/blind.png and b/assets/2x/blind.png differ diff --git a/assets/2x/blinder.png b/assets/2x/blinder.png new file mode 100644 index 0000000..b44ce75 Binary files /dev/null and b/assets/2x/blinder.png differ diff --git a/assets/2x/dual.png b/assets/2x/dual.png new file mode 100644 index 0000000..c6a9dcb Binary files /dev/null and b/assets/2x/dual.png differ diff --git a/assets/2x/escapey.png b/assets/2x/escapey.png index 14bfd6b..e273446 100644 Binary files a/assets/2x/escapey.png and b/assets/2x/escapey.png differ diff --git a/assets/2x/icon.png b/assets/2x/icon.png index 45adea8..dff7b7a 100644 Binary files a/assets/2x/icon.png and b/assets/2x/icon.png differ diff --git a/assets/2x/iphone.png b/assets/2x/iphone.png index 9059d4f..0b906d4 100644 Binary files a/assets/2x/iphone.png and b/assets/2x/iphone.png differ diff --git a/assets/2x/martingale.png b/assets/2x/martingale.png index 630fa5e..49c2910 100644 Binary files a/assets/2x/martingale.png and b/assets/2x/martingale.png differ diff --git a/assets/2x/mirror.png b/assets/2x/mirror.png new file mode 100644 index 0000000..4afd72e Binary files /dev/null and b/assets/2x/mirror.png differ diff --git a/assets/2x/seal.png b/assets/2x/seal.png new file mode 100644 index 0000000..03ff4b1 Binary files /dev/null and b/assets/2x/seal.png differ diff --git a/assets/2x/spectral.png b/assets/2x/spectral.png new file mode 100644 index 0000000..e629528 Binary files /dev/null and b/assets/2x/spectral.png differ diff --git a/assets/2x/void.png b/assets/2x/void.png index 1d5845f..d803297 100644 Binary files a/assets/2x/void.png and b/assets/2x/void.png differ diff --git a/assets/upscale.sh b/assets/upscale.sh index 5417ebf..a66be89 100755 --- a/assets/upscale.sh +++ b/assets/upscale.sh @@ -1,6 +1,8 @@ #!/bin/sh -for file in 1x/*.png; do +directory=$(dirname $(readlink -f "$0")) + +for file in "$directory"/1x/*.png; do filename=$(basename "$file") - output_file="2x/${filename}" + output_file="$directory/2x/${filename}" magick "$file" -filter point -resize 200% "$output_file" done diff --git a/localization/en-us.lua b/localization/en-us.lua index 94ba859..2caaa74 100644 --- a/localization/en-us.lua +++ b/localization/en-us.lua @@ -31,12 +31,20 @@ return { Blind = { bl_Roland_divide = { name = "The Great Divide", - text = {"Half of the deck", "is {C:discard}discarded"}, + text = {"Half of the deck", "is discarded"}, + }, + bl_Roland_equinox = { + name = "The Equinox", + text = {"No UI"}, }, bl_Roland_improbable = { name = "The Improbable", text = {"All probabilities", "cannot happen"}, }, + bl_Roland_mitotic = { + name = "The Mitotic", + text = {"Discarded cards", "are copied"}, + }, bl_Roland_nimble = { name = "The Nimble", text = {"The first 5 cards", "drawn are played"}, @@ -45,9 +53,11 @@ return { name = "The Tranquilizer", text = {"#1#s are debuffed", "Changes based on", "most common rank"}, }, - bl_Roland_xerox = { - name = "The Xerox", - text = {"Discarded cards", "are copied"}, + }, + Enhanced = { + m_wild = { + name = "Wild Card", + text = {unpack(G.localization.descriptions.Enhanced.m_wild.text), "Can not be", "debuffed"}, }, }, Joker = { @@ -103,8 +113,8 @@ return { text = { "This Joker gains the", "rank of {C:attention}unscored cards", - "if played hand is a", - "{C:attention}Four of a Kind", + "to Mult if played hand", + "is a {C:attention}Four of a Kind", "{C:inactive}(Currently {C:red}+#1#{C:inactive} Mult)", }, }, @@ -176,7 +186,7 @@ return { "Sell this Joker to", "{C:attention}draw{} the bottom", "card of the {C:hand}deck", - "{C:inactive}(Currently {V:1}#1##2#{V:2}#3#{C:inactive})", + "{C:inactive}(Currently {V:1}#1#{C:inactive}#2#{V:2}#3#{C:inactive})", }, }, j_Roland_temple = { diff --git a/src/back.lua b/src/back.lua index 3cb9538..307f5cf 100644 --- a/src/back.lua +++ b/src/back.lua @@ -24,10 +24,12 @@ local function back(b) b.atlas = "void" SMODS.Back(b) + ---@diagnostic disable-next-line: undefined-global if not CardSleeves then return end + ---@diagnostic disable-next-line: undefined-global CardSleeves.Sleeve { key = key, pos = b.pos, diff --git a/src/blind.lua b/src/blind.lua index d46613c..a35cffb 100644 --- a/src/blind.lua +++ b/src/blind.lua @@ -1,5 +1,17 @@ local f, q = unpack(... or require "src.functional") +local blind = (function() + local y = 0 + + ---@param tbl SMODS.Blind + return function(tbl) + tbl.pos = {x = 0, y = y} + tbl.atlas = "blind" + SMODS.Blind(tbl) + y = y + 1 + end +end)() + SMODS.Atlas { px = 34, py = 34, @@ -50,71 +62,15 @@ local function disable_improbable() end local function is_locked() - return G.STATE ~= G.STATES.SELECTING_HAND or G.CONTROLLER.locked or (G.GAME.STOP_USE and G.GAME.STOP_USE > 0) + return G.STATE ~= G.STATES.SELECTING_HAND or G.CONTROLLER.locked or + (G.GAME.STOP_USE and G.GAME.STOP_USE > 0) end -if cry_prob then - local orig_prob = cry_prob - - ---@diagnostic disable-next-line: lowercase-global - cry_prob = function(owned, den, rigged) - return G.GAME.modifiers.Roland_improbable and 0 or orig_prob(owned, den, rigged) - end -end - -local orig_update = Game.update - ----@diagnostic disable-next-line: duplicate-set-field -function Game:update(dt) - orig_update(self, dt) - local orig = G.GAME.probabilities - - if not G.GAME.modifiers.Roland_improbable or getmetatable(orig) then - return - end - - local normal = orig.normal - - local mt = { - orig = orig, - __index = function(_, k) - return k == "normal" and 0 or orig[k] - end, - __newindex = function(_, k, v) - orig[k] = (k == "normal" and v == 0) and normal or v - end, - } - - local proxy = {} - setmetatable(proxy, mt) - G.GAME.probabilities = proxy -end - -SMODS.Blind { - key = "improbable", - boss = {min = 4, max = 10}, - boss_colour = HEX "009966", - atlas = "blind", - pos = {x = 0, y = 0}, - pronouns = "it_its", - mult = 2, - dollars = 5, - defeat = disable_improbable, - disable = disable_improbable, - set_blind = function(_) - G.GAME.modifiers.Roland_improbable = true - end, -} - -SMODS.Blind { +blind { key = "nimble", - boss = {min = 1, max = 10}, + boss = {min = 1}, boss_colour = HEX "0291fb", - atlas = "blind", - pos = {x = 0, y = 1}, pronouns = "she_her", - mult = 2, - dollars = 5, config = {draw = 5}, defeat = function(self) self.disabled = false @@ -145,15 +101,11 @@ SMODS.Blind { end, } -SMODS.Blind { +blind { key = "divide", - boss = {min = 1, max = 10}, - boss_colour = HEX "0291fb", - atlas = "blind", - pos = {x = 0, y = 1}, + boss = {min = 1}, + boss_colour = HEX "b18480", pronouns = "they_them", - mult = 2, - dollars = 5, disable = function() q(function() local count = #G.discard.cards @@ -185,19 +137,97 @@ SMODS.Blind { end, } -SMODS.Blind { - key = "tranquilizer", - boss = {min = 6, max = 10}, - boss_colour = HEX "0291fb", - atlas = "blind", - pos = {x = 0, y = 1}, +blind { + key = "mitotic", + boss = {min = 3}, + boss_colour = HEX "80b48e", pronouns = "they_them", + disable = function(self) + self.disabled = true + end, + calculate = function(_, b, context) + if b.disabled or not context.pre_discard then + return + end + + local cards_added = {} + local count = #G.hand.highlighted + + f(G.hand.highlighted, ipairs):take(count):foreach(function(v, i) + local copy = copy_card(v) + copy:add_to_deck() + table.insert(G.hand, copy) + table.insert(cards_added, copy) + table.insert(G.playing_cards, copy) + draw_card(G.hand, G.discard, i / count * 100, "down", false, copy, nil, nil, true) + end) + + b.triggered = true + playing_card_joker_effects(cards_added) + end, +} + +blind { + key = "improbable", + boss = {min = 4}, + boss_colour = HEX "009966", + pronouns = "it_its", mult = 2, dollars = 5, + defeat = disable_improbable, + disable = disable_improbable, + set_blind = function(_) + G.GAME.modifiers.Roland_improbable = true + end, +} + +if cry_prob then + local orig_cry_prob = cry_prob + + ---@diagnostic disable-next-line: lowercase-global + function cry_prob(...) + return G.GAME.modifiers.Roland_improbable and 0 or orig_cry_prob(...) + end +end + +local orig_update = Game.update + +---@diagnostic disable-next-line: duplicate-set-field +function Game.update(...) + orig_update(...) + local orig = G.GAME.probabilities + + if not G.GAME.modifiers.Roland_improbable or getmetatable(orig) then + return + end + + local normal = orig.normal + + local mt = { + orig = orig, + __index = function(_, k) + return k == "normal" and 0 or orig[k] + end, + __newindex = function(_, k, v) + orig[k] = (k == "normal" and v == 0) and normal or v + end, + } + + local proxy = {} + setmetatable(proxy, mt) + G.GAME.probabilities = proxy +end + +blind { + key = "tranquilizer", + boss = {min = 6}, + boss_colour = HEX "bdaecc", + pronouns = "they_them", collection_loc_vars = function(_) return { vars = {localize { - type = "variable", key = "b_Roland_most_common_card", + type = "variable", + key = "b_Roland_most_common_card", }}, } end, @@ -238,39 +268,53 @@ SMODS.Blind { end, recalc_debuff = function(self, card) local id, _ = common_rank() - return not self.disabled and id == card:get_id() + local ret = not self.disabled and id == card:get_id() + self.triggered = ret + return ret end, } -SMODS.Blind { - key = "xerox", - boss = {min = 3, max = 10}, - boss_colour = HEX "0291fb", - atlas = "blind", - pos = {x = 0, y = 1}, +blind { + key = "equinox", + boss = {min = 6}, + boss_colour = HEX "000000", pronouns = "they_them", - mult = 2, - dollars = 5, - disable = function(self) - self.disabled = true + defeat = function() + G.GAME.modifiers.Roland_equinox = false end, - calculate = function(_, blind, context) - if blind.disabled or not context.pre_discard then - return - end - - local cards_added = {} - local count = #G.hand.highlighted - - f(G.hand.highlighted, ipairs):take(count):foreach(function(v, i) - local copy = copy_card(v) - copy:add_to_deck() - table.insert(G.hand, copy) - table.insert(cards_added, copy) - table.insert(G.playing_cards, copy) - draw_card(G.hand, G.discard, i / count * 100, "down", false, copy, nil, nil, true) - end) - - playing_card_joker_effects(cards_added) + disable = function() + G.GAME.modifiers.Roland_equinox = false + end, + set_blind = function() + G.GAME.modifiers.Roland_equinox = true end, } + +local function equinox() + return G.GAME and + G.GAME.modifiers and + G.GAME.modifiers.Roland_equinox and + G.STATE ~= G.STATES.GAME_OVER +end + +local orig_draw = Card.draw + +---@diagnostic disable-next-line: duplicate-set-field +function Card:draw(...) + if equinox() and not self.states.hover.is and not self.states.focus.is then + add_to_drawhash(self) + else + return orig_draw(self, ...) + end +end + +local orig_draw_self = UIElement.draw_self + +---@diagnostic disable-next-line: duplicate-set-field +function UIElement:draw_self(...) + if equinox() and not self.config.button and not self.config.button_UIE then + add_to_drawhash(self) + else + return orig_draw_self(self, ...) + end +end diff --git a/src/charm.lua b/src/charm.lua index ef71981..98940ad 100644 --- a/src/charm.lua +++ b/src/charm.lua @@ -15,6 +15,8 @@ q(function() key = "iphone", atlas = "iphone", pos = {x = 0, y = 0}, + unlocked = true, + discovered = true, calculate = function(_, _, context) local _ = context.skip_blind and q(function() G.blind_prompt_box = G.blind_prompt_box and G.blind_prompt_box:remove() @@ -31,6 +33,6 @@ q(function() charm:inject() charm:process_loc_text() - SMODS._save_d_u(charm) + -- charm._d, charm._u, charm._saved_d_u = true, true, true -- SMODS._save_d_u(charm) SMODS.current_mod = current_mod end) diff --git a/src/functional.lua b/src/functional.lua index f7493a6..8221839 100644 --- a/src/functional.lua +++ b/src/functional.lua @@ -81,8 +81,7 @@ end --- Determines if a center is allowed to be usable. ---@return boolean local function u() - return not ((G.play and #G.play.cards > 0 or - G.CONTROLLER.locked or + return not ((G.play and #G.play.cards > 0 or G.CONTROLLER.locked or (G.GAME.STOP_USE and G.GAME.STOP_USE > 0)) and G.STATE ~= G.STATES.HAND_PLAYED and G.STATE ~= G.STATES.DRAW_TO_HAND and diff --git a/src/joker.lua b/src/joker.lua index 6a650a6..5f44078 100644 --- a/src/joker.lua +++ b/src/joker.lua @@ -234,47 +234,55 @@ SMODS.Joker { } SMODS.Joker { - key = "sunny", -- Cracked egg + key = "mrsbones", atlas = "void", pronouns = "they_them", pos = {x = 0, y = 0}, - cost = 2, - rarity = 1, + config = {extra = {xmult = 4, requirement = 4}}, + cost = 4, + rarity = 2, eternal_compat = false, + blueprint_compat = false, + perishable_compat = true, + loc_vars = function(_, _, card) + return {vars = {card.ability.extra.xmult, card.ability.extra.requirement * 100}} + end, + calculate = function(_, card, context) + if context.blueprint then + return + end + + if context.joker_main then + return {xmult = card.ability.extra.xmult} + end + + if context.blind_defeated and G.GAME.chips / card.ability.extra.requirement < G.GAME.blind.chips then + q(function() + G.hand_text_area.blind_chips:juice_up() + G.hand_text_area.game_chips:juice_up() + play_sound("tarot1") + card:start_dissolve() + end) + end + end, +} + +SMODS.Joker { + key = "estrogen", + atlas = "void", + pronouns = "they_them", + pos = {x = 0, y = 0}, + config = {extra = {division = 4}}, + cost = 8, + rarity = 3, + eternal_compat = true, blueprint_compat = true, perishable_compat = true, loc_vars = function(_, _, card) - local last = ((G.deck or {}).cards or {})[1] - - if last or card.area ~= G.jokers then - return { - vars = { - "", - localize {type = "variable", key = "b_Roland_na"}, - "", - colours = {G.C.JOKER_GREY, G.C.JOKER_GREY}, - }, - } - end - - local suit = last.base.suit - local value = last.base.value - local name = last.ability.name or "" - local no_rank = SMODS.has_no_rank(last) - local no_suit = SMODS.has_no_suit(last) - - return { - vars = { - value and not no_rank and localize(value or 14, "ranks") or name, - not no_rank and not no_suit and localize {type = "variable", key = "b_Roland_of"} or "", - no_suit and "" or localize(suit, "suits_plural"), - colours = {G.C.IMPORTANT, G.C.SUITS[suit] or G.C.JOKER_GREY}, - }, - } + return {vars = {card.ability.extra.division}} end, - calculate = function(_, _, context) - local _ = context.selling_self and - draw_card(G.deck, G.hand, 100, "up", false, G.deck.cards[1]) + calculate = function(_, card, context) + return context.joker_main and {mult = hand_chips / card.ability.extra.division} or nil end, } @@ -283,8 +291,8 @@ SMODS.Joker { atlas = "void", pronouns = "they_them", pos = {x = 0, y = 0}, - config = {extra = {money = 4}}, - cost = 4, + config = {extra = {money = 6}}, + cost = 6, rarity = 1, eternal_compat = true, blueprint_compat = true, @@ -335,7 +343,7 @@ SMODS.Joker { pronouns = "they_them", pos = {x = 0, y = 0}, config = {extra = {mult = 0}}, - cost = 8, + cost = 6, rarity = 3, eternal_compat = true, blueprint_compat = true, @@ -349,7 +357,7 @@ SMODS.Joker { q(function() playing_card_joker_effects(f(G.play):take(#G.play):map(function(v) - G.playing_card = (G.playing_card and G.playing_card + 1) or 1 + G.playing_card = (G.playing_card or 0) + 1 G.deck.config.card_limit = G.deck.config.card_limit + 1 local copy = copy_card(v, nil, nil, G.playing_card) copy:add_to_deck() @@ -362,6 +370,51 @@ SMODS.Joker { end, } +SMODS.Joker { + key = "sunny", -- Cracked egg + atlas = "void", + pronouns = "they_them", + pos = {x = 0, y = 0}, + cost = 2, + rarity = 1, + eternal_compat = false, + blueprint_compat = true, + perishable_compat = true, + loc_vars = function(_, _, card) + local last = ((G.deck or {}).cards or {})[1] + + if not last or card.area ~= G.jokers then + return { + vars = { + "", + localize {type = "variable", key = "b_Roland_na"}, + "", + colours = {G.C.JOKER_GREY, G.C.JOKER_GREY}, + }, + } + end + + local suit = last.base.suit + local value = last.base.value + local name = last.ability.name or "" + local no_rank = SMODS.has_no_rank(last) + local no_suit = SMODS.has_no_suit(last) + + return { + vars = { + value and not no_rank and localize(value or 14, "ranks") or name, + not no_rank and not no_suit and localize {type = "variable", key = "b_Roland_of"} or "", + no_suit and "" or localize(suit, "suits_plural"), + colours = {G.C.IMPORTANT, G.C.SUITS[suit] or G.C.JOKER_GREY}, + }, + } + end, + calculate = function(_, _, context) + local _ = context.selling_self and + draw_card(G.deck, G.hand, 100, "up", false, G.deck.cards[1]) + end, +} + SMODS.Joker { key = "yard", atlas = "void", @@ -438,59 +491,6 @@ SMODS.Joker { end, } -SMODS.Joker { - key = "mrsbones", - atlas = "void", - pronouns = "they_them", - pos = {x = 0, y = 0}, - config = {extra = {xmult = 4, requirement = 4}}, - cost = 4, - rarity = 2, - eternal_compat = false, - blueprint_compat = false, - perishable_compat = true, - loc_vars = function(_, _, card) - return {vars = {card.ability.extra.xmult, card.ability.extra.requirement * 100}} - end, - calculate = function(_, card, context) - if context.blueprint then - return - end - - if context.joker_main then - return {xmult = card.ability.extra.xmult} - end - - if context.blind_defeated and G.GAME.chips / card.ability.extra.requirement < G.GAME.blind.chips then - q(function() - G.hand_text_area.blind_chips:juice_up() - G.hand_text_area.game_chips:juice_up() - play_sound("tarot1") - card:start_dissolve() - end) - end - end, -} - -SMODS.Joker { - key = "estrogen", - atlas = "void", - pronouns = "they_them", - pos = {x = 0, y = 0}, - config = {extra = {division = 4}}, - cost = 8, - rarity = 3, - eternal_compat = true, - blueprint_compat = true, - perishable_compat = true, - loc_vars = function(_, _, card) - return {vars = {card.ability.extra.division}} - end, - calculate = function(_, card, context) - return context.joker_main and {mult = hand_chips / card.ability.extra.division} or nil - end, -} - SMODS.Joker { key = "oops", -- Slot machine atlas = "void", diff --git a/src/main.lua b/src/main.lua index 0270ce4..d8c7847 100644 --- a/src/main.lua +++ b/src/main.lua @@ -1,6 +1,6 @@ local qol = assert(SMODS.load_file "src/functional.lua")() or require "src.functional" -qol[1] {"challenge", "spectral", "blind", "charm", "joker", "back", "seal"}:foreach(function(v) +qol[1] {"challenge", "spectral", "tweaks", "blind", "charm", "joker", "back", "seal"}:foreach(function(v) assert(SMODS.load_file("src/" .. v .. ".lua"))(qol) end) @@ -10,8 +10,6 @@ if Balatest then end) end -SMODS.Joker:take_ownership("joker", {cost = 1}, true) - SMODS.Atlas { px = 256, py = 256, diff --git a/src/seal.lua b/src/seal.lua index cb221a0..520ceb2 100644 --- a/src/seal.lua +++ b/src/seal.lua @@ -1,14 +1,15 @@ local f, q = unpack(... or require "src.functional") --- SMODS.Atlas { --- px = 71, --- py = 95, --- key = "seal", --- path = "seal.png", --- } +SMODS.Atlas { + px = 71, + py = 95, + key = "seal", + path = "seal.png", +} + SMODS.Seal { key = "glass", - atlas = "void", + atlas = "seal", pos = {x = 0, y = 0}, badge_colour = HEX "f6f6f6", diff --git a/src/spectral.lua b/src/spectral.lua index ca952a3..140cd2f 100644 --- a/src/spectral.lua +++ b/src/spectral.lua @@ -1,5 +1,19 @@ local f, q, u = unpack(... or require "src.functional") +local spectral = (function() + local x = 0 + + ---@param tbl SMODS.Consumable + return function(tbl) + tbl.cost = 4 + tbl.set = "Spectral" + tbl.atlas = "spectral" + tbl.pos = {x = x, y = 0} + SMODS.Consumable(tbl) + x = x + 1 + end +end)() + SMODS.Sound { key = "void", path = "void.ogg", @@ -8,8 +22,8 @@ SMODS.Sound { SMODS.Atlas { px = 71, py = 95, - key = "afterimage", - path = "afterimage.png", + key = "spectral", + path = "spectral.png", } SMODS.Atlas { @@ -19,12 +33,8 @@ SMODS.Atlas { path = "void.png", } -SMODS.Consumable { +spectral { key = "afterimage", - set = "Spectral", - pos = {x = 0, y = 0}, - cost = 4, - atlas = "afterimage", pronouns = "he_they", config = {extra = {amount = 1, hand = -1}}, loc_vars = function(_, _, card) @@ -54,12 +64,8 @@ SMODS.Consumable { end, } -SMODS.Consumable { +spectral { key = "dual", - set = "Spectral", - pos = {x = 0, y = 0}, - cost = 4, - atlas = "afterimage", pronouns = "he_they", config = {extra = {amount = 2}}, loc_vars = function(_, _, card) @@ -88,12 +94,8 @@ SMODS.Consumable { end, } -SMODS.Consumable { +spectral { key = "mirror", - set = "Spectral", - pos = {x = 0, y = 0}, - cost = 4, - atlas = "afterimage", pronouns = "he_they", config = {extra = {amount = 1}}, loc_vars = function(_, _, card) @@ -109,13 +111,9 @@ SMODS.Consumable { end, } -SMODS.Consumable { +spectral { key = "void", - set = "Spectral", - pos = {x = 0, y = 0}, - cost = 4, hidden = true, - atlas = "void", soul_rate = 0.003, soul_set = "Spectral", pronouns = "she_they", diff --git a/src/tweaks.lua b/src/tweaks.lua new file mode 100644 index 0000000..1d87ba2 --- /dev/null +++ b/src/tweaks.lua @@ -0,0 +1,11 @@ +SMODS.Joker:take_ownership("joker", {cost = 1}, true) +local orig_set_debuff = Card.set_debuff + +---@diagnostic disable-next-line: duplicate-set-field +function Card:set_debuff(...) + if self.config and self.config.center_key == "m_wild" then + self.debuff = false + else + orig_set_debuff(self, ...) + end +end