From 396a1ff32202c7334bf5a36607dcb3e74fbc831a Mon Sep 17 00:00:00 2001 From: Emik Date: Fri, 2 May 2025 05:23:15 +0200 Subject: [PATCH] Add Afterimage spectral card --- assets/1x/afterimage.png | Bin 0 -> 4340 bytes assets/2x/afterimage.png | Bin 0 -> 3337 bytes localization/en-us.lua | 8 +++++++ manifest.json | 2 +- src/spectral.lua | 47 +++++++++++++++++++++++++++++++++++++-- 5 files changed, 54 insertions(+), 3 deletions(-) create mode 100644 assets/1x/afterimage.png create mode 100644 assets/2x/afterimage.png diff --git a/assets/1x/afterimage.png b/assets/1x/afterimage.png new file mode 100644 index 0000000000000000000000000000000000000000..672d9328c5454fbd7300ebbb5b74ad223462e60a GIT binary patch literal 4340 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 literal 0 HcmV?d00001 diff --git a/localization/en-us.lua b/localization/en-us.lua index c06f480..39fd1c5 100644 --- a/localization/en-us.lua +++ b/localization/en-us.lua @@ -44,6 +44,14 @@ return { }, }, Spectral = { + c_Roland_afterimage = { + name = "Afterimage", + text = { + "Add {C:dark_edition}Negative {}to {C:attention}#1#", + "selected card in hand", + "{C:red}#2#{} hand size", + }, + }, c_Roland_void = { name = "Void", text = { diff --git a/manifest.json b/manifest.json index 0d9f9a5..6010945 100644 --- a/manifest.json +++ b/manifest.json @@ -6,7 +6,7 @@ "author": [ "Emik" ], - "version": "1.3.2", + "version": "1.4.0", "badge_colour": "8BE9FD", "main_file": "src/main.lua", "badge_text_colour": "44475A", diff --git a/src/spectral.lua b/src/spectral.lua index d02541e..1a81b6e 100644 --- a/src/spectral.lua +++ b/src/spectral.lua @@ -1,5 +1,3 @@ -SMODS.Sound({key = "void", path = "void.ogg"}) - local function can_use() return not ((G.play and #G.play.cards > 0 or G.CONTROLLER.locked or @@ -9,6 +7,15 @@ local function can_use() G.STATE ~= G.STATES.PLAY_TAROT) end +SMODS.Sound({key = "void", path = "void.ogg"}) + +SMODS.Atlas { + px = 71, + py = 95, + key = "afterimage", + path = "afterimage.png", +} + SMODS.Atlas { px = 71, py = 95, @@ -16,6 +23,42 @@ SMODS.Atlas { path = "void.png", } +SMODS.Consumable { + key = "afterimage", + set = "Spectral", + pos = {x = 0, y = 0}, + cost = 6, + atlas = "afterimage", + config = {extra = {amount = 1, hand = -1}}, + loc_vars = function(_, _, card) + return {vars = {card.ability.extra.amount, card.ability.extra.hand}} + end, + can_use = function(_, card) + return can_use() and card.ability.extra.amount == #Bakery_API.get_highlighted() + end, + use = function(_, card, _, _) + for _, v in ipairs(Bakery_API.get_highlighted()) do + G.E_MANAGER:add_event(Event { + delay = 0.1, + func = function() + v:set_edition({negative = true}) + v:juice_up(0.5, 0.5) + return true + end, + }) + end + + G.E_MANAGER:add_event(Event { + delay = 0.1, + func = function() + G.hand:change_size(card.ability.extra.hand) + Bakery_API.unhighlight_all() + return true + end, + }) + end, +} + SMODS.Consumable { key = "void", set = "Spectral",