170 lines
4.8 KiB
Lua
170 lines
4.8 KiB
Lua
SMODS.Atlas {
|
|
px = 71,
|
|
py = 95,
|
|
key = "janedecks",
|
|
path = Jane.config.texture_pack .. "/b_jane_decks.png"
|
|
}
|
|
|
|
local eternal_text = Cryptid and "Absolute" or "Eternal"
|
|
|
|
SMODS.Back {
|
|
key = "nitro",
|
|
atlas = "janedecks",
|
|
pos = {x = 1, y = 1},
|
|
loc_txt = {
|
|
name = "Acceleration Deck",
|
|
text = {
|
|
Cryptid and "" or "{C:attention}Ante increases twice{} as strong",
|
|
"After defeating the {C:attention}Boss Blind{},",
|
|
Cryptid and "set {C:attention}ante {}to the {C:attention}next" or "",
|
|
Cryptid and "{C:attention}triangle number {}and create" or "",
|
|
Cryptid and "an {C:spectral,E:1}Empowered Tag" or "create a {C:dark_edition}Negative {C:spectral,E:1}Soul",
|
|
}
|
|
},
|
|
apply = function(_)
|
|
G.GAME.win_ante = Cryptid and G.GAME.win_ante * (G.GAME.win_ante + 1) / 2 or G.GAME.win_ante * 2 - 1
|
|
G.GAME.nitro = true
|
|
end,
|
|
trigger_effect = function(_, args)
|
|
if args.context == "eval" and G.GAME.last_blind and G.GAME.last_blind.boss then
|
|
Jane.q(function()
|
|
Jane.empowered()
|
|
return true
|
|
end)
|
|
end
|
|
end
|
|
}
|
|
|
|
SMODS.Back {
|
|
key = 'obsidian',
|
|
atlas = 'janedecks',
|
|
pos = {x = 2, y = 1},
|
|
loc_txt = {
|
|
name = 'Obsidian Deck',
|
|
text = {
|
|
'{C:attention}Hidden{} cards {C:inactive}(ex. {C:spectral}The Soul{C:inactive})',
|
|
'can {C:attention}appear normally{}',
|
|
}
|
|
},
|
|
apply = function(_)
|
|
G.GAME.obsidian = true
|
|
end
|
|
}
|
|
|
|
SMODS.Back {
|
|
key = "orrery",
|
|
atlas = "janedecks",
|
|
pos = {x = 0, y = 0},
|
|
loc_txt = {
|
|
name = "Orrery Deck",
|
|
text = {
|
|
"All hands start at",
|
|
"{X:chips,C:white}150{C:mult} X {X:red,C:white}1{} and",
|
|
"{C:cry_ascendant}equalised {}whenever",
|
|
"their {C:chips}Chips{}, {C:mult}Mult{},",
|
|
"or {C:planet}level {C:attention}change",
|
|
}
|
|
},
|
|
apply = function(_)
|
|
Jane.q(function()
|
|
G.GAME.orrery = {chips = 150, level = 1, mult = 1}
|
|
|
|
for _, v in pairs(G.GAME.hands) do
|
|
v.mult = G.GAME.orrery.mult
|
|
v.chips = G.GAME.orrery.chips
|
|
end
|
|
|
|
save_run()
|
|
return true
|
|
end
|
|
)
|
|
end
|
|
}
|
|
|
|
SMODS.Back {
|
|
key = "tortoise",
|
|
atlas = "janedecks",
|
|
pos = {x = 3, y = 1},
|
|
loc_txt = {
|
|
name = "Tortoise Deck",
|
|
text = {
|
|
"{C:attention}Ante increases",
|
|
"{C:attention}half{} as strong",
|
|
}
|
|
},
|
|
apply = function(_)
|
|
G.GAME.tortoise = true
|
|
end
|
|
}
|
|
|
|
SMODS.Back {
|
|
key = "weeck",
|
|
atlas = "janedecks",
|
|
pos = {x = 4, y = 1},
|
|
loc_txt = {
|
|
name = "Weeck",
|
|
text = {
|
|
"Start with an {C:purple,E:1}" .. eternal_text,
|
|
"{C:attention}Wee Joker {}and a deck",
|
|
"containing {C:attention}2 {C:purple,E:1}" .. eternal_text,
|
|
"{C:attention}2's {}of {C:attention}each suit",
|
|
}
|
|
},
|
|
apply = function(_)
|
|
G.GAME.weeck = true
|
|
|
|
Jane.q(function()
|
|
local new_card = create_card("Joker", G.jokers, nil, nil, nil, nil, "j_wee", "weeck")
|
|
new_card.ability.cry_absolute = true
|
|
new_card.ability.eternal = true
|
|
G.jokers:emplace(new_card)
|
|
local add = {}
|
|
|
|
for _, v in pairs(G.playing_cards) do
|
|
if v.base.id == 2 then
|
|
v.ability.cry_absolute = true
|
|
v.ability.eternal = true
|
|
add[#add + 1] = v
|
|
else
|
|
v:start_dissolve(nil, true)
|
|
end
|
|
end
|
|
|
|
for _, v in pairs(add) do
|
|
local dupe = copy_card(v)
|
|
dupe:start_materialize()
|
|
dupe:add_to_deck()
|
|
G.hand:emplace(dupe)
|
|
G.playing_card = (G.playing_card and G.playing_card + 1) or 1
|
|
table.insert(G.playing_cards, dupe)
|
|
end
|
|
|
|
save_run()
|
|
return true
|
|
end)
|
|
end
|
|
}
|
|
|
|
local orig_ante = ease_ante
|
|
|
|
---@diagnostic disable-next-line: lowercase-global
|
|
function ease_ante(mod)
|
|
local function next_triangle_number(x)
|
|
local n = (math.sqrt(8 * x + 1) - 1) / 2
|
|
return (n + 1) * (n + 2) / 2
|
|
end
|
|
|
|
if G.GAME.nitro then
|
|
mod = Cryptid and
|
|
(G.GAME.round_resets.ante < 0 and -G.GAME.round_resets.ante
|
|
or math.ceil(next_triangle_number(G.GAME.round_resets.ante) - G.GAME.round_resets.ante)) or
|
|
(mod > 0 and mod * 2 or mod)
|
|
end
|
|
|
|
if G.GAME.tortoise and mod > 0 then
|
|
local disp = tonumber(G.GAME.round_resets.ante_disp) + mod / 2
|
|
mod = mod / 2 + (disp == math.floor(disp) and 0.5 or 0)
|
|
end
|
|
|
|
orig_ante(mod)
|
|
end
|