Add new joker

This commit is contained in:
Emik 2026-06-16 13:47:46 +02:00
parent e5ca09df63
commit 09cc387b8e
Signed by: emik
GPG key ID: 6B0CD72A5E503BDF
16 changed files with 90 additions and 4 deletions

Binary file not shown.

Before

Width:  |  Height:  |  Size: 54 KiB

After

Width:  |  Height:  |  Size: 55 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 5.7 KiB

After

Width:  |  Height:  |  Size: 5.7 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 82 KiB

After

Width:  |  Height:  |  Size: 82 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: 242 KiB

After

Width:  |  Height:  |  Size: 242 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 69 KiB

After

Width:  |  Height:  |  Size: 70 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.3 KiB

After

Width:  |  Height:  |  Size: 3.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

BIN
assets/sounds/excalibur.ogg Normal file

Binary file not shown.

View file

@ -182,6 +182,22 @@ return {
"{C:inactive}(Currently {C:red}+#3#{C:inactive} Mult)",
},
},
j_Roland_excalibur = {
name = "Excalibur",
text = {
"Score {C:attention}#1# {C:enhanced}Stone Cards",
"to {C:attention}pull {}this {C:attention}Joker",
"{C:inactive}(Currently {C:attention}#2#{C:inactive})",
},
},
j_Roland_excalibur_Back = {
name = "Excalibur",
text = {
"Scored and held in",
"hand {C:enhanced}Stone Cards",
"each give {X:mult,C:white}X#3#{} Mult",
},
},
j_Roland_hardboiled = {
name = "Hard-Boiled",
text = {

View file

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

View file

@ -109,6 +109,11 @@ SMODS.Sound {
path = "nilly.ogg",
}
SMODS.Sound {
key = "excalibur",
path = "excalibur.ogg",
}
joker {
key = "msjoker",
pronouns = "she_her",
@ -974,9 +979,10 @@ joker {
calculate = function(_, card, context)
local extra = card.ability.extra
if context.blueprint or
not context.using_consumeable or
context.consumeable.config.center.key ~= extra.sequence[extra.progress + 1] then
if not context.forcetrigger and
(context.blueprint or
not context.using_consumeable or
context.consumeable.config.center.key ~= extra.sequence[extra.progress + 1]) then
return
end
@ -1002,6 +1008,70 @@ joker {
end,
}
joker {
key = "excalibur",
pronouns = "he_him",
cost = 8,
rarity = 3,
config = {extra = {
scored = 0,
xmult = 1.5,
required = 15,
flipped = false,
}},
attributes = {"xmult", "enhancements", "bakery_double_sided"},
eternal_compat = true,
blueprint_compat = false,
perishable_compat = true,
loc_vars = function(_, info_queue, card)
local extra = card.ability.extra
local _ = card.fake_card or table.insert(info_queue, G.P_CENTERS.m_stone)
return {vars = {extra.required, extra.scored, extra.xmult}}
end,
generate_ui = function(self, info_queue, card, ...)
Bakery_API.werewolf_ui "j_Roland_excalibur_Back" (self, info_queue, card, ...)
if not card or not card.ability.extra.flipped then
return
end
f(info_queue):keys():each(function(v)
info_queue[v] = nil
end)
table.insert(info_queue, G.P_CENTERS.m_stone)
end,
calculate = function(_, card, context)
local extra = card.ability.extra
if not context.forcetrigger and
(context.end_of_round or
not context.individual or
(context.cardarea ~= G.play and context.cardarea ~= G.hand) or
not SMODS.has_enhancement(context.other_card, "m_stone")) then
return
end
local delta = (context.cardarea == G.play and not card.blueprint) and 1 or 0
extra.scored = extra.scored + delta
if not extra.flipped and extra.scored == extra.required then
Bakery_API.flip_double_sided(card)
q(function()
play_sound "Roland_excalibur"
end)
end
return extra.scored > extra.required and {card = card, xmult = card.ability.extra.xmult} or
(delta > 0 and {
message = extra.scored .. "/" .. extra.required,
colour = G.C.JOKER_GREY,
message_card = card,
} or nil)
end,
}
joker {
key = "oops",
pronouns = "she_they",