Rework joker from scratch

This commit is contained in:
Emik 2026-07-08 18:19:36 +02:00
parent d63333d242
commit 3fb5623b08
Signed by: emik
GPG key ID: 6B0CD72A5E503BDF
17 changed files with 75 additions and 48 deletions

Binary file not shown.

Before

Width:  |  Height:  |  Size: 67 KiB

After

Width:  |  Height:  |  Size: 67 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 3.8 KiB

After

Width:  |  Height:  |  Size: 3.8 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 89 KiB

After

Width:  |  Height:  |  Size: 89 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 3.3 KiB

After

Width:  |  Height:  |  Size: 3.3 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 242 KiB

After

Width:  |  Height:  |  Size: 242 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 85 KiB

After

Width:  |  Height:  |  Size: 85 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 33 KiB

After

Width:  |  Height:  |  Size: 33 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 1 KiB

After

Width:  |  Height:  |  Size: 1 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 3 KiB

After

Width:  |  Height:  |  Size: 3 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 39 KiB

After

Width:  |  Height:  |  Size: 39 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 4.3 KiB

After

Width:  |  Height:  |  Size: 4.3 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 11 KiB

After

Width:  |  Height:  |  Size: 11 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 79 KiB

After

Width:  |  Height:  |  Size: 79 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 22 KiB

After

Width:  |  Height:  |  Size: 22 KiB

View file

@ -325,6 +325,14 @@ return {
name = "Phytoestrogens",
text = {"{C:mult}+Chips{} Mult, {X:mult,C:white}X#1#{} Mult"},
},
j_Roland_polaris = {
name = "Polaris",
text = {
"The {C:attention}first {}scored",
"card each round",
"becomes {C:dark_edition}Frozen",
},
},
j_Roland_sapling = {
name = "Sapling",
text = {
@ -396,14 +404,6 @@ return {
text = {"{X:red,C:white}X#1#{} discards each round"},
unlock = {"Defeat {C:dark_edition}#1#"},
},
j_Roland_yard = {
name = "Yard Sale",
text = {
"Gain {C:money}$#1#{} when a",
"card is {C:attention}removed",
"from the deck",
},
},
},
Other = {
roland_glass_seal = {
@ -577,6 +577,7 @@ return {
b_Roland_entering_shop = "Entering shop!",
b_Roland_equinox_assist = "Assist: Only hide text (Equinox)",
b_Roland_faster_planets = "Faster Planets",
b_Roland_frozen = "Frozen!",
b_Roland_full = "FULL",
b_Roland_scribable_basket = "Scribable Basket (overpowered)",
b_Roland_harsh_ante_scaling = "Harsh ante scaling (Ante 40+)",

View file

@ -3,7 +3,7 @@
"id": "Roland",
"name": "Roland",
"prefix": "Roland",
"version": "2.9.41",
"version": "2.9.42",
"badge_colour": "8BE9FD",
"display_name": "Roland",
"main_file": "src/main.lua",

View file

@ -413,6 +413,71 @@ joker {
end,
}
joker {
key = "misfortune",
pronouns = "she_they",
artist = "char",
attributes = {"discard", "passive", "tarot", "planet", "generation", "seals"},
cost = 6,
rarity = 2,
eternal_compat = true,
blueprint_compat = false,
perishable_compat = true,
loc_vars = function(_, info_queue)
table.insert(info_queue, G.P_SEALS.Purple)
table.insert(info_queue, G.P_SEALS.Blue)
table.insert(info_queue, negative)
end,
in_pool = function()
return not not f(G.playing_cards):map "seal":any(f.index_into {Blue = true, Purple = true})
end,
}
joker {
key = "polaris",
pronouns = "he_him",
attributes = {"editions", "space"},
cost = 6,
rarity = 1,
eternal_compat = true,
blueprint_compat = false,
perishable_compat = true,
loc_vars = function(_, info_queue)
table.insert(info_queue, G.P_CENTERS.e_Roland_frozen)
return {vars = {}}
end,
calculate = function(_, card, context)
if context.end_of_round then
card.Roland_polaris = nil
return
end
local no = context.blueprint or not context.before or card.Roland_polaris
if no and not context.forcetrigger then
return
end
card.Roland_polaris = true
local first = context.scoring_hand[1]
if not first or first.edition and first.edition.Roland_frozen then
return
end
q {
delay = 0.1,
func = function()
card:juice_up()
first:juice_up()
first:set_edition {Roland_frozen = true}
end,
}
return {message = localize {type = "variable", key = "b_Roland_frozen"}, colour = G.C.DARK_EDITION}
end,
}
joker {
key = "cold",
pronouns = "he_him",
@ -552,45 +617,6 @@ joker {
end,
}
joker {
key = "yard",
pronouns = "he_him",
config = {extra = {money = 2}},
attributes = {"economy"},
cost = 4,
rarity = 1,
eternal_compat = true,
blueprint_compat = true,
perishable_compat = true,
loc_vars = function(_, _, card)
return {vars = {card.ability.extra.money}}
end,
calculate = function(_, card, context)
return (context.remove_playing_cards or context.forcetrigger) and
{dollars = card.ability.extra.money * #context.removed, card = card} or nil
end,
}
joker {
key = "misfortune",
pronouns = "she_they",
artist = "char",
attributes = {"discard", "passive", "tarot", "planet", "generation", "seals"},
cost = 6,
rarity = 2,
eternal_compat = true,
blueprint_compat = false,
perishable_compat = true,
loc_vars = function(_, info_queue)
table.insert(info_queue, G.P_SEALS.Purple)
table.insert(info_queue, G.P_SEALS.Blue)
table.insert(info_queue, negative)
end,
in_pool = function()
return not not f(G.playing_cards):map "seal":any(f.index_into {Blue = true, Purple = true})
end,
}
joker {
key = "amber",
pronouns = "they_them",