diff --git a/assets/1x/joker.png b/assets/1x/joker.png index 26d9faa..b37aab7 100644 Binary files a/assets/1x/joker.png and b/assets/1x/joker.png differ diff --git a/assets/1x/joker.png.kra b/assets/1x/joker.png.kra new file mode 100644 index 0000000..49b3a48 Binary files /dev/null and b/assets/1x/joker.png.kra differ diff --git a/assets/1x/joker.png~ b/assets/1x/joker.png~ new file mode 100644 index 0000000..9528f4d Binary files /dev/null and b/assets/1x/joker.png~ differ diff --git a/assets/2x/back.png b/assets/2x/back.png index fb5cdee..9f0903a 100644 Binary files a/assets/2x/back.png and b/assets/2x/back.png differ diff --git a/assets/2x/blind.png b/assets/2x/blind.png index 8216c7b..e9b6f7d 100644 Binary files a/assets/2x/blind.png and b/assets/2x/blind.png differ diff --git a/assets/2x/charm.png b/assets/2x/charm.png index 72b6e00..ca1bed7 100644 Binary files a/assets/2x/charm.png and b/assets/2x/charm.png differ diff --git a/assets/2x/icon.png b/assets/2x/icon.png index b16155a..986d67c 100644 Binary files a/assets/2x/icon.png and b/assets/2x/icon.png differ diff --git a/assets/2x/joker.png b/assets/2x/joker.png index 5fa2a90..90a60b5 100644 Binary files a/assets/2x/joker.png and b/assets/2x/joker.png differ diff --git a/assets/2x/seal.png b/assets/2x/seal.png index 8f86011..cbf3bef 100644 Binary files a/assets/2x/seal.png and b/assets/2x/seal.png differ diff --git a/assets/2x/spectral.png b/assets/2x/spectral.png index c303a60..e300e85 100644 Binary files a/assets/2x/spectral.png and b/assets/2x/spectral.png differ diff --git a/localization/en-us.lua b/localization/en-us.lua index 237e097..3450913 100644 --- a/localization/en-us.lua +++ b/localization/en-us.lua @@ -126,6 +126,10 @@ return { }, }, Joker = { + j_Roland_arctic = { + name = "Arctic Circle", + text = {"Retrigger all", "{C:dark_edition}Frozen {}cards"}, + }, j_Roland_basket = { name = "Basket", text = { diff --git a/src/joker.lua b/src/joker.lua index 531a970..7571368 100644 --- a/src/joker.lua +++ b/src/joker.lua @@ -31,8 +31,14 @@ local function destructible(card) return not card.highlighted and not (card.ability or {}).eternal end +---@param card Card local function is_carbon(card) - return card.edition and card.edition.key == "e_Bakery_Carbon" + return (card:get_edition() or {}).e_Bakery_Carbon +end + +---@param card Card +local function is_frozen(card) + return (card:get_edition() or {}).e_Roland_frozen end local function is_mergeable_with(x) @@ -408,8 +414,9 @@ joker { } joker { - key = "sunny", -- Cracked egg + key = "sunny", pronouns = "they_them", + artist = "char", cost = 2, rarity = 1, eternal_compat = false, @@ -516,6 +523,7 @@ joker { joker { key = "sapling", pronouns = "they_them", + artist = "char", cost = 4, rarity = 1, config = {extra = {mult = 15, suits = 3}}, @@ -641,7 +649,7 @@ joker { return (context.joker_main or context.forcetrigger) and {card = card, xmult = self:xmult_frozen(card)} or nil end, xmult_frozen = function(self, card) - if not card.edition or not card.edition.Roland_frozen then + if not is_frozen(card) then return self.xmult() end @@ -744,3 +752,30 @@ joker { end end, } + +joker { + key = "arctic", + pronouns = "it_its", + cost = 10, + rarity = 3, + eternal_compat = true, + blueprint_compat = true, + perishable_compat = true, + loc_vars = function(_, info_queue) + table.insert(info_queue, G.P_CENTERS.e_Roland_frozen) + end, + calculate = function(_, card, context) + local playing_card = context.repetition and is_frozen(context.other_card) and {repetitions = 1} or nil + + return SMODS.merge_effects( + f(G.jokers.cards):where(is_frozen):map(function(v) + return SMODS.blueprint_effect(card, v, context) + end):concat(playing_card):where(function(v) + return type(v) == "table" + end):map(function(v) + v.colour = G.C.BLACK + return v + end):table() + ) + end, +}