Add tons of new content (not jokers)

This commit is contained in:
Emik 2025-04-03 00:36:54 +02:00
parent d0a9cdfe72
commit bafb18d0c9
Signed by untrusted user who does not match committer: emik
GPG key ID: 09CDFF9E5703688D
11 changed files with 648 additions and 170 deletions

Binary file not shown.

Before

Width:  |  Height:  |  Size: 30 KiB

Binary file not shown.

Binary file not shown.

Binary file not shown.

View file

@ -12,5 +12,5 @@
"Bakery (>=0.1.26~*)"
],
"conflicts": ["Jen"],
"version": "0.3.3"
"version": "1.0.0"
}

View file

@ -35,15 +35,93 @@ SMODS.Back {
end
}
local function add_rain_world_joker()
if not G.jokers then
return true
end
local candidates = {
"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 unobtained = {}
for _, v in pairs(candidates) 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 candidates, 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()
G.jokers:emplace(card)
return true
end
SMODS.Back {
key = 'obsidian',
atlas = 'janedecks',
key = "karma",
atlas = "janedecks",
pos = {x = 3, y = 0},
loc_txt = {
name = "Karma Deck",
text = {
"Start with a {C:legendary}Rain World Joker",
"Create another when",
"{C:attention}Boss Blind {}is defeated"
}
},
apply = function(_)
G.E_MANAGER:add_event(Event({func = add_rain_world_joker}))
end,
trigger_effect = function(_, args)
if args.context == "eval" and G.GAME.last_blind and G.GAME.last_blind.boss then
add_rain_world_joker()
end
end,
}
SMODS.Back {
key = "mysterious",
atlas = "janedecks",
pos = {x = 1, y = 0},
loc_txt = {
name = "Mysterious Deck",
text = {
"Jokers, consumables, and",
"playing cards are {C:green,E:1}randomized",
"when they are added",
"to your possession",
}
},
apply = function(_)
G.GAME.mysterious = true
Jane.q(function()
save_run()
return true
end)
end
}
SMODS.Back {
key = "obsidian",
atlas = "janedecks",
pos = {x = 2, y = 1},
loc_txt = {
name = 'Obsidian Deck',
name = "Obsidian Deck",
text = {
'{C:attention}Hidden{} cards {C:inactive}(ex. {C:spectral}The Soul{C:inactive})',
'can {C:attention}appear normally{}',
"{C:attention}Hidden{} cards {C:inactive}(ex. {C:spectral}The Soul{C:inactive})",
"can {C:attention}appear normally{}",
}
},
apply = function(_)
@ -51,6 +129,22 @@ SMODS.Back {
end
}
local function apply_orrery()
Jane.q(function()
local orrery = {}
G.GAME.orrery = orrery
for k, v in pairs(G.GAME.hands) do
v.mult = 1
v.chips = 150
orrery[k] = {chips = v.chips, level = v.level, mult = v.mult}
end
save_run()
return true
end)
end
SMODS.Back {
key = "orrery",
atlas = "janedecks",
@ -63,20 +157,7 @@ SMODS.Back {
}
},
apply = function(_)
Jane.q(function()
local orrery = {}
G.GAME.orrery = orrery
for k, v in pairs(G.GAME.hands) do
v.mult = 1
v.chips = 150
orrery[k] = {chips = v.chips, level = v.level, mult = v.mult}
end
save_run()
return true
end
)
apply_orrery()
end
}
@ -96,6 +177,40 @@ SMODS.Back {
end
}
local function apply_weeck()
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
SMODS.Back {
key = "weeck",
atlas = "janedecks",
@ -110,38 +225,47 @@ SMODS.Back {
}
},
apply = function(_)
G.GAME.weeck = true
apply_weeck()
end
}
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
SMODS.Back {
key = "omega",
atlas = "janedecks",
pos = {x = 5, y = 1},
loc_txt = {
name = "Omega Deck",
text = {
"Applies the {C:legendary,E:1}upsides",
"of {C:attention}every Jane deck",
}
},
apply = function(_)
apply_orrery()
G.E_MANAGER:add_event(Event({func = function()
local wee = create_card("Joker", G.jokers, nil, nil, nil, nil, "j_wee", "weeck")
G.jokers:emplace(wee)
add_rain_world_joker()
G.GAME.mysterious = true
G.GAME.tortoise = true
G.GAME.obsidian = true
save_run()
return true
end)
end
end}))
end,
trigger_effect = function(_, args)
G.GAME.mysterious = nil
if args.context == "eval" and G.GAME.last_blind and G.GAME.last_blind.boss then
add_rain_world_joker()
Jane.q(function()
Jane.empowered()
return true
end)
end
end,
}
local orig_ante = ease_ante
@ -173,3 +297,213 @@ function ease_ante(mod)
orig_ante(mod)
end
local orig_emplace = CardArea.emplace
function CardArea:emplace(card, location, stay_flipped)
local function randomize(targets, noanim)
local function go(i)
return function()
local c = targets[i]
c:set_base(pseudorandom_element(G.P_CARDS))
if pseudorandom(pseudoseed("chancetime")) > 1 / (#G.P_CENTER_POOLS["Enhanced"]+1) then
c:set_ability(pseudorandom_element(G.P_CENTER_POOLS["Enhanced"], pseudoseed("spectral_chance")))
else
c:set_ability(G.P_CENTERS["c_base"])
end
local edition_rate = 2
c:set_edition(poll_edition("standard_edition" .. G.GAME.round_resets.ante, edition_rate, true))
local seal_rate = 10
local seal_poll = pseudorandom(pseudoseed("stdseal" .. G.GAME.round_resets.ante))
if seal_poll > 1 - 0.02 * seal_rate then
local seal_type = pseudorandom(pseudoseed("stdsealtype" .. G.GAME.round_resets.ante))
local seal_list = {}
for k, _ in pairs(G.P_SEALS) do
table.insert(seal_list, k)
end
seal_type = math.floor(seal_type * #seal_list)
c:set_seal(seal_list[seal_type])
else
c:set_seal()
end
if noanim then
c:flip()
play_sound("card3", 0.85 + (i - 0.999) / (#G.hand.cards - 0.998) * 0.3, 0.6)
end
c:juice_up(0.3, 0.3)
return true
end
end
if #targets <= 0 then
return
end
if noanim then
for i = 1, #targets do
go(i)
end
else
for i = 1, #targets do
G.E_MANAGER:add_event(Event({
trigger = "after",
delay = 0.15,
func = function()
targets[i]:flip()
play_sound("card1", 1.15 - (i - 0.999) / (#G.hand.cards - 0.998) * 0.3)
targets[i]:juice_up(0.3, 0.3)
return true
end
}))
end
delay(0.2)
for i = 1, #targets do
G.E_MANAGER:add_event(Event({
trigger = "after",
delay = 0.1,
func = go(i)
}))
end
end
end
local function rnd(seed, excluded_flags, pool, ignore_pooling, attempts)
excluded_flags = excluded_flags or {}
local selection = "n/a"
local passes = 0
local tries = attempts or 500
local pooling = false
if (SMODS.Mods.jane or {}).can_load and (G.GAME or {}).obsidian then
for k, v in ipairs(excluded_flags) do
if v == "hidden" then
table.remove(excluded_flags, k)
break
end
end
end
while true do
passes = 0
pooling = false
tries = tries - 1
selection = G.P_CENTERS[pseudorandom_element(pool or G.P_CENTER_POOLS.Consumeables, pseudoseed(seed or "jane_rnd_mysterious")).key]
if ignore_pooling then
pooling = true
else
if selection.in_pool and selection:in_pool() then
pooling = true
elseif not selection.in_pool then
pooling = true
end
end
for _, v in pairs(excluded_flags) do
if not selection[v] then
passes = passes + 1
end
end
if (pooling and passes >= #excluded_flags) or tries <= 0 then
return selection
end
end
end
if G.jokers and
G.hand and
G.deck and
G.consumeables and
(self == G.jokers or self == G.hand or self == G.deck or self == G.consumeables) and
G.GAME.mysterious and card.ability and not
card.ability.mysterious_created and not
card.created_from_split then
card.ability.mysterious_created = true
local cen = card.gc and card:gc()
if cen then
if self == G.jokers then
Jane.q(function()
if card then
if card.added_to_deck then
card:remove_from_deck()
card.added_to_deck = nil
end
card:flip()
card:juice_up(0.3, 0.3)
play_sound("card1", 1, 0.6)
end
return true
end, 0.75)
delay(0.75)
Jane.q(function()
if card then
card:flip()
card:juice_up(0.3, 0.3)
play_sound("card3", 1, 0.6)
card:set_ability(rnd("mysterious_deck_joker", {"no_mysterious"}, G.P_CENTER_POOLS.Joker))
if not card.added_to_deck then
card:add_to_deck()
end
end
return true
end, 0.75)
elseif self == G.consumeables then
Jane.q(function()
if card then
if card.added_to_deck then
card:remove_from_deck()
card.added_to_deck = nil
end
card:flip()
card:juice_up(0.3, 0.3)
play_sound("card1", 1, 0.6)
end
return true
end, 0.75)
delay(0.75)
Jane.q(function()
if card then
card:flip()
card:juice_up(0.3, 0.3)
play_sound("card3", 1, 0.6)
card:set_ability(rnd("mysterious_deck_consumable", cen.hidden and {} or {"hidden"}, G.P_CENTER_POOLS[cen.set]))
if not card.added_to_deck then
card:add_to_deck()
end
end
return true
end, 0.75)
elseif (card.base or {}).value or (card.base or {}).suit then
randomize({card})
end
end
Jane.q(function()
if card and self then
orig_emplace(self, card, location, stay_flipped)
end
return true
end)
else
orig_emplace(self, card, location, stay_flipped)
end
end

View file

@ -24,12 +24,26 @@ for i = 1, 2 do
loc_vars = function(_, _, card)
return {vars = {card.ability.choose, card.ability.extra}}
end,
ease_background_colour = function(_)
ease_background_colour_blind(G.STATES.STANDARD_PACK)
create_card = function(_, _, _)
local edition = poll_edition("standard_edition" .. G.GAME.round_resets.ante, 2, true)
local seal = SMODS.poll_seal({mod = 10})
return {
set = (pseudorandom(pseudoseed("stdset" .. G.GAME.round_resets.ante)) > 0.6) and "Enhanced" or "Base",
edition = edition,
seal = seal,
area = G.pack_cards,
skip_materialize = true,
soulable = true,
key_append = "sta"
}
end,
create_UIBox = function(_)
return create_UIBox_standard_pack()
end,
ease_background_colour = function(_)
ease_background_colour_blind(G.STATES.STANDARD_PACK)
end,
particles = function(_)
G.booster_pack_sparkles = Particles(1, 1, 0,0, {
timer = 0.015,
@ -46,20 +60,6 @@ for i = 1, 2 do
G.booster_pack_sparkles.fade_alpha = 1
G.booster_pack_sparkles:fade(1, 0)
end,
create_card = function(_, _, _)
local edition = poll_edition("standard_edition"..G.GAME.round_resets.ante, 2, true)
local seal = SMODS.poll_seal({mod = 10})
return {
set = (pseudorandom(pseudoseed("stdset"..G.GAME.round_resets.ante)) > 0.6) and "Enhanced" or "Base",
edition = edition,
seal = seal,
area = G.pack_cards,
skip_materialize = true,
soulable = true,
key_append = "sta"
}
end,
}
end
@ -83,28 +83,6 @@ for i = 1, 2 do
loc_vars = function(_, _, card)
return {vars = {card.ability.choose, card.ability.extra}}
end,
ease_background_colour = function(_)
ease_background_colour_blind(G.STATES.TAROT_PACK)
end,
create_UIBox = function(_)
return create_UIBox_arcana_pack()
end,
particles = function(_)
G.booster_pack_sparkles = Particles(1, 1, 0,0, {
timer = 0.015,
scale = 0.2,
initialize = true,
lifespan = 1,
speed = 1.1,
padding = -1,
attach = G.ROOM_ATTACH,
colours = {G.C.WHITE, lighten(G.C.PURPLE, 0.4), lighten(G.C.PURPLE, 0.2), lighten(G.C.GOLD, 0.2)},
fill = true
})
G.booster_pack_sparkles.fade_alpha = 1
G.booster_pack_sparkles:fade(1, 0)
end,
create_card = function(_, _, _)
if G.GAME.used_vouchers.v_omen_globe and pseudorandom("omen_globe") > 0.8 then
return {
@ -123,7 +101,29 @@ for i = 1, 2 do
area = G.pack_cards,
skip_materialize = true,
}
end
end,
create_UIBox = function(_)
return create_UIBox_arcana_pack()
end,
ease_background_colour = function(_)
ease_background_colour_blind(G.STATES.TAROT_PACK)
end,
particles = function(_)
G.booster_pack_sparkles = Particles(1, 1, 0,0, {
timer = 0.015,
scale = 0.2,
initialize = true,
lifespan = 1,
speed = 1.1,
padding = -1,
attach = G.ROOM_ATTACH,
colours = {G.C.WHITE, lighten(G.C.PURPLE, 0.4), lighten(G.C.PURPLE, 0.2), lighten(G.C.GOLD, 0.2)},
fill = true
})
G.booster_pack_sparkles.fade_alpha = 1
G.booster_pack_sparkles:fade(1, 0)
end,
}
end
@ -146,36 +146,6 @@ for i = 1, 2 do
loc_vars = function(_, _, card)
return {vars = {card.ability.choose, card.ability.extra}}
end,
ease_background_colour = function(_) ease_background_colour_blind(G.STATES.PLANET_PACK) end,
create_UIBox = function(_) return create_UIBox_celestial_pack() end,
set_ability = function (_, card, _, delay_sprites)
card.ability = card.ability or {}
card.ability.set = "Booster"
card.ability.name = "Mini Celestial Pack"
end,
particles = function(_)
G.booster_pack_stars = Particles(1, 1, 0,0, {
fill = true,
scale = 0.1,
speed = 0.1,
timer = 0.07,
padding = -4,
lifespan = 15,
initialize = true,
attach = G.ROOM_ATTACH,
colours = {G.C.WHITE, HEX("a7d6e0"), HEX("fddca0")},
})
G.booster_pack_meteors = Particles(1, 1, 0,0, {
speed = 4,
timer = 2,
fill = true,
scale = 0.05,
lifespan = 1.5,
attach = G.ROOM_ATTACH,
colours = {G.C.WHITE},
})
end,
create_card = function(_, _, index)
if not G.GAME.used_vouchers.v_telescope or index ~= 1 then
return {
@ -212,7 +182,41 @@ for i = 1, 2 do
area = G.pack_cards,
skip_materialize = true,
}
end
end,
create_UIBox = function(_)
return create_UIBox_celestial_pack()
end,
ease_background_colour = function(_)
ease_background_colour_blind(G.STATES.PLANET_PACK)
end,
particles = function(_)
G.booster_pack_stars = Particles(1, 1, 0,0, {
fill = true,
scale = 0.1,
speed = 0.1,
timer = 0.07,
padding = -4,
lifespan = 15,
initialize = true,
attach = G.ROOM_ATTACH,
colours = {G.C.WHITE, HEX("a7d6e0"), HEX("fddca0")},
})
G.booster_pack_meteors = Particles(1, 1, 0,0, {
speed = 4,
timer = 2,
fill = true,
scale = 0.05,
lifespan = 1.5,
attach = G.ROOM_ATTACH,
colours = {G.C.WHITE},
})
end,
set_ability = function (_, card, _, _)
card.ability = card.ability or {}
card.ability.set = "Booster"
card.ability.name = "Mini Celestial Pack"
end,
}
end
@ -236,12 +240,21 @@ for i = 1, 2 do
loc_vars = function(_, _, card)
return {vars = {card.ability.choose, card.ability.extra}}
end,
ease_background_colour = function(_)
ease_background_colour_blind(G.STATES.SPECTRAL_PACK)
create_card = function(_, _, _)
return {
soulable = true,
set = "Spectral",
key_append = "spe",
area = G.pack_cards,
skip_materialize = true,
}
end,
create_UIBox = function(_)
return create_UIBox_spectral_pack()
end,
ease_background_colour = function(_)
ease_background_colour_blind(G.STATES.SPECTRAL_PACK)
end,
particles = function(_)
G.booster_pack_sparkles = Particles(1, 1, 0,0, {
scale = 0.1,
@ -258,14 +271,115 @@ for i = 1, 2 do
G.booster_pack_sparkles.fade_alpha = 1
G.booster_pack_sparkles:fade(1, 0)
end,
create_card = function(_, _, _)
return {
soulable = true,
set = "Spectral",
key_append = "spe",
area = G.pack_cards,
skip_materialize = true,
}
end
if Cryptid then
SMODS.Booster {
atlas = "janebooster",
key = "minicode",
loc_txt = {
name = "Mini Code Pack",
text = {
"Choose {C:attention}#1#{} of up to",
"{C:attention}#2# {C:green}Code{} cards to",
"be used immediately",
}
},
pos = {x = 6, y = 2},
config = {extra = 2, choose = 1},
cost = 2,
weight = 0.24,
create_card = function(_, _)
return create_card("Code", G.pack_cards, nil, nil, true, true, nil, "cry_program_3")
end,
ease_background_colour = function(_)
ease_colour(G.C.DYN_UI.MAIN, G.C.SET.Code)
ease_background_colour({new_colour = G.C.SET.Code, special_colour = G.C.BLACK, contrast = 2})
end,
loc_vars = function(self, _, card)
return {
vars = {
card and card.ability.choose or self.config.choose,
card and card.ability.extra or self.config.extra,
},
}
end,
cry_digital_hallucinations = {
colour = HEX("14b341"),
loc_key = "cry_plus_code",
create = function()
local ccard = create_card("Code", G.consumeables, nil, nil, nil, nil, nil, "diha")
ccard:set_edition({negative = true}, true)
ccard:add_to_deck()
G.consumeables:emplace(ccard)
end,
},
}
end
for i = 1, 2 do
SMODS.Booster{
key = "minitoken" .. i,
atlas = "janebooster",
loc_txt = {
name = "Mini Token Pack",
text = {
"Choose {C:attention}#1#{} of up to",
"{C:attention}#2# Token {}cards to",
"be used immediately",
}
},
pos = {x = i - 1, y = 5},
config = {extra = 2, choose = 1},
cost = 2,
weight = 0.2,
loc_vars = function(_, _, card)
return {vars = {card.ability.choose, card.ability.extra}}
end,
create_card = function(_, _, _)
return create_card("jane_tokens", G.pack_cards, nil, nil, true, true, nil, "jane_tokens" .. i)
end,
create_UIBox = function(_)
local size = SMODS.OPENED_BOOSTER.ability.extra
G.pack_cards = CardArea(
G.ROOM.T.x + 9 + G.hand.T.x, G.hand.T.y,
math.max(1, math.min(size, 5)) * G.CARD_W * 1.1,
1.05 * G.CARD_H,
{card_limit = size, highlight_limit = 1, type = "consumeable"}
)
local t = {n = G.UIT.ROOT, config = {align = "tm", r = 0.15, colour = G.C.CLEAR, padding = 0.15}, nodes = {
{n = G.UIT.R, config = {align = "cl", colour = G.C.CLEAR, r = 0.15, padding = 0.1, minh = 2, shadow = true}, nodes = {
{n = G.UIT.R, config = {align = "cm"}, nodes = {
{n = G.UIT.C, config = {align = "cm", padding = 0.1}, nodes = {
{n = G.UIT.C, config = {align = "cm", r = 0.2, colour = G.C.CLEAR, shadow = true}, nodes = {
{n = G.UIT.O, config = {object = G.pack_cards}}}}}}}},
{n = G.UIT.R, config = {align = "cm"}, nodes = {}},
{n = G.UIT.R, config = {align = "tm"}, nodes = {
{n = G.UIT.C,config = {align = "tm", padding = 0.05, minw = 2.4}, nodes = {}},
{n = G.UIT.C,config = {align = "tm", padding = 0.05}, nodes = {
UIBox_dyn_container({
{n = G.UIT.C, config = {align = "cm", padding = 0.05, minw = 4}, nodes = {
{n = G.UIT.R,config = {align = "bm", padding = 0.05}, nodes = {
{n = G.UIT.O, config = {object = DynaText({string = {"Token Pack"}, colours = {G.C.WHITE},shadow = true, rotate = true, bump = true, spacing = 2, scale = 0.7, maxw = 4, pop_in = 0.5})}}}},
{n = G.UIT.R,config = {align = "bm", padding = 0.05}, nodes = {
{n = G.UIT.O, config = {object = DynaText({string = {localize("k_choose") .. " "}, colours = {G.C.WHITE},shadow = true, rotate = true, bump = true, spacing = 2, scale = 0.5, pop_in = 0.7})}},
{n = G.UIT.O, config = {object = DynaText({string = {{ref_table = G.GAME, ref_value = "pack_choices"}}, colours = {G.C.WHITE},shadow = true, rotate = true, bump = true, spacing = 2, scale = 0.5, pop_in = 0.7})}}}}}}
})}},
{n = G.UIT.C,config = {align = "tm", padding = 0.05, minw = 2.4}, nodes = {
{n = G.UIT.R,config = {minh = 0.2}, nodes = {}},
{n = G.UIT.R,config = {align = "tm",padding = 0.2, minh = 1.2, minw = 1.8, r = 0.15,colour = G.C.GREY, one_press = true, button = "skip_booster", hover = true,shadow = true, func = "can_skip_booster"}, nodes = {
{n = G.UIT.T, config = {text = localize("b_skip"), scale = 0.5, colour = G.C.WHITE, shadow = true, focus_args = {button = "y", orientation = "bm"}, func = "set_button_pip"}}}}}}}}}}}}
return t
end,
ease_background_colour = function(_)
ease_background_colour{new_colour = HEX(i == 1 and "F0C197" or "FD5F55"), special_colour = HEX("000000"), contrast = 5}
end,
in_pool = function (_, _)
return G.GAME.used_vouchers.v_jane_token_voucher
end,
}
end

View file

@ -11,6 +11,10 @@ for i = 1, 6 do
SMODS.Sound({key = "grand" .. i, path = "grand_dad" .. i .. ".ogg"})
end
SMODS.Sound({key = "corrupt_milestone", path = "corrupt_milestone.ogg"})
SMODS.Sound({key = "corrupt_untick", path = "corrupt_untick.ogg"})
SMODS.Sound({key = "corrupt_tick", path = "corrupt_tick.ogg"})
local exotic = Cryptid and "cry_exotic" or 4
local food = {
@ -203,6 +207,7 @@ function Jane.update_honey()
end
mergeable[i].ability.extra.level = tostring(tonumber(mergeable[i].ability.extra.level) + 1)
play_sound("jane_corrupt_milestone", 0.9 ^ (tonumber(mergeable[i].ability.extra.level) - 2))
::continue::
end
end
@ -292,7 +297,7 @@ function SMODS.poll_rarity(_pool_key, _rand_key)
local max = 0
for _, v in pairs(SMODS.find_card("j_jane_honey")) do
max = math.max(max, v.ability.extra.level)
max = v.debuff and max or math.max(max, v.ability.extra.level)
end
local rarity = orig_rarity(_pool_key, _rand_key)
@ -332,6 +337,7 @@ function Jane.oxy(card, removed)
if destroyed_steel > 0 then
extra.progress = extra.progress + destroyed_steel
play_sound("jane_corrupt_tick")
card_eval_status_text(
card,
@ -411,6 +417,7 @@ SMODS.Joker {
context.individual and not
context.repetition and not
context.retrigger_joker then
play_sound("jane_corrupt_untick")
extra.progress = extra.progress - 1
card_eval_status_text(
@ -446,6 +453,7 @@ SMODS.Joker {
card:flip()
card:juice_up(1, 1)
play_sound("card1")
play_sound("jane_corrupt_milestone")
extra.is_corrupted = not extra.is_corrupted
extra.is_corrupting = nil
return true
@ -522,7 +530,7 @@ SMODS.Joker {
soul_pos = {x = 1, y = 0},
atlas = "jane7granddad",
blueprint_compat = true,
cost = Cryptid and 50 or 8,
cost = Cryptid and 49 or 7,
rarity = Cryptid and exotic or 3,
loc_vars = function(_, _, center)
return {vars = {center.ability.shopslots}}
@ -546,15 +554,15 @@ SMODS.Joker {
if rnd == 1 then
return {
message = "+777",
chips = 777,
message = Cryptid and "+777" or "+77",
chips = Cryptid and 777 or 77,
colour = palette,
card = card
}, true
elseif rnd == 2 then
return {
message = "+777 Mult",
mult = 777,
message = Cryptid and "+777 Mult" or "+77 Mult",
mult = Cryptid and 777 or 77,
colour = palette,
card = card
}, true
@ -567,15 +575,15 @@ SMODS.Joker {
}, true
elseif rnd == 4 then
return {
message = "x7",
x_chips = 7,
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 = "x7 Mult",
x_mult = 7,
message = Cryptid and "x7 Mult" or "x1.77 Mult",
x_mult = Cryptid and 7 or 1.77,
colour = palette,
card = card
}, true

View file

@ -99,7 +99,7 @@ SMODS.Joker {
rarity = 4,
}
local hunter = {7, 5, 3, 2, 1}
local hunter = {5, 4, 3, 2, 1}
SMODS.Joker {
key = "hunter",

View file

@ -227,7 +227,7 @@ SMODS.Consumable {
config = {extra = {spectrals = 2}},
pos = {x = 2, y = 4},
cost = 4,
loc_vars = function(self, info_queue, center)
loc_vars = function(_, _, center)
return {vars = {math.ceil(center.ability.extra.spectrals)}}
end,
can_use = Jane.can_use,
@ -249,8 +249,8 @@ SMODS.Consumable {
name = "Shadows",
text = {
"Create {C:attention}#1#{} {C:green}random {C:dark_edition}Negative",
"{C:attention}Perishable {C:attention}Jokers{}, set",
"{C:money}sell value{} of {C:attention}all Jokers{} to {C:money}$0",
"{C:attention}Perishable {C:attention}Jokers{}, set {C:money}sell",
"{C:money}value {}of {C:attention}all Jokers {}to {C:money}$0",
}
},
config = {extra = {shadows = 2}},
@ -308,25 +308,18 @@ SMODS.Consumable {
SMODS.Consumable {
key = "reverse_hanged_man",
atlas = "janertarots",
key = "rift",
atlas = "janeacc",
set = "Spectral",
loc_txt = {
name = "Zen",
name = "Rift",
text = {
"{C:attention}Reset{} your deck to",
"a {C:attention}standard 52-card deck"
"{C:attention}Reset{} your deck to a",
"{C:attention}standard 52-card deck"
}
},
config = {extra = {destruction = 0.5}},
pos = {x = 7, y = 1},
cost = 15,
loc_vars = function(_, _, center)
return {vars = {
math.min(100, center.ability.extra.destruction * 100),
math.ceil(#(G.playing_cards or {}) * center.ability.extra.destruction)
}}
end,
pos = {x = 4, y = 4},
can_use = Jane.can_use,
use = function(_, _, _, _)
Jane.q(function()

View file

@ -15,7 +15,7 @@ SMODS.ConsumableType {
name = "Token"
},
shop_rate = 0,
collection_rows = {6, 6},
collection_rows = {5, 6},
primary_colour = G.C.CHIPS,
secondary_colour = G.C.VOUCHER,
}
@ -26,29 +26,58 @@ for _, v in pairs({
{"tag_meteor", "Meteor", 2, 0, 5},
{"tag_ethereal", "Ethereal", 3, 0, 5},
{"tag_buffoon", "Buffoon", 4, 0, 8},
{"tag_cry_console", "Console", 5, 0, 7},
{"tag_cry_loss", "Loss", 0, 1, 12},
{"tag_cry_bundle", "Bundle", 1, 1, 10},
{"tag_uncommon", "Uncommon", 2, 1, 3},
{"tag_rare", "Rare", 3, 1, 5},
{"tag_cry_epic", "Epic", 4, 1, 8},
{"tag_foil", "Foil", 1, 3, 3},
{"tag_holo", "Holographic", 2, 3, 4},
{"tag_polychrome", "Polychrome", 3, 3, 5},
{"tag_negative", "Negative", 4, 3, 10},
{"tag_investment", "Investment", 0, 3, 8},
{"tag_voucher", "Voucher", 4, 5, 5},
{"tag_handy", "Handy", 1, 5, 8},
{"tag_garbage", "Garbage", 0, 5, 6},
{"tag_coupon", "Coupon", 4, 4, 10},
{"tag_juggle", "Juggle", 2, 5, 2},
{"tag_d_six", "Dice", 0, 4, 2},
{"tag_top_up", "Top-up", 2, 4, 2},
{"tag_skip", "Speed", 4, 2, 7},
{"tag_economy", "Economy", 5, 2, 10},
{"tag_cry_gourmond", "Gourmond", 5, 1, 4},
{"tag_double", "Double", 0, 2, 6},
{"tag_cry_triple", "Triple", 1, 2, 8},
{"tag_cry_quadruple", "Quadruple", 2, 2, 10},
{"tag_cry_quintuple", "Quintuple", 3, 2, 13},
{"tag_cry_memory", "Memory", 5, 4, 8}
{"tag_skip", "Speed", 4, 2, 7},
{"tag_economy", "Economy", 5, 2, 10},
{"tag_investment", "Investment", 0, 3, 8},
{"tag_foil", "Foil", 1, 3, 3},
{"tag_holo", "Holographic", 2, 3, 4},
{"tag_polychrome", "Polychrome", 3, 3, 5},
{"tag_negative", "Negative", 4, 3, 10},
{"tag_d_six", "Dice", 0, 4, 2},
{"tag_orbital", "Orbital", 1, 4, 6},
{"tag_top_up", "Top-up", 2, 4, 2},
{"tag_cry_bettertop_up", "Top-up+", 3, 4, 3},
{"tag_coupon", "Coupon", 4, 4, 10},
{"tag_cry_memory", "Memory", 5, 4, 8},
{"tag_garbage", "Garbage", 0, 5, 6},
{"tag_handy", "Handy", 1, 5, 8},
{"tag_juggle", "Juggle", 2, 5, 2},
{"tag_cry_schematic", "Schematic", 3, 5, 10},
{"tag_voucher", "Voucher", 4, 5, 5},
{"tag_cry_better_voucher", "Voucher+", 5, 5, 7},
{"tag_cry_gambler", "Gamble", 0, 6, 10},
{"tag_cry_cat", "Cat", 1, 6, 1},
{"tag_cry_mosaic", "Mosaic", 2, 6, 6},
{"tag_cry_fragile", "Fragile", 3, 6, 7},
{"tag_cry_astral", "Astral", 4, 6, 8},
{"tag_cry_m", "M", 5, 6, 8},
{"tag_cry_blur", "Blurred", 0, 7, 11},
{"tag_cry_oversat", "Oversaturated", 1, 7, 12},
{"tag_cry_glitched", "Glitched", 2, 7, 13},
{"tag_cry_gold", "Golden", 3, 7, 9},
{"tag_cry_booster", "Booster", 4, 7, 4},
{"tag_cry_scope", "Scope", 5, 7, 3},
{"tag_cry_banana", "Banana", 0, 8, 4},
}) do
if Cryptid or v[1]:sub(1, 7) ~= "tag_cry" then
SMODS.Consumable {