local rain_world_jokers = { "j_jane_monk", "j_jane_survivor", "j_jane_hunter", "j_jane_gourmand", "j_jane_artificer", "j_jane_spearmaster", "j_jane_rivulet", "j_jane_saint", "j_jane_rot", } local is_rain_world_joker, survival = {}, {} for _, v in pairs(rain_world_jokers) do is_rain_world_joker[v] = true end Jane.q(function() for gk, g in pairs(G.localization.descriptions) do for ck, c in pairs((type(g) == "table" and not ({Back = true, Sleeve = true})[gk]) and g or {}) do for _, text in pairs((type(c) == "table" and type(c.text) == "table" and G.P_CENTERS[ck]) and c.text or {}) do if type(text) == "string" and (text:find("discard") or text:find("Discard")) then survival[#survival + 1] = {id = ck} break end end end end end, nil, nil, nil, nil, false, true) SMODS.Challenge { key = "survival", loc_txt = {name = "Survival"}, jokers = {{id = "j_jane_survivor"}}, rules = {modifiers = {{id = "discards", value = 0}}}, restrictions = {banned_cards = survival}, } SMODS.Challenge { key = "downpour", loc_txt = {name = "Downpour"}, rules = {custom = {{id = "jane_downpour1"}, {id = "jane_downpour2"}, {id = "jane_downpour3"}}}, apply = function(_) for _, v in ipairs(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"}