Compare commits
6 commits
| Author | SHA1 | Date | |
|---|---|---|---|
| 6ff684ed79 | |||
| 8e44deab99 | |||
| 023fa306ff | |||
| 63a48ff597 | |||
| af75973c0b | |||
| d131dadae8 |
9 changed files with 130 additions and 115 deletions
|
|
@ -17,5 +17,5 @@
|
|||
"conflicts": [
|
||||
"Jen"
|
||||
],
|
||||
"version": "1.5.15"
|
||||
"version": "1.5.19"
|
||||
}
|
||||
1
refs/CardSleeves
Symbolic link
1
refs/CardSleeves
Symbolic link
|
|
@ -0,0 +1 @@
|
|||
../../CardSleeves/
|
||||
65
src/back.lua
65
src/back.lua
|
|
@ -149,7 +149,7 @@ back {
|
|||
end,
|
||||
}
|
||||
|
||||
local rain_world_jokers = {
|
||||
Jane.rain_world_jokers = {
|
||||
"j_jane_monk",
|
||||
"j_jane_survivor",
|
||||
"j_jane_hunter",
|
||||
|
|
@ -161,12 +161,6 @@ local rain_world_jokers = {
|
|||
"j_jane_rot",
|
||||
}
|
||||
|
||||
local is_rain_world_joker = {}
|
||||
|
||||
for _, v in pairs(rain_world_jokers) do
|
||||
is_rain_world_joker[v] = true
|
||||
end
|
||||
|
||||
local function add_rain_world_joker()
|
||||
if not G.jokers then
|
||||
return
|
||||
|
|
@ -174,13 +168,14 @@ local function add_rain_world_joker()
|
|||
|
||||
local unobtained = {}
|
||||
|
||||
for _, v in pairs(rain_world_jokers) do
|
||||
for _, v in pairs(Jane.rain_world_jokers) do
|
||||
if not next(SMODS.find_card(v, true)) then
|
||||
unobtained[#unobtained + 1] = v
|
||||
end
|
||||
end
|
||||
|
||||
local chosen = pseudorandom_element(next(unobtained) and unobtained or rain_world_jokers, pseudoseed("karma_deck"))
|
||||
local chosen = pseudorandom_element(next(unobtained) and unobtained or Jane.rain_world_jokers,
|
||||
pseudoseed("karma_deck"))
|
||||
local card = create_card("Joker", G.jokers, nil, nil, nil, nil, chosen, "karma_deck_next")
|
||||
card:add_to_deck()
|
||||
card:start_materialize()
|
||||
|
|
@ -194,65 +189,24 @@ back {
|
|||
loc_txt = {
|
||||
name = "Karma Deck",
|
||||
text = {
|
||||
"Start with a {C:legendary}Rain World Joker",
|
||||
"Create another when",
|
||||
"{C:attention}Boss Blind {}is defeated",
|
||||
"Start with a",
|
||||
"{C:legendary}Rain World Joker",
|
||||
},
|
||||
},
|
||||
alt_loc_txt = {
|
||||
name = "Ascension Sleeve",
|
||||
text = {
|
||||
"Start with all {C:legendary}Rain World Jokers {}instead",
|
||||
"Destroy a random {C:legendary}Rain World Joker {}when",
|
||||
"{C:attention}Boss Blind {}is defeated, or {C:red}lose",
|
||||
"Create a {C:legendary}Rain World Joker",
|
||||
"when {C:attention}Boss Blind {}is defeated",
|
||||
},
|
||||
},
|
||||
alt_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
|
||||
Jane.q(add_rain_world_joker)
|
||||
end,
|
||||
apply = function(_)
|
||||
Jane.q(add_rain_world_joker)
|
||||
end,
|
||||
alt_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,
|
||||
calculate = function(_, _, context)
|
||||
if Jane.is_end_of_ante(context) then
|
||||
add_rain_world_joker()
|
||||
end
|
||||
|
|
@ -349,6 +303,7 @@ back {
|
|||
|
||||
local orig_get_current_pool = get_current_pool
|
||||
|
||||
---@diagnostic disable-next-line: lowercase-global
|
||||
function get_current_pool(_type, ...)
|
||||
local pool, pool_key = orig_get_current_pool(_type, ...)
|
||||
|
||||
|
|
|
|||
78
src/challenge.lua
Normal file
78
src/challenge.lua
Normal file
|
|
@ -0,0 +1,78 @@
|
|||
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",
|
||||
}
|
||||
|
|
@ -10,7 +10,7 @@ local function allow_moire()
|
|||
end
|
||||
|
||||
for _, v in pairs(SMODS.find_card("j_jane_saint")) do
|
||||
if v.is_attuned then
|
||||
if v.ability.extra.is_attuned then
|
||||
return true
|
||||
end
|
||||
end
|
||||
|
|
@ -28,23 +28,21 @@ SMODS.Edition({
|
|||
name = "Polygloss",
|
||||
label = "Polygloss",
|
||||
text = Cryptid and {
|
||||
"{C:chips}+#1#{}, {X:chips,C:white}X#2#{} & {X:chips,C:dark_edition}^#3#{} Chips",
|
||||
"{C:mult}+#4#{}, {X:mult,C:white}X#5#{} & {X:mult,C:dark_edition}^#6#{} Mult",
|
||||
"{C:money}$#7# {}when scored",
|
||||
} or {
|
||||
"{C:chips}+#1#{} & {X:chips,C:white}X#2#{} Chips",
|
||||
"{C:mult}+#3#{} & {X:mult,C:white}X#4#{} Mult",
|
||||
"{C:chips}+#1#{} Chips",
|
||||
"{C:mult}+#2#{}, {X:mult,C:white}X#3#{}, & {X:mult,C:dark_edition}^#4#{} Mult",
|
||||
"{C:money}$#5# {}when scored",
|
||||
} or {
|
||||
"{C:chips}+#1#{} Chips",
|
||||
"{C:mult}+#2#{} & {X:mult,C:white}X#3#{} Mult",
|
||||
"{C:money}$#4# {}when scored",
|
||||
},
|
||||
},
|
||||
config = {
|
||||
mult = 1,
|
||||
chips = 1,
|
||||
x_mult = 1.1,
|
||||
x_chips = 1.1,
|
||||
mult = 2,
|
||||
chips = 12,
|
||||
x_mult = 1.2,
|
||||
p_dollars = 1,
|
||||
e_chips = Cryptid and 1.01 or nil,
|
||||
e_mult = Cryptid and 1.01 or nil,
|
||||
e_mult = Cryptid and 1.02 or nil,
|
||||
},
|
||||
sound = {sound = "jane_e_polygloss", per = 1.2, vol = 0.4},
|
||||
weight = 8,
|
||||
|
|
@ -53,8 +51,7 @@ SMODS.Edition({
|
|||
shader = "polygloss",
|
||||
apply_to_float = false,
|
||||
loc_vars = function(self, _, _)
|
||||
local vars = {self.config.chips, self.config.x_chips}
|
||||
vars[#vars + 1] = self.config.e_chips
|
||||
local vars = {self.config.chips}
|
||||
vars[#vars + 1] = self.config.mult
|
||||
vars[#vars + 1] = self.config.x_mult
|
||||
vars[#vars + 1] = self.config.e_mult
|
||||
|
|
@ -71,8 +68,6 @@ SMODS.Edition({
|
|||
return {
|
||||
e_mult = card.edition.e_mult,
|
||||
x_mult = card.edition.x_mult,
|
||||
e_chips = card.edition.e_chips,
|
||||
x_chips = card.edition.x_chips,
|
||||
p_dollars = card.edition.p_dollars,
|
||||
}
|
||||
elseif context.main_scoring and context.cardarea == G.play then
|
||||
|
|
@ -81,8 +76,6 @@ SMODS.Edition({
|
|||
chips = card.edition.chips,
|
||||
e_mult = card.edition.e_mult,
|
||||
x_mult = card.edition.x_mult,
|
||||
e_chips = card.edition.e_chips,
|
||||
x_chips = card.edition.x_chips,
|
||||
p_dollars = card.edition.p_dollars,
|
||||
}
|
||||
end
|
||||
|
|
@ -151,7 +144,7 @@ SMODS.Edition({
|
|||
end
|
||||
end,
|
||||
sound = {sound = "jane_e_jumbo", per = 1, vol = 0.5},
|
||||
weight = 3,
|
||||
weight = 4,
|
||||
extra_cost = 5,
|
||||
in_shop = true,
|
||||
shader = false,
|
||||
|
|
@ -164,11 +157,14 @@ SMODS.Edition({
|
|||
loc_txt = {
|
||||
name = "Moire",
|
||||
label = "Moire",
|
||||
text = {"{X:chips,C:dark_edition}^#1#{C:chips} Chips{}, {X:mult,C:dark_edition}^#2#{C:mult} Mult"},
|
||||
text = {
|
||||
"{X:chips,C:dark_edition}^#1#{C:chips} Chips",
|
||||
"{X:mult,C:dark_edition}^#2#{C:mult} Mult",
|
||||
},
|
||||
},
|
||||
config = {e_chips = Cryptid and 0.8 or 0.9, e_mult = Cryptid and 1.2 or 1.1},
|
||||
sound = {sound = "jane_e_moire", per = 1, vol = 0.7},
|
||||
weight = 1,
|
||||
weight = 2,
|
||||
extra_cost = 6,
|
||||
in_shop = true,
|
||||
shader = "moire",
|
||||
|
|
|
|||
|
|
@ -362,7 +362,7 @@ function Jane.oxy(card, removed)
|
|||
end
|
||||
end
|
||||
|
||||
local steel = 1.5
|
||||
local steel = 2
|
||||
|
||||
SMODS.Joker {
|
||||
key = "oxy",
|
||||
|
|
@ -370,15 +370,15 @@ SMODS.Joker {
|
|||
loc_txt = {
|
||||
name = "Oxy{C:dark_edition}#1#",
|
||||
text = {
|
||||
"{C:attention}Scored steel {}cards give",
|
||||
"{X:mult,C:white}X#2#{} {C:mult}Mult {}and {X:chips,C:white}X#2#{} {C:chips}Chips",
|
||||
"{C:attention}Scored steel {}cards",
|
||||
"give {X:mult,C:white}X#2#{} {C:mult}Mult",
|
||||
"{C:dark_edition,E:1}#3#{}#4#{C:red}#5#{C:attention}#6#",
|
||||
"{C:dark_edition,E:1}#7#{}#8#",
|
||||
"#9#{C:dark_edition,E:1}#10#",
|
||||
"{C:inactive,s:0.75,E:1}#11#{C:red,s:1.5,E:1}#12#",
|
||||
},
|
||||
},
|
||||
config = {extra = {corrupted_steel = 2.5, is_corrupted = false, milestone = 3, progress = 0}},
|
||||
config = {extra = {corrupted_steel = 6, is_corrupted = false, milestone = 3, progress = 0}},
|
||||
pos = {x = 0, y = 0},
|
||||
sinis = {x = 2, y = 0},
|
||||
soul_pos = {x = 1, y = 0},
|
||||
|
|
@ -472,7 +472,7 @@ SMODS.Joker {
|
|||
context.cardarea == G.play and
|
||||
context.other_card.ability.name == "Steel Card" then
|
||||
local amount = extra.is_corrupted and extra.corrupted_steel or steel
|
||||
return {x_chips = amount, x_mult = amount, colour = G.C.PURPLE, card = card}, true
|
||||
return {x_mult = amount, colour = G.C.PURPLE, card = card}, true
|
||||
end
|
||||
end,
|
||||
}
|
||||
|
|
@ -482,6 +482,7 @@ if Cryptid then
|
|||
end
|
||||
|
||||
local operator = Cryptid and "^" or "X"
|
||||
local operator_prefix = Cryptid and "{X:dark_edition,C:mult}" or "{X:mult,C:white}"
|
||||
|
||||
SMODS.Joker {
|
||||
key = "betmma",
|
||||
|
|
@ -489,12 +490,12 @@ SMODS.Joker {
|
|||
loc_txt = {
|
||||
name = "Betmma",
|
||||
text = {
|
||||
"{X:dark_edition,C:chips}+" .. operator .. "#1#{C:chips} Chips{} for every",
|
||||
operator_prefix .. "+" .. operator .. "#1#{C:mult} Mult{} for every",
|
||||
"{C:attention}unique Voucher redeemed",
|
||||
"{C:inactive}(Currently {X:dark_edition,C:chips}" .. operator .. "#2#{C:inactive})",
|
||||
"{C:inactive}(Currently " .. operator_prefix .. operator .. "#2#{C:inactive})",
|
||||
},
|
||||
},
|
||||
config = {extra = {tet = Cryptid and 0.1 or 0.25}},
|
||||
config = {extra = {tet = Cryptid and 0.25 or 0.5}},
|
||||
pos = {x = 0, y = 0},
|
||||
soul_pos = {x = 1, y = 0},
|
||||
blueprint_compat = true,
|
||||
|
|
@ -517,7 +518,7 @@ SMODS.Joker {
|
|||
card = card,
|
||||
colour = G.C.jane_RGB,
|
||||
message = operator .. number_format(num),
|
||||
[Cryptid and "e_chips" or "x_chips"] = num,
|
||||
[Cryptid and "e_mult" or "x_mult"] = num,
|
||||
}, true
|
||||
end
|
||||
end,
|
||||
|
|
@ -557,7 +558,7 @@ SMODS.Joker {
|
|||
if context.other_card and context.other_card:get_id() == 7 and scj(context) then
|
||||
grand_dad(card)
|
||||
local palette = granddad_palette[math.random(#granddad_palette)]
|
||||
local rnd = pseudorandom(pseudoseed("granddad"), 1, Cryptid and 7 or 5)
|
||||
local rnd = pseudorandom(pseudoseed("granddad"), 1, Cryptid and 5 or 4)
|
||||
|
||||
if rnd == 1 then
|
||||
return {
|
||||
|
|
@ -582,25 +583,11 @@ SMODS.Joker {
|
|||
}, true
|
||||
elseif rnd == 4 then
|
||||
return {
|
||||
message = Cryptid and "x7" or "x1.77",
|
||||
x_chips = Cryptid and 7 or 1.77,
|
||||
colour = palette,
|
||||
card = card,
|
||||
}, true
|
||||
elseif rnd == 5 then
|
||||
return {
|
||||
message = Cryptid and "x7 Mult" or "x1.77 Mult",
|
||||
message = Cryptid and "X7 Mult" or "X1.77 Mult",
|
||||
x_mult = Cryptid and 7 or 1.77,
|
||||
colour = palette,
|
||||
card = card,
|
||||
}, true
|
||||
elseif rnd == 6 then
|
||||
return {
|
||||
message = "^1.77",
|
||||
e_chips = 1.77,
|
||||
colour = palette,
|
||||
card = card,
|
||||
}, true
|
||||
else
|
||||
return {
|
||||
message = "^1.77 Mult",
|
||||
|
|
@ -620,10 +607,10 @@ SMODS.Joker {
|
|||
loc_txt = {
|
||||
name = "Peppino Spaghetti",
|
||||
text = {
|
||||
"{X:dark_edition,C:red}" .. operator .. "2^x{C:red} Mult{} for every",
|
||||
operator_prefix .. operator .. "2^x{C:red} Mult{} for every",
|
||||
"{C:attention}food or Peppino Joker",
|
||||
"in your possession",
|
||||
"{C:inactive}(Currently {X:dark_edition,C:red}" .. operator .. "#1#{C:red} Mult{C:inactive})",
|
||||
"{C:inactive}(Currently " .. operator_prefix .. operator .. "#1#{C:red} Mult{C:inactive})",
|
||||
},
|
||||
},
|
||||
pos = {x = 0, y = 0},
|
||||
|
|
|
|||
|
|
@ -313,6 +313,7 @@ for _, v in ipairs({
|
|||
"back",
|
||||
"blind",
|
||||
"booster",
|
||||
"challenge",
|
||||
"edition",
|
||||
"joker",
|
||||
"slugcat",
|
||||
|
|
|
|||
|
|
@ -469,7 +469,7 @@ function Card:set_debuff(should_debuff)
|
|||
end
|
||||
|
||||
local function attunement()
|
||||
return (G.GAME or {}).weeckweeck and 2 or (Cryptid and 1.001 or 1.2)
|
||||
return (G.GAME or {}).weeckweeck and 2 or (Cryptid and 1.002 or 1.2)
|
||||
end
|
||||
|
||||
SMODS.Joker {
|
||||
|
|
@ -480,8 +480,8 @@ SMODS.Joker {
|
|||
text = Cryptid and {
|
||||
"{C:spectral}Analog{}, {C:spectral}Ankh{}, {C:spectral}Gateway{}, and",
|
||||
"{C:spectral,s:0.95}Summoning {s:0.95}will {C:attention,s:0.95}not destroy Jokers",
|
||||
"{C:jane_RGB}#2#{}#3#{X:black,C:jane_RGB,s:1.5}#4#{C:spectral}#5#{C:chips}#6#{}#7#{C:mult}#8#",
|
||||
"{C:inactive,s:1.25}#9#{C:attention,s:1.25}#10#{C:inactive,s:1.25}#11#{C:inactive}#12#",
|
||||
"{C:jane_RGB}#2#{}#3#{X:black,C:jane_RGB,s:1.5}#4#{C:spectral}#5#{C:mult}#6#",
|
||||
"{C:inactive,s:1.25}#7#{C:attention,s:1.25}#8#{C:inactive,s:1.25}#9#{C:inactive}#10#",
|
||||
} or {
|
||||
"{C:spectral}Ankh {}will {C:attention}not destroy Jokers",
|
||||
"{C:jane_RGB}#2#{}#3#{C:dark_edition}#4#{C:spectral}#5#",
|
||||
|
|
@ -518,9 +518,7 @@ SMODS.Joker {
|
|||
attuned and "" or "after using ",
|
||||
attuned and "^^" .. attunement() or max_karma,
|
||||
attuned and "" or " Gateways",
|
||||
attuned and " Chips " or "",
|
||||
attuned and "& " or "",
|
||||
attuned and "Mult" or "",
|
||||
attuned and " Mult" or "",
|
||||
attuned and "" or "[",
|
||||
attuned and "" or karma,
|
||||
attuned and "" or " / " .. max_karma .. "]",
|
||||
|
|
@ -528,7 +526,7 @@ SMODS.Joker {
|
|||
} or {
|
||||
attuned and " (Attuned)" or "",
|
||||
attuned and "" or "Attune ",
|
||||
attuned and "Fires on cards with " or "after using ",
|
||||
attuned and "Boosts cards with " or "after using ",
|
||||
attuned and "editions" or max_karma,
|
||||
attuned and "" or " Ankh or Soul Cards",
|
||||
attuned and "" or "[",
|
||||
|
|
@ -609,9 +607,8 @@ SMODS.Joker {
|
|||
e_polychrome = {x_mult = 2.5},
|
||||
e_jane_polygloss = {
|
||||
mult = 10,
|
||||
chips = 10,
|
||||
x_mult = 2,
|
||||
x_chips = 2,
|
||||
chips = 100,
|
||||
p_dollars = 10,
|
||||
},
|
||||
e_jane_moire = {
|
||||
|
|
|
|||
|
|
@ -5,7 +5,7 @@ end
|
|||
local required = 2
|
||||
|
||||
local function get_uses()
|
||||
G.GAME.joker_in_a_tarot = G.GAME.joker_in_a_tarot or required
|
||||
G.GAME.joker_in_a_tarot = G.GAME.joker_in_a_tarot or 0
|
||||
return G.GAME.joker_in_a_tarot
|
||||
end
|
||||
|
||||
|
|
|
|||
Loading…
Add table
Reference in a new issue