74 lines
2.1 KiB
Lua
74 lines
2.1 KiB
Lua
local is_rain_world_joker = {}
|
|
|
|
for _, v in pairs(Jane.rain_world_jokers) do
|
|
is_rain_world_joker[v] = true
|
|
end
|
|
|
|
SMODS.Challenge {
|
|
key = "downpour",
|
|
loc_txt = {
|
|
name = "Downpour",
|
|
},
|
|
rules = {custom = {
|
|
{id = "jane_downpour1"},
|
|
{id = "jane_downpour2"},
|
|
{id = "jane_downpour3"},
|
|
{id = "jane_downpour4"},
|
|
}},
|
|
apply = function(_)
|
|
G.GAME.win_ante = 16
|
|
|
|
for _, v in ipairs(Jane.rain_world_jokers) do
|
|
Jane.q(function()
|
|
local card = create_card("Joker", G.jokers, nil, nil, nil, nil, v, "karma_deck_next")
|
|
card:add_to_deck()
|
|
card:start_materialize()
|
|
G.jokers:emplace(card)
|
|
play_sound("timpani")
|
|
end, 0.2)
|
|
end
|
|
end,
|
|
calculate = function(_, context)
|
|
local function l()
|
|
if G.STAGE == G.STAGES.RUN then
|
|
G.STATE = G.STATES.GAME_OVER
|
|
G.STATE_COMPLETE = false
|
|
end
|
|
end
|
|
|
|
if not Jane.is_end_of_ante(context) then
|
|
return
|
|
end
|
|
|
|
local destructible_jokers = {}
|
|
|
|
for _, v in pairs(G.jokers.cards) do
|
|
if is_rain_world_joker[v.config.center.key] and not ((v.ability or {}).eternal or (v.ability or {}).cry_absolute) then
|
|
destructible_jokers[#destructible_jokers + 1] = v
|
|
end
|
|
end
|
|
|
|
if not next(destructible_jokers) then
|
|
return l()
|
|
end
|
|
|
|
local chosen = pseudorandom_element(destructible_jokers, pseudoseed("karma_deck"))
|
|
|
|
if chosen then
|
|
chosen.getting_sliced = true
|
|
chosen:start_dissolve()
|
|
end
|
|
end,
|
|
}
|
|
|
|
G.localization.misc.v_text.ch_c_jane_downpour1 =
|
|
{"Start with all {C:legendary}Rain World Jokers"}
|
|
|
|
G.localization.misc.v_text.ch_c_jane_downpour2 =
|
|
{"Destroy a random {C:legendary}Rain World Joker {}when"}
|
|
|
|
G.localization.misc.v_text.ch_c_jane_downpour3 =
|
|
{"{C:attention}Boss Blind {}is defeated, or {C:red}lose"}
|
|
|
|
G.localization.misc.v_text.ch_c_jane_downpour4 =
|
|
{"Win on {C:attention}Ante 16"}
|