Add new joker
|
Before Width: | Height: | Size: 54 KiB After Width: | Height: | Size: 55 KiB |
|
Before Width: | Height: | Size: 5.7 KiB After Width: | Height: | Size: 5.7 KiB |
|
Before Width: | Height: | Size: 82 KiB After Width: | Height: | Size: 82 KiB |
|
Before Width: | Height: | Size: 33 KiB After Width: | Height: | Size: 33 KiB |
|
Before Width: | Height: | Size: 242 KiB After Width: | Height: | Size: 242 KiB |
|
Before Width: | Height: | Size: 69 KiB After Width: | Height: | Size: 70 KiB |
|
Before Width: | Height: | Size: 1 KiB After Width: | Height: | Size: 1 KiB |
|
Before Width: | Height: | Size: 3.3 KiB After Width: | Height: | Size: 3.3 KiB |
|
Before Width: | Height: | Size: 39 KiB After Width: | Height: | Size: 39 KiB |
|
Before Width: | Height: | Size: 4.3 KiB After Width: | Height: | Size: 4.3 KiB |
|
Before Width: | Height: | Size: 11 KiB After Width: | Height: | Size: 11 KiB |
|
Before Width: | Height: | Size: 79 KiB After Width: | Height: | Size: 79 KiB |
BIN
assets/sounds/excalibur.ogg
Normal 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 = {
|
||||
|
|
|
|||
|
|
@ -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",
|
||||
|
|
|
|||
|
|
@ -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",
|
||||
|
|
|
|||