diff --git a/assets/1x/joker.png b/assets/1x/joker.png index d8ee471..2bb31c0 100644 Binary files a/assets/1x/joker.png and b/assets/1x/joker.png differ diff --git a/assets/2x/back.png b/assets/2x/back.png index f1474e5..bffee26 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 4874321..9a5263c 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 ab3cfb3..6862232 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 9d87d6c..27c224a 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 9cd777f..d58910d 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 3062e58..3701940 100644 Binary files a/assets/2x/seal.png and b/assets/2x/seal.png differ diff --git a/assets/2x/sleeve.png b/assets/2x/sleeve.png index a71b150..bd59c9a 100644 Binary files a/assets/2x/sleeve.png and b/assets/2x/sleeve.png differ diff --git a/assets/2x/spectral.png b/assets/2x/spectral.png index d2df605..83725a0 100644 Binary files a/assets/2x/spectral.png and b/assets/2x/spectral.png differ diff --git a/assets/2x/tag.png b/assets/2x/tag.png index 9a353d5..16fc738 100644 Binary files a/assets/2x/tag.png and b/assets/2x/tag.png differ diff --git a/assets/2x/tarot.png b/assets/2x/tarot.png index b97a308..2d87847 100644 Binary files a/assets/2x/tarot.png and b/assets/2x/tarot.png differ diff --git a/assets/2x/unicon.png b/assets/2x/unicon.png index 5c2c4a0..d986b30 100644 Binary files a/assets/2x/unicon.png and b/assets/2x/unicon.png differ diff --git a/localization/en-us.lua b/localization/en-us.lua index 7edfbed..66f60a5 100644 --- a/localization/en-us.lua +++ b/localization/en-us.lua @@ -339,6 +339,14 @@ return { "{C:attention}#2#", }, }, + j_Roland_verdant = { + name = "Verdant Leaf", + text = { + "{X:mult,C:white}X#1#{} Mult", + "{C:red}Debuffs {}the {C:attention}first", + "{C:attention}#2# {}scored cards", + }, + }, j_Roland_yard = { name = "Yard Sale", text = { diff --git a/manifest.json b/manifest.json index ee621bd..551a984 100644 --- a/manifest.json +++ b/manifest.json @@ -3,7 +3,7 @@ "id": "Roland", "name": "Roland", "prefix": "Roland", - "version": "2.8.34", + "version": "2.8.35", "badge_colour": "8BE9FD", "display_name": "Roland", "main_file": "src/main.lua", diff --git a/src/joker.lua b/src/joker.lua index be16d21..a6e9441 100644 --- a/src/joker.lua +++ b/src/joker.lua @@ -684,7 +684,7 @@ joker { rarity = 3, eternal_compat = true, blueprint_compat = true, - perishable_compat = false, + perishable_compat = true, loc_vars = function(_, _, card) return {vars = {card.ability.extra.xmult}} end, @@ -731,7 +731,7 @@ joker { rarity = 3, eternal_compat = true, blueprint_compat = true, - perishable_compat = false, + perishable_compat = true, loc_vars = function(_, _, card) return {vars = {card.ability.extra.xmult}} end, @@ -749,7 +749,7 @@ joker { right.config.center.key == "j_Roland_crimson" if debuffed_by_crimson and v.ability.Roland_crimson == nil then - v.ability.Roland_crimson = v.debuff and true or false + v.ability.Roland_crimson = not not v.debuff v:set_debuff(true) elseif not debuffed_by_crimson and v.ability.Roland_crimson ~= nil then v:set_debuff(v.ability.Roland_crimson) @@ -766,6 +766,56 @@ function Card:stop_drag(...) return orig_stop_drag(self, ...) end +joker { + key = "verdant", + pronouns = "she_her", + config = {extra = {debuffs = 2, xmult = 3}}, + pixel_size = {w = 68, h = 68}, + attributes = {"xmult"}, + cost = 6, + rarity = 3, + eternal_compat = true, + blueprint_compat = true, + perishable_compat = true, + loc_vars = function(_, _, card) + local extra = card.ability.extra + return {vars = {extra.xmult, extra.debuffs}} + end, + calculate = function(self, card, context) + local extra = card.ability.extra + self:verdant(context.scoring_hand, extra.debuffs) + return (context.joker_main or context.forcetrigger) and {card = card, xmult = extra.xmult} or nil + end, + update = function() + local _ = G.STATE == G.STATES.SELECTING_HAND and G.hand and G.hand:parse_highlighted() + end, + verdant = function(_, cards, amount) + return cards and next(cards) and f(G.playing_cards):each(function(v) + table.sort(cards, function(a, b) + return a.rank < b.rank + end) + + local should_be_verdant = f(amount):map(f.index_into(cards)):any(f.eq(v)) + local has_verdant = v.ability.Roland_verdant ~= nil + + if should_be_verdant and not has_verdant then + v.ability.Roland_verdant = not not v.debuff + v:set_debuff(true) + elseif not should_be_verdant and has_verdant then + v:set_debuff(v.ability.Roland_verdant) + v.ability.Roland_verdant = nil + end + end) or nil + end, +} + +local orig_unhighlight_all = CardArea.unhighlight_all + +function CardArea:unhighlight_all(...) + G.P_CENTERS.j_Roland_verdant:verdant(self.cards) + return orig_unhighlight_all(self, ...) +end + joker { key = "martingale", pronouns = "he_him",