Compare commits

..

No commits in common. "main" and "1.7.11" have entirely different histories.
main ... 1.7.11

19 changed files with 273 additions and 354 deletions

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

View file

@ -42,44 +42,12 @@ match_indent = true
target = "functions/misc_functions.lua" target = "functions/misc_functions.lua"
pattern = "local AC = G.SETTINGS.ambient_control" pattern = "local AC = G.SETTINGS.ambient_control"
position = "before" position = "before"
payload = '''if Jane and payload = '''if Jane and (type(G.ARGS.score_intensity.required_score) == "table" and G.ARGS.score_intensity.required_score:to_number() or G.ARGS.score_intensity.required_score) ~= 0 then
(type(G.ARGS.score_intensity.required_score) == "table" and
G.ARGS.score_intensity.required_score:to_number() or
G.ARGS.score_intensity.required_score) ~= 0 then
local break_infinity = ((Talisman or {}).config_file or {}).break_infinity local break_infinity = ((Talisman or {}).config_file or {}).break_infinity
local big = (break_infinity == "" or break_infinity == nil) and function (x) return x end or to_big local big = (break_infinity == "" or break_infinity == nil) and function (x) return x end or to_big
local base = Cryptid and 2 or G.ARGS.score_intensity.required_score local base = Cryptid and 2 or G.ARGS.score_intensity.required_score
local expo = Cryptid and G.ARGS.score_intensity.required_score or 2 local expo = Cryptid and G.ARGS.score_intensity.required_score or 2
local ratio = (G.ARGS.score_intensity.earned_score / (big(base) ^ big(expo))):to_number() Jane.sinister = (G.ARGS.score_intensity.earned_score / (big(base) ^ big(expo))):to_number() > 1
Jane.sinister = ratio > 1
G.ARGS.score_intensity.ambientSurreal4 =
(break_infinity and
SMODS.Mods.Amulet and
G.ARGS.score_intensity.earned_score >= Bakery_API.parse_hyper_e("e10#10##10000")) and 1 or 0
G.ARGS.score_intensity.ambientSurreal3 =
(G.ARGS.score_intensity.ambientSurreal4 == 0 and
number_format(G.ARGS.score_intensity.earned_score):find("#")) and 1 or 0
G.ARGS.score_intensity.ambientSurreal2 =
(G.ARGS.score_intensity.ambientSurreal3 == 0 and
G.ARGS.score_intensity.ambientSurreal4 == 0 and
(G.ARGS.score_intensity.earned_score /
(Cryptid and
big(G.ARGS.score_intensity.required_score) ^
big(G.ARGS.score_intensity.required_score) ^
big(G.ARGS.score_intensity.required_score) or
big(2) ^ big(G.ARGS.score_intensity.required_score)
)
):to_number() > 1
) and 1 or 0
G.ARGS.score_intensity.ambientSurreal1 =
(Jane.sinister and
G.ARGS.score_intensity.ambientSurreal2 == 0 and
G.ARGS.score_intensity.ambientSurreal3 == 0 and
G.ARGS.score_intensity.ambientSurreal4 == 0) and 1 or 0
end''' end'''
match_indent = true match_indent = true
@ -89,7 +57,7 @@ target = "functions/state_events.lua"
pattern = "for _, v in ipairs(SMODS.get_card_areas('playing_cards')) do" pattern = "for _, v in ipairs(SMODS.get_card_areas('playing_cards')) do"
position = "after" position = "after"
payload = '''if v == G.hand and not (G.GAME.blind and G.GAME.blind.name == "The Card" and not G.GAME.blind.disabled) and next(SMODS.find_card("j_jane_survivor")) then payload = '''if v == G.hand and not (G.GAME.blind and G.GAME.blind.name == "The Card" and not G.GAME.blind.disabled) and next(SMODS.find_card("j_jane_survivor")) then
if Jane.cry then if Cryptid then
for _, v in ipairs(G.hand.cards) do for _, v in ipairs(G.hand.cards) do
local area = {cards = {v}} local area = {cards = {v}}
SMODS.calculate_main_scoring({cardarea = area, full_hand = area.cards, scoring_hand = area.cards, scoring_name = text, poker_hands = poker_hands}, area.cards) SMODS.calculate_main_scoring({cardarea = area, full_hand = area.cards, scoring_hand = area.cards, scoring_name = text, poker_hands = poker_hands}, area.cards)
@ -203,8 +171,7 @@ self.jokers = CardArea(
CAI.joker_W+CAI.consumeable_W, CAI.joker_W+CAI.consumeable_W,
CAI.joker_H, CAI.joker_H,
{card_limit = (self.GAME.starting_params.joker_slots + {card_limit = (self.GAME.starting_params.joker_slots +
self.GAME.starting_params.consumable_slots - self.GAME.starting_params.consumable_slots - 1) *
(G.GAME.modifiers.jane_spacious_omega and 0 or 1)) *
(G.GAME.modifiers.alt_jane_spacious and 2 or 1), (G.GAME.modifiers.alt_jane_spacious and 2 or 1),
type = 'joker', type = 'joker',
highlight_limit = 1e100 highlight_limit = 1e100
@ -258,16 +225,3 @@ if G.GAME.modifiers.jane_spacious then
t = {G.jokers, G.vouchers} t = {G.jokers, G.vouchers}
end''' end'''
match_indent = true match_indent = true
[[patches]]
[patches.pattern]
target = "functions/misc_functions.lua"
pattern = "ambientOrgan1 = {volfunc = function(_prev_volume) return _prev_volume*(1 - dt) + dt*0.6*(G.SETTINGS.SOUND.music_volume + 100)/200*(G.ARGS.score_intensity.organ) end},"
position = "after"
payload = '''
jane_ambientSurreal1 = {volfunc = function(_prev_volume) return _prev_volume*(1 - dt) + dt*0.6*(G.SETTINGS.SOUND.music_volume + 80)/200*((G.ARGS.score_intensity.ambientSurreal1 or 0) * 1.4) end},
jane_ambientSurreal2 = {volfunc = function(_prev_volume) return _prev_volume*(1 - dt) + dt*0.6*(G.SETTINGS.SOUND.music_volume + 90)/200*((G.ARGS.score_intensity.ambientSurreal2 or 0) * 1.6) end},
jane_ambientSurreal3 = {volfunc = function(_prev_volume) return _prev_volume*(1 - dt) + dt*0.6*(G.SETTINGS.SOUND.music_volume + 100)/200*((G.ARGS.score_intensity.ambientSurreal3 or 0) * 1.8) end},
jane_ambientSurreal4 = {volfunc = function(_prev_volume) return _prev_volume*(1 - dt) + dt*0.6*(G.SETTINGS.SOUND.music_volume + 110)/200*((G.ARGS.score_intensity.ambientSurreal4 or 0) * 2) end},
'''
match_indent = true

View file

@ -13,10 +13,11 @@
"dependencies": [ "dependencies": [
"Steamodded (>=1.0.0~BETA-1606b)", "Steamodded (>=1.0.0~BETA-1606b)",
"Lovely (>=0.6)", "Lovely (>=0.6)",
"Bakery (>=3.2.0~*)" "Bakery (>=3.2.0~*)",
"Roland (>=2.8.0~*)"
], ],
"conflicts": [ "conflicts": [
"Jen" "Jen"
], ],
"version": "1.11.0" "version": "1.7.11"
} }

View file

@ -102,35 +102,35 @@ back {
loc_txt = { loc_txt = {
name = "Acceleration Deck", name = "Acceleration Deck",
text = { text = {
Jane.cry and "" or "{C:attention}Ante increases twice{} as strong", Cryptid and "" or "{C:attention}Ante increases twice{} as strong",
"After defeating the {C:attention}Boss Blind{},", "After defeating the {C:attention}Boss Blind{},",
Jane.cry and "set {C:attention}ante {}to the {C:attention}next" or "", Cryptid and "set {C:attention}ante {}to the {C:attention}next" or "",
Jane.cry and "{C:attention}triangle number {}and create" or "", Cryptid and "{C:attention}triangle number {}and create" or "",
Jane.cry and "an {C:spectral,E:1}Empowered Tag" or "create a {C:dark_edition}Negative {C:spectral,E:1}Soul", Cryptid and "an {C:spectral,E:1}Empowered Tag" or "create a {C:dark_edition}Negative {C:spectral,E:1}Soul",
}, },
}, },
alt_loc_txt = { alt_loc_txt = {
name = "Jolt Sleeve", name = "Jolt Sleeve",
text = { text = {
Jane.cry and "{C:attention}Ante number {}scales with {C:attention}square numbers" or "{C:attention}Ante increases twice{} as strong", Cryptid and "{C:attention}Ante number {}scales with {C:attention}square numbers" or "{C:attention}Ante increases twice{} as strong",
"After defeating the {C:attention}Small {}or {C:attention}Big Blind{},", "After defeating the {C:attention}Small {}or {C:attention}Big Blind{},",
Jane.cry and "create a {C:spectral,E:1}Empowered Tag" or "create a {C:dark_edition}Negative {C:spectral,E:1}Soul", Cryptid and "create a {C:spectral,E:1}Empowered Tag" or "create a {C:dark_edition}Negative {C:spectral,E:1}Soul",
}, },
}, },
loc_vars = function(_, info_queue, _) loc_vars = function(_, info_queue, _)
if info_queue then if info_queue then
info_queue[#info_queue + 1] = Jane.cry and G.P_TAGS.tag_cry_empowered or G.P_CENTERS.c_soul info_queue[#info_queue + 1] = Cryptid and G.P_TAGS.tag_cry_empowered or G.P_CENTERS.c_soul
end end
return {vars = {}} return {vars = {}}
end, end,
alt_apply = function(_) alt_apply = function(_)
G.GAME.win_ante = Jane.cry and G.GAME.win_ante * G.GAME.win_ante or G.GAME.win_ante * 4 - 1 G.GAME.win_ante = Cryptid and G.GAME.win_ante * G.GAME.win_ante or G.GAME.win_ante * 4 - 1
G.GAME.alt_nitro = true G.GAME.alt_nitro = true
G.GAME.nitro = true G.GAME.nitro = true
end, end,
apply = function(_) apply = function(_)
G.GAME.win_ante = Jane.cry and G.GAME.win_ante * (G.GAME.win_ante + 1) / 2 or G.GAME.win_ante * 2 - 1 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 G.GAME.nitro = true
end, end,
alt_calculate = function(_, _, context) alt_calculate = function(_, _, context)
@ -153,7 +153,7 @@ local rain_world_jokers = {
"j_jane_monk", "j_jane_monk",
"j_jane_survivor", "j_jane_survivor",
"j_jane_spearmaster", "j_jane_spearmaster",
"j_jane_gourmand", "j_jane_rivulet",
"j_jane_saint", "j_jane_saint",
} }
@ -212,7 +212,7 @@ back {
end, end,
} }
if Jane.cry then if Cryptid then
back { back {
key = "mysterious", key = "mysterious",
atlas = "janedecks", atlas = "janedecks",
@ -430,14 +430,14 @@ back {
name = "Orrery Deck", name = "Orrery Deck",
text = { text = {
"{C:attention}Hand stats {}are", "{C:attention}Hand stats {}are",
"always " .. (Jane.cry and "{C:cry_ascendant}" or "{C:attention}") .. "equalized", "always " .. (Cryptid and "{C:cry_ascendant}" or "{C:attention}") .. "equalized",
}, },
}, },
alt_loc_txt = { alt_loc_txt = {
name = "Ephemeris Sleeve", name = "Ephemeris Sleeve",
text = { text = {
"{C:blue}Hands{}, {C:red}discards{}, and {C:money}money", "{C:blue}Hands{}, {C:red}discards{}, and {C:money}money",
"are always " .. (Jane.cry and "{C:cry_ascendant}" or "{C:attention}") .. "equalized", "are always " .. (Cryptid and "{C:cry_ascendant}" or "{C:attention}") .. "equalized",
}, },
}, },
alt_apply = function(_) alt_apply = function(_)
@ -562,7 +562,7 @@ local function two(x)
end end
end end
local eternal_text = Jane.cry and "Absolute" or "Eternal" local eternal_text = Cryptid and "Absolute" or "Eternal"
back { back {
key = "weeck", key = "weeck",
@ -570,7 +570,7 @@ back {
pos = {x = 4, y = 1}, pos = {x = 4, y = 1},
loc_txt = { loc_txt = {
name = "Weeck", name = "Weeck",
text = Jane.cry and { text = Cryptid and {
"Start with an {C:purple,E:1}" .. eternal_text, "Start with an {C:purple,E:1}" .. eternal_text,
"{C:attention}Wee Joker {}and a deck", "{C:attention}Wee Joker {}and a deck",
"containing {C:attention}2 {C:purple,E:1}" .. eternal_text, "containing {C:attention}2 {C:purple,E:1}" .. eternal_text,
@ -631,7 +631,6 @@ back {
text = { text = {
"{C:attention}Joker {}and {C:attention}Consumable", "{C:attention}Joker {}and {C:attention}Consumable",
"slots are {C:attention}combined", "slots are {C:attention}combined",
"{C:attention}-1 {}Slot",
}, },
}, },
alt_loc_txt = { alt_loc_txt = {
@ -690,13 +689,12 @@ back {
apply_orrery() apply_orrery()
G.GAME.modifiers.jane_spacious = true G.GAME.modifiers.jane_spacious = true
G.GAME.used_vouchers.v_omen_globe = true G.GAME.used_vouchers.v_omen_globe = true
G.GAME.modifiers.jane_spacious_omega = true
G.GAME.starting_voucher_count = (G.GAME.starting_voucher_count or 0) + 1 G.GAME.starting_voucher_count = (G.GAME.starting_voucher_count or 0) + 1
Jane.q(function() Jane.q(function()
add_rain_world_joker()
local wee = create_card("Joker", G.jokers, nil, nil, nil, nil, "j_wee", "weeck") local wee = create_card("Joker", G.jokers, nil, nil, nil, nil, "j_wee", "weeck")
G.jokers:emplace(wee) G.jokers:emplace(wee)
add_rain_world_joker()
G.GAME.tortoise = true G.GAME.tortoise = true
G.GAME.obsidian = true G.GAME.obsidian = true
G.GAME.mysterious = true G.GAME.mysterious = true
@ -715,7 +713,6 @@ back {
end end
end, end,
calculate = function(_, _, context) calculate = function(_, _, context)
rebalance_orrery()
G.GAME.mysterious = nil G.GAME.mysterious = nil
if Jane.is_end_of_ante(context) then if Jane.is_end_of_ante(context) then
@ -757,7 +754,7 @@ function ease_ante(mod)
end end
if G.GAME.nitro then if G.GAME.nitro then
mod = Jane.cry and mod = Cryptid and
(G.GAME.round_resets.ante < 0 and -G.GAME.round_resets.ante or (G.GAME.round_resets.ante < 0 and -G.GAME.round_resets.ante or
math.ceil(next_number(G.GAME.round_resets.ante) - G.GAME.round_resets.ante)) or math.ceil(next_number(G.GAME.round_resets.ante) - G.GAME.round_resets.ante)) or
(mod > 0 and mod * 2 or mod) (mod > 0 and mod * 2 or mod)

View file

@ -36,9 +36,9 @@ SMODS.Blind {
atlas = "janeblinds", atlas = "janeblinds",
pos = {x = 0, y = 0}, pos = {x = 0, y = 0},
vars = {}, vars = {},
dollars = Jane.cry and 7 or 5, dollars = Cryptid and 7 or 5,
defeat = function(_) defeat = function(_)
if not Jane.cry then if not Cryptid then
offset_operator(2 - Jane.get_operator()) offset_operator(2 - Jane.get_operator())
elseif not G.GAME.blind.disabled then elseif not G.GAME.blind.disabled then
offset_operator(1) offset_operator(1)
@ -62,7 +62,7 @@ SMODS.Blind {
end, end,
} }
if Jane.cry then if Cryptid then
SMODS.Blind { SMODS.Blind {
loc_txt = { loc_txt = {
name = "The Insignia", name = "The Insignia",
@ -107,7 +107,7 @@ SMODS.Blind {
atlas = "janeblinds", atlas = "janeblinds",
pos = {x = 0, y = 3}, pos = {x = 0, y = 3},
vars = {}, vars = {},
dollars = Jane.cry and 2 or 5, dollars = Cryptid and 2 or 5,
disable = function(self) disable = function(self)
self.disabled = true self.disabled = true
end, end,

View file

@ -5,7 +5,7 @@ SMODS.Atlas {
path = Jane.config.texture_pack .. "/p_jane_boosters.png", path = Jane.config.texture_pack .. "/p_jane_boosters.png",
} }
if Jane.cry then if Cryptid then
for i = 1, 2 do for i = 1, 2 do
SMODS.Booster { SMODS.Booster {
key = "ministandard" .. i, key = "ministandard" .. i,

View file

@ -10,36 +10,17 @@ local rain_world_jokers = {
"j_jane_rot", "j_jane_rot",
} }
local is_rain_world_joker, survival = {}, {} local is_rain_world_joker = {}
for _, v in pairs(rain_world_jokers) do for _, v in pairs(rain_world_jokers) do
is_rain_world_joker[v] = true is_rain_world_joker[v] = true
end 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 { SMODS.Challenge {
key = "downpour", key = "downpour",
loc_txt = {name = "Downpour"}, loc_txt = {
name = "Downpour",
},
rules = {custom = {{id = "jane_downpour1"}, {id = "jane_downpour2"}, {id = "jane_downpour3"}}}, rules = {custom = {{id = "jane_downpour1"}, {id = "jane_downpour2"}, {id = "jane_downpour3"}}},
apply = function(_) apply = function(_)
for _, v in ipairs(rain_world_jokers) do for _, v in ipairs(rain_world_jokers) do

View file

@ -5,6 +5,10 @@ SMODS.Sound({key = "e_moire", path = "e_moire.ogg"})
SMODS.Sound({key = "e_polygloss", path = "e_polygloss.ogg"}) SMODS.Sound({key = "e_polygloss", path = "e_polygloss.ogg"})
local function allow_moire() local function allow_moire()
if Cryptid then
return true
end
for _, v in pairs(SMODS.find_card("j_jane_saint")) do for _, v in pairs(SMODS.find_card("j_jane_saint")) do
if v.ability.extra.is_attuned then if v.ability.extra.is_attuned then
return true return true
@ -23,7 +27,7 @@ SMODS.Edition({
loc_txt = { loc_txt = {
name = "Polygloss", name = "Polygloss",
label = "Polygloss", label = "Polygloss",
text = Jane.cry and { text = Cryptid and {
"{C:chips}+#1#{} Chips", "{C:chips}+#1#{} Chips",
"{C:mult}+#2#{}, {X:mult,C:white}X#3#{}, & {X:mult,C:dark_edition}^#4#{} Mult", "{C:mult}+#2#{}, {X:mult,C:white}X#3#{}, & {X:mult,C:dark_edition}^#4#{} Mult",
"{C:money}$#5# {}when scored", "{C:money}$#5# {}when scored",
@ -38,7 +42,7 @@ SMODS.Edition({
chips = 12, chips = 12,
x_mult = 1.2, x_mult = 1.2,
p_dollars = 1, p_dollars = 1,
e_mult = Jane.cry and 1.02 or nil, e_mult = Cryptid and 1.02 or nil,
}, },
sound = {sound = "jane_e_polygloss", per = 1.2, vol = 0.4}, sound = {sound = "jane_e_polygloss", per = 1.2, vol = 0.4},
weight = 10, weight = 10,
@ -87,7 +91,7 @@ function Sprite:draw_shader(_shader, ...)
end end
end end
local jumbo_modifier = Jane.cry and 100 or 2 local jumbo_modifier = Cryptid and 100 or 2
local jumbo = SMODS.Edition({ local jumbo = SMODS.Edition({
key = "jumbo", key = "jumbo",
@ -119,19 +123,12 @@ local jumbo = SMODS.Edition({
Jane.misprintize(card, {min = jumbo_modifier, max = jumbo_modifier}, nil, true) Jane.misprintize(card, {min = jumbo_modifier, max = jumbo_modifier}, nil, true)
if (card.ability or {}).bonus and (card.base or {}).nominal then
card.ability.bonus = card.ability.bonus + card.base.nominal
end
if card.added_to_deck then if card.added_to_deck then
card:add_to_deck() card:add_to_deck()
end end
Jane.resize(card, Jane.config.wee_sizemod) Jane.resize(card, Jane.config.wee_sizemod)
end, end,
on_load = function(card)
Jane.resize(card, Jane.config.wee_sizemod)
end,
on_remove = function(card) on_remove = function(card)
if not card.Jane_jumbo then if not card.Jane_jumbo then
return return
@ -146,10 +143,6 @@ local jumbo = SMODS.Edition({
Jane.misprintize(card, {min = 1 / jumbo_modifier, max = 1 / jumbo_modifier}, nil, true) Jane.misprintize(card, {min = 1 / jumbo_modifier, max = 1 / jumbo_modifier}, nil, true)
if (card.ability or {}).bonus and (card.base or {}).nominal then
card.ability.bonus = card.ability.bonus - card.base.nominal
end
if was_added then if was_added then
card:add_to_deck() card:add_to_deck()
end end
@ -158,7 +151,7 @@ local jumbo = SMODS.Edition({
end, end,
sound = {sound = "jane_e_jumbo", per = 1, vol = 0.5}, sound = {sound = "jane_e_jumbo", per = 1, vol = 0.5},
weight = 5, weight = 5,
extra_cost = 2, extra_cost = 5,
in_shop = true, in_shop = true,
shader = false, shader = false,
apply_to_float = false, apply_to_float = false,
@ -171,21 +164,13 @@ function Card:set_ability(...)
local is_jumbo = self.edition and self.edition.jane_jumbo local is_jumbo = self.edition and self.edition.jane_jumbo
if is_jumbo then if is_jumbo then
if Jane.cry then
jumbo.on_remove(self) jumbo.on_remove(self)
else
Jane.resize(self)
end
end end
local ret = orig_set_ability(self, ...) local ret = orig_set_ability(self, ...)
if is_jumbo then if is_jumbo then
if Jane.cry then
jumbo.on_apply(self) jumbo.on_apply(self)
else
Jane.resize(self, Jane.config.wee_sizemod)
end
end end
return ret return ret
@ -201,15 +186,16 @@ SMODS.Edition({
"{X:mult,C:dark_edition}^#2#{C:mult} Mult", "{X:mult,C:dark_edition}^#2#{C:mult} Mult",
}, },
}, },
config = {e_chips = Jane.cry and 0.8 or 0.9, e_mult = Jane.cry and 1.2 or 1.1}, 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}, sound = {sound = "jane_e_moire", per = 1, vol = 0.7},
weight = 1, weight = 2,
extra_cost = 10, extra_cost = 10,
in_shop = true, in_shop = true,
shader = "moire", shader = "moire",
in_pool = allow_moire,
apply_to_float = false, apply_to_float = false,
get_weight = function(self) get_weight = function(self)
return G.GAME.edition_rate * self.weight * (allow_moire() and 20 or 2) return G.GAME.edition_rate * self.weight * (allow_moire() and 1 or 0)
end, end,
loc_vars = function(self, _, _) loc_vars = function(self, _, _)
return {vars = {self.config.e_chips, self.config.e_mult}} return {vars = {self.config.e_chips, self.config.e_mult}}

View file

@ -1,4 +1,4 @@
for _, v in pairs({"7granddad", "betmma", "escapey", "honey", "oxy", "maxie", Jane.cry and "peppino" or nil}) do for _, v in pairs({"7granddad", "betmma", "escapey", "honey", "oxy", "maxie", Cryptid and "peppino" or nil}) do
SMODS.Atlas { SMODS.Atlas {
px = 71, px = 71,
py = 95, py = 95,
@ -15,7 +15,7 @@ SMODS.Sound({key = "corrupt_milestone", path = "corrupt_milestone.ogg"})
SMODS.Sound({key = "corrupt_untick", path = "corrupt_untick.ogg"}) SMODS.Sound({key = "corrupt_untick", path = "corrupt_untick.ogg"})
SMODS.Sound({key = "corrupt_tick", path = "corrupt_tick.ogg"}) SMODS.Sound({key = "corrupt_tick", path = "corrupt_tick.ogg"})
local exotic = Jane.cry and "cry_exotic" or 4 local exotic = Cryptid and "cry_exotic" or 4
local food = { local food = {
"j_gros_michel", "j_gros_michel",
@ -138,20 +138,6 @@ local escapey_quotes = {
}, },
} }
local function escapey_button_text(card)
if card.debuff then
return "DEBUFFED"
end
for _, v in ipairs(G.consumeables.cards) do
if destructible(v) then
return "CONSUME"
end
end
return "ESCAPE"
end
local esc = SMODS.Joker { local esc = SMODS.Joker {
key = "escapey", key = "escapey",
atlas = "janeescapey", atlas = "janeescapey",
@ -168,7 +154,7 @@ local esc = SMODS.Joker {
"{C:inactive,s:0.75,E:1}#5#{C:red,s:1.5,E:1}#6#", "{C:inactive,s:0.75,E:1}#5#{C:red,s:1.5,E:1}#6#",
}, },
}, },
config = {extra = {money = 2, xmoney = 2, max = 200, escape_label = "ESCAPE"}}, config = {extra = {money = 2, xmoney = 1.5, max = 1000}},
attributes = {"destroy_card", "economy", "tag"}, attributes = {"destroy_card", "economy", "tag"},
pos = {x = 0, y = 0}, pos = {x = 0, y = 0},
sinis = {x = 2, y = 0}, sinis = {x = 2, y = 0},
@ -189,12 +175,6 @@ local esc = SMODS.Joker {
return {vars = {extra.xmoney, number_format(extra.max), extra.money, normal[1], normal[2], scared}} return {vars = {extra.xmoney, number_format(extra.max), extra.money, normal[1], normal[2], scared}}
end, end,
calculate = function(_, card)
local extra = card.ability.extra
local label = extra.escape_label
extra.escape_label = escapey_button_text(card)
local _ = label ~= extra.escape_label and Bakery_API.rehighlight(card)
end,
Bakery_can_use = function(_, card) Bakery_can_use = function(_, card)
if not Jane.can_use() or card.debuff then if not Jane.can_use() or card.debuff then
return false return false
@ -213,7 +193,7 @@ local esc = SMODS.Joker {
return false return false
end, end,
Bakery_use_button_text = function(_, card) Bakery_use_button_text = function(_, card)
return card.ability.extra.escape_label return card.debuff and "DEBUFFED" or "ESCAPE"
end, end,
Bakery_use_joker = function(self, card) Bakery_use_joker = function(self, card)
if card.debuff then if card.debuff then
@ -255,14 +235,14 @@ local esc = SMODS.Joker {
end end
end end
local tag_money = Jane.cry and G.GAME.dollars or math.min(G.GAME.dollars, extra.max) local scaling = Cryptid and G.GAME.dollars or math.min(G.GAME.dollars, extra.max)
local tag_times = Jane.cry and math.pow(extra.xmoney, xtimes) - 1 or xtimes local tags = scaling * (math.pow(extra.xmoney, xtimes) - 1)
ease_dollars(math.ceil(times * extra.money + tag_money * tag_times)) ease_dollars(math.ceil(times * extra.money + tags))
end, end,
tag_threshold = 30, tag_threshold = 30,
} }
local _ = Jane.cry or table.insert( local _ = Cryptid or table.insert(
esc.loc_txt.text, esc.loc_txt.text,
3, 3,
"{C:inactive,s:1.25}(Max of {C:money,s:1.25}$#2#{C:inactive,s:1.25})" "{C:inactive,s:1.25}(Max of {C:money,s:1.25}$#2#{C:inactive,s:1.25})"
@ -296,7 +276,7 @@ SMODS.Joker {
"{C:inactive,s:0.75,E:1}#3#{C:red,s:1.5,E:1}#4#", "{C:inactive,s:0.75,E:1}#3#{C:red,s:1.5,E:1}#4#",
}, },
}, },
config = {extra = {choices = Jane.cry and 2 or 1}}, config = {extra = {choices = Cryptid and 2 or 1}},
pos = {x = 0, y = 0}, pos = {x = 0, y = 0},
sinis = {x = 2, y = 0}, sinis = {x = 2, y = 0},
soul_pos = {x = 1, y = 0}, soul_pos = {x = 1, y = 0},
@ -403,7 +383,7 @@ SMODS.Joker {
cost = 8, cost = 8,
rarity = 3, rarity = 3,
loc_vars = function(_, _, card) loc_vars = function(_, _, card)
local level = tonumber(card.ability.extra.level) or 1 local level = tonumber(card.ability.extra.level)
local function level_name(i) local function level_name(i)
local acc = "" local acc = ""
@ -447,12 +427,12 @@ SMODS.Joker {
update = function(_, card, _) update = function(_, card, _)
if card.added_to_deck and card.children.center and card.children.floating_sprite then if card.added_to_deck and card.children.center and card.children.floating_sprite then
local extra = card.ability.extra or {} local extra = card.ability.extra or {}
local y = (tonumber(extra.level) or 1) > 1 and 1 or 0 local y = tonumber(extra.level) > 1 and 1 or 0
card.children.center:set_sprite_pos({x = 0, y = y}) card.children.center:set_sprite_pos({x = 0, y = y})
card.children.floating_sprite:set_sprite_pos({x = Jane.sinister and 2 or 1, y = y}) card.children.floating_sprite:set_sprite_pos({x = Jane.sinister and 2 or 1, y = y})
end end
local level = tonumber(card.ability.extra.level) or 1 local level = tonumber(card.ability.extra.level)
if not Jane.sinister and level > 2 then if not Jane.sinister and level > 2 then
card:juice_up(0, math.random() * (level - 2) / #Jane.rarity_ids) card:juice_up(0, math.random() * (level - 2) / #Jane.rarity_ids)
@ -460,7 +440,7 @@ SMODS.Joker {
end, end,
} }
if Cryptid and Cryptid.aliases then if Cryptid then
Cryptid.aliases["honey"] = "j_jane_honey" Cryptid.aliases["honey"] = "j_jane_honey"
end end
@ -470,7 +450,7 @@ function SMODS.poll_rarity(_pool_key, _rand_key)
local max = 0 local max = 0
for _, v in pairs(SMODS.find_card("j_jane_honey")) do for _, v in pairs(SMODS.find_card("j_jane_honey")) do
max = v.debuff and max or math.max(max, tonumber(v.ability.extra.level) or 1) max = v.debuff and max or math.max(max, tonumber(v.ability.extra.level))
end end
local rarity = orig_rarity(_pool_key, _rand_key) local rarity = orig_rarity(_pool_key, _rand_key)
@ -542,7 +522,7 @@ SMODS.Joker {
"{C:inactive,s:0.75,E:1}#11#{C:red,s:1.5,E:1}#12#", "{C:inactive,s:0.75,E:1}#11#{C:red,s:1.5,E:1}#12#",
}, },
}, },
config = {extra = {corrupted_steel = Jane.cry and 20 or 5, is_corrupted = false, milestone = 3, progress = 0}}, config = {extra = {corrupted_steel = Cryptid and 20 or 5, is_corrupted = false, milestone = 3, progress = 0}},
pos = {x = 0, y = 0}, pos = {x = 0, y = 0},
sinis = {x = 2, y = 0}, sinis = {x = 2, y = 0},
soul_pos = {x = 1, y = 0}, soul_pos = {x = 1, y = 0},
@ -641,12 +621,12 @@ SMODS.Joker {
end, end,
} }
if Cryptid and Cryptid.aliases then if Cryptid then
Cryptid.aliases["oxy"] = "j_jane_oxy" Cryptid.aliases["oxy"] = "j_jane_oxy"
end end
local operator = Jane.cry and "^" or "X" local operator = Cryptid and "^" or "X"
local operator_prefix = Jane.cry and "{X:dark_edition,C:mult}" or "{X:mult,C:white}" local operator_prefix = Cryptid and "{X:dark_edition,C:mult}" or "{X:mult,C:white}"
SMODS.Joker { SMODS.Joker {
key = "betmma", key = "betmma",
@ -655,16 +635,16 @@ SMODS.Joker {
name = "Betmma", name = "Betmma",
text = { text = {
operator_prefix .. "+" .. operator .. "#1#{C:mult} Mult{} for every", operator_prefix .. "+" .. operator .. "#1#{C:mult} Mult{} for every",
"{C:attention}" .. (Jane.cry and "Unique " or "") .. "Voucher{} redeemed", "{C:attention}" .. (Cryptid and "Unique " or "") .. "Voucher{} redeemed",
"{C:inactive}(Currently " .. operator_prefix .. operator .. "#2#{C:inactive})", "{C:inactive}(Currently " .. operator_prefix .. operator .. "#2#{C:inactive})",
}, },
}, },
config = {extra = {tet = Jane.cry and 0.25 or 0.5}}, config = {extra = {tet = Cryptid and 0.25 or 0.5}},
pos = {x = 0, y = 0}, pos = {x = 0, y = 0},
soul_pos = {x = 1, y = 0}, soul_pos = {x = 1, y = 0},
blueprint_compat = true, blueprint_compat = true,
cost = Jane.cry and 20 or 8, cost = Cryptid and 20 or 8,
rarity = Jane.cry and 4 or 3, rarity = Cryptid and 4 or 3,
loc_vars = function(_, _, center) loc_vars = function(_, _, center)
return {vars = {center.ability.extra.tet, 1 + (voucher_count() * center.ability.extra.tet)}} return {vars = {center.ability.extra.tet, 1 + (voucher_count() * center.ability.extra.tet)}}
end, end,
@ -680,15 +660,15 @@ SMODS.Joker {
return { return {
card = card, card = card,
colour = Jane.cry and G.C.jane_RGB or nil, colour = Cryptid and G.C.jane_RGB or nil,
message = Jane.cry and (operator .. number_format(num)) or nil, message = Cryptid and (operator .. number_format(num)) or nil,
[Jane.cry and "e_mult" or "x_mult"] = num, [Cryptid and "e_mult" or "x_mult"] = num,
}, true }, true
end end
end, end,
} }
if not Jane.cry then if not Cryptid then
return return
end end
@ -706,8 +686,8 @@ SMODS.Joker {
soul_pos = {x = 1, y = 0}, soul_pos = {x = 1, y = 0},
atlas = "jane7granddad", atlas = "jane7granddad",
blueprint_compat = true, blueprint_compat = true,
cost = Jane.cry and 49 or 7, cost = Cryptid and 49 or 7,
rarity = Jane.cry and exotic or 3, rarity = Cryptid and exotic or 3,
loc_vars = function(_, _, center) loc_vars = function(_, _, center)
return {vars = {center.ability.shopslots}} return {vars = {center.ability.shopslots}}
end, end,
@ -726,19 +706,19 @@ SMODS.Joker {
if context.other_card and context.other_card:get_id() == 7 and scj(context) then if context.other_card and context.other_card:get_id() == 7 and scj(context) then
grand_dad(card) grand_dad(card)
local palette = granddad_palette[math.random(#granddad_palette)] local palette = granddad_palette[math.random(#granddad_palette)]
local rnd = pseudorandom(pseudoseed("granddad"), 1, Jane.cry and 5 or 4) local rnd = pseudorandom(pseudoseed("granddad"), 1, Cryptid and 5 or 4)
if rnd == 1 then if rnd == 1 then
return { return {
message = Jane.cry and "+777" or "+77", message = Cryptid and "+777" or "+77",
chips = Jane.cry and 777 or 77, chips = Cryptid and 777 or 77,
colour = palette, colour = palette,
card = card, card = card,
}, true }, true
elseif rnd == 2 then elseif rnd == 2 then
return { return {
message = Jane.cry and "+777 Mult" or "+77 Mult", message = Cryptid and "+777 Mult" or "+77 Mult",
mult = Jane.cry and 777 or 77, mult = Cryptid and 777 or 77,
colour = palette, colour = palette,
card = card, card = card,
}, true }, true
@ -751,8 +731,8 @@ SMODS.Joker {
}, true }, true
elseif rnd == 4 then elseif rnd == 4 then
return { return {
message = Jane.cry and "X7 Mult" or "X1.77 Mult", message = Cryptid and "X7 Mult" or "X1.77 Mult",
x_mult = Jane.cry and 7 or 1.77, x_mult = Cryptid and 7 or 1.77,
colour = palette, colour = palette,
card = card, card = card,
}, true }, true
@ -782,8 +762,8 @@ SMODS.Joker {
pos = {x = 0, y = 0}, pos = {x = 0, y = 0},
soul_pos = {x = 1, y = 0}, soul_pos = {x = 1, y = 0},
config = {extra = {base = 2}}, config = {extra = {base = 2}},
cost = Jane.cry and 20 or 8, cost = Cryptid and 20 or 8,
rarity = Jane.cry and 4 or 3, rarity = Cryptid and 4 or 3,
blueprint_compat = true, blueprint_compat = true,
loc_vars = function(_, _, card) loc_vars = function(_, _, card)
return {vars = {card.ability.extra.base ^ food_jokers_count()}} return {vars = {card.ability.extra.base ^ food_jokers_count()}}
@ -792,7 +772,7 @@ SMODS.Joker {
local count = food_jokers_count() local count = food_jokers_count()
if context.joker_main and count > 0 then if context.joker_main and count > 0 then
return {[Jane.cry and "e_mult" or "x_mult"] = card.ability.extra.base ^ count} return {[Cryptid and "e_mult" or "x_mult"] = card.ability.extra.base ^ count}
end end
end, end,
} }

View file

@ -1,15 +1,17 @@
Jane = { Jane = {
cry = not not G.P_CENTERS.j_cry_m,
config = { config = {
wee_sizemod = 1.25,
texture_pack = "default", texture_pack = "default",
wee_sizemod = math.sqrt(2),
bans = {"j_cry_crustulum", "c_cry_hammerspace"}, bans = {"j_cry_crustulum", "c_cry_hammerspace"},
}, },
} }
Jane.rarity_ids = Jane.cry and {1, 2, 3, "cry_epic", 4, "cry_exotic", "jane_junk"} or {1, 2, 3, 4, "jane_junk"} -- Jane.misprintize = (Cryptid or {}).misprintize
-- Jane.misprintize_tbl = (Cryptid or {}).misprintize_tbl
-- Jane.misprinitze_val = (Cryptid or {}).misprintize_val
Jane.rarity_ids = Cryptid and {1, 2, 3, "cry_epic", 4, "cry_exotic", "jane_junk"} or {1, 2, 3, 4, "jane_junk"}
Jane.rarity_names = Jane.cry and {"Common", "Uncommon", "Rare", "Epic", "Legendary", "Exotic", "Junk"} or Jane.rarity_names = Cryptid and {"Common", "Uncommon", "Rare", "Epic", "Legendary", "Exotic", "Junk"} or
{"Common", "Uncommon", "Rare", "Legendary", "Junk"} {"Common", "Uncommon", "Rare", "Legendary", "Junk"}
if not Jane.misprintize then if not Jane.misprintize then
@ -113,7 +115,7 @@ function Jane.card_status_text(
end end
function Jane.empowered() function Jane.empowered()
if Jane.cry then if Cryptid then
add_tag(Tag("tag_cry_empowered")) add_tag(Tag("tag_cry_empowered"))
return return
end end
@ -199,14 +201,13 @@ function Jane.resize(card, mod)
end end
end end
function Jane.q(func, delay, timer, trigger, blockable, blocking, no_delete) function Jane.q(func, delay, timer, trigger, blockable, blocking)
G.E_MANAGER:add_event(Event({ G.E_MANAGER:add_event(Event({
delay = delay, delay = delay,
timer = timer, timer = timer,
trigger = (delay and not trigger) and "after" or trigger, trigger = (delay and not trigger) and "after" or trigger,
blocking = blocking, blocking = blocking,
blockable = blockable, blockable = blockable,
no_delete = no_delete,
func = function(...) func = function(...)
local ret = func(...) local ret = func(...)
return ret == nil and true or ret return ret == nil and true or ret
@ -214,20 +215,6 @@ function Jane.q(func, delay, timer, trigger, blockable, blocking, no_delete)
})) }))
end end
if false then
---@type table?
Big = Big
---@type { aliases: { [string]: string } }?
Cryptid = Cryptid
---@type { config_file: { break_infinity: boolean, disable_anims: boolean }? }?
Talisman = Talisman
---@type fun(any): boolean
_G.is_number = _G.is_number
end
local orig_can_highlight = CardArea.can_highlight local orig_can_highlight = CardArea.can_highlight
function CardArea:can_highlight(...) function CardArea:can_highlight(...)
@ -317,7 +304,7 @@ function Game:update(dt)
local ante = G.GAME.round_resets.ante local ante = G.GAME.round_resets.ante
local blind = get_blind_amount((ante >= 1 and ante <= 8) and math.floor(ante) or ante) local blind = get_blind_amount((ante >= 1 and ante <= 8) and math.floor(ante) or ante)
G.P_BLINDS["bl_jane_wee"].mult = 22 / blind G.P_BLINDS["bl_jane_wee"].mult = 22 / blind
G.P_BLINDS["bl_jane_descending"].mult = math.ceil(8 * math.sqrt(blind)) / blind G.P_BLINDS["bl_jane_descending"].mult = math.floor(8 * math.sqrt(blind)) / blind
Jane.update_honey() Jane.update_honey()
if not Jane.bans_done then if not Jane.bans_done then
@ -364,10 +351,6 @@ SMODS.Atlas {
path = Jane.config.texture_pack .. "/c_jane_acc.png", path = Jane.config.texture_pack .. "/c_jane_acc.png",
} }
for i = 1, 4 do
SMODS.Sound({key = "ambientSurreal" .. i, path = "ambient_surreal" .. i .. ".ogg"})
end
for _, v in ipairs({ for _, v in ipairs({
"back", "back",
"blind", "blind",

View file

@ -133,11 +133,10 @@ function Jane.misprintize_tbl(name, ref_tbl, ref_value, clear, override, stack,
for k, v in pairs(tbl) do for k, v in pairs(tbl) do
if (type(tbl[k]) ~= "table") or is_number(tbl[k]) then if (type(tbl[k]) ~= "table") or is_number(tbl[k]) then
if is_number(tbl[k]) and not if is_number(tbl[k]) and not
(k == "x_chips" and not Jane.cry) and not (k == "x_chips" and not Cryptid) and not
(k == "h_x_chips" and not Jane.cry) and not (k == "h_x_chips" and not Cryptid) and not
(k == "id") and not (k == "id") and not
(k == "colour") and not (k == "colour") and not
(k == "nominal") and not
(k == "suit_nominal") and not (k == "suit_nominal") and not
(k == "base_nominal") and not (k == "base_nominal") and not
(k == "face_nominal") and not (k == "face_nominal") and not

View file

@ -12,7 +12,7 @@ SMODS.Sound({
select_music_track = function() select_music_track = function()
for _, v in pairs(SMODS.find_card("j_jane_saint")) do for _, v in pairs(SMODS.find_card("j_jane_saint")) do
if v.ability.extra.is_attuned then if v.ability.extra.is_attuned then
return 201 return Jane.sinister and -1 / 0 or 10
end end
end end
@ -25,13 +25,9 @@ SMODS.Sound({
path = "music_attuned_sinister.ogg", path = "music_attuned_sinister.ogg",
volume = 1, volume = 1,
select_music_track = function() select_music_track = function()
if not Jane.sinister then
return -1 / 0
end
for _, v in pairs(SMODS.find_card("j_jane_saint")) do for _, v in pairs(SMODS.find_card("j_jane_saint")) do
if v.ability.extra.is_attuned then if v.ability.extra.is_attuned then
return 202 return Jane.sinister and 10 or -1 / 0
end end
end end
@ -58,8 +54,8 @@ for _, v in pairs({
} }
end end
local epic = Jane.cry and "cry_epic" or 3 local epic = Cryptid and "cry_epic" or 3
local exotic = Jane.cry and "cry_exotic" or 4 local exotic = Cryptid and "cry_exotic" or 4
SMODS.Rarity { SMODS.Rarity {
key = "junk", key = "junk",
@ -128,10 +124,10 @@ SMODS.Joker {
loc_txt = { loc_txt = {
name = "The Survivor", name = "The Survivor",
text = { text = {
"All cards held in", "All cards held in hand",
"hand also {C:attention}score" .. (Jane.cry and " {}and" or ""), "also {C:attention}score" .. (Cryptid and " {}and" or ""),
Jane.cry and "considered as the" or nil, Cryptid and "considered as the" or nil,
Jane.cry and "{C:attention}first {}played card" or nil, Cryptid and "{C:attention}first {}played card" or nil,
}, },
}, },
pos = {x = 0, y = 0}, pos = {x = 0, y = 0},
@ -148,9 +144,10 @@ SMODS.Joker {
loc_txt = { loc_txt = {
name = "The Hunter", name = "The Hunter",
text = { text = {
"{E:1}Succumbs to the {X:black,C:white,E:1}Rot{},", "{E:1}Succumbs to the",
(Jane.cry and "creating an {C:spectral}Empowered" or "creating a {C:dark_edition}Negative"), "{X:black,C:white,E:1}Rot{}, creating",
(Jane.cry and "{C:spectral}Tag" or "{C:spectral}Soul") .. " {}after #1#", (Cryptid and "an {C:spectral}Empowered Tag" or "a {C:dark_edition}Negative {C:spectral}Soul"),
"after #1#",
}, },
}, },
config = {extra = {rounds_left = hunter[1]}}, config = {extra = {rounds_left = hunter[1]}},
@ -159,15 +156,15 @@ SMODS.Joker {
blueprint_compat = false, blueprint_compat = false,
perishable_compat = false, perishable_compat = false,
soul_pos = {x = 1, y = 0}, soul_pos = {x = 1, y = 0},
cost = Jane.cry and 15 or 8, cost = Cryptid and 15 or 8,
rarity = Jane.cry and epic or 3, rarity = Cryptid and epic or 3,
loc_vars = function(_, info_queue, card) loc_vars = function(_, info_queue, card)
local function rounds(amount) local function rounds(amount)
return " round" .. ((math.abs(amount) > 1 or math.abs(amount) == 0) and "s" or "") return " round" .. ((math.abs(amount) > 1 or math.abs(amount) == 0) and "s" or "")
end end
info_queue[#info_queue + 1] = G.P_CENTERS.j_jane_rot info_queue[#info_queue + 1] = G.P_CENTERS.j_jane_rot
info_queue[#info_queue + 1] = Jane.cry and G.P_CENTERS.c_cry_empowered or G.P_CENTERS.c_soul info_queue[#info_queue + 1] = Cryptid and G.P_CENTERS.c_cry_empowered or G.P_CENTERS.c_soul
local rounds_left = card.ability.extra.rounds_left local rounds_left = card.ability.extra.rounds_left
local sold = rounds_left - hunter[5] local sold = rounds_left - hunter[5]
@ -275,16 +272,22 @@ SMODS.Joker {
atlas = "janegourmand", atlas = "janegourmand",
loc_txt = { loc_txt = {
name = "The Gourmand", name = "The Gourmand",
text = {"All cards are {C:dark_edition}Jumbo"}, text = {
"Values on {C:attention}consumables",
"are {C:attention}" .. (Cryptid and "multiplied" or "added") .. "{} by {C:attention}#1#" .. (Cryptid and "" or "{} when"),
(Cryptid and "when " or "") .. "they are created",
"{C:inactive}(If possible)",
}, },
},
loc_vars = function(_, _, center)
return {vars = {center.ability.modifier}}
end,
config = {modifier = Cryptid and 2 or 1},
pos = {x = 0, y = 0}, pos = {x = 0, y = 0},
soul_pos = {x = 1, y = 0}, soul_pos = {x = 1, y = 0},
blueprint_compat = false, blueprint_compat = false,
cost = 20, cost = 8,
rarity = 4, rarity = 3,
loc_vars = function(_, info_queue)
info_queue[#info_queue + 1] = G.P_CENTERS.e_jane_jumbo
end,
} }
local function add_to_consumable_ability_by(n) local function add_to_consumable_ability_by(n)
@ -338,14 +341,14 @@ local orig_set_ability = Card.set_ability
function Card:set_ability(center, initial, delay_sprites) function Card:set_ability(center, initial, delay_sprites)
orig_set_ability(self, center, initial, delay_sprites) orig_set_ability(self, center, initial, delay_sprites)
if next(SMODS.find_card("j_jane_rivulet")) and if next(SMODS.find_card("j_jane_gourmand")) and
self.gc and self.gc and
self:gc().key ~= "c_base" and self:gc().key ~= "c_base" and
string.sub(self:gc().key, 1, 2) == "c_" then string.sub(self:gc().key, 1, 2) == "c_" then
if Jane.cry or not ((SMODS.Mods.Roland or {}).qol or {})[1] then if Cryptid then
local mod = 1 local mod = 1
for _, v in pairs(SMODS.find_card("j_jane_rivulet")) do for _, v in pairs(SMODS.find_card("j_jane_gourmand")) do
mod = mod * v.ability.modifier mod = mod * v.ability.modifier
end end
@ -353,7 +356,7 @@ function Card:set_ability(center, initial, delay_sprites)
else else
local mod = 0 local mod = 0
for _, v in pairs(SMODS.find_card("j_jane_rivulet")) do for _, v in pairs(SMODS.find_card("j_jane_gourmand")) do
mod = mod + v.ability.modifier mod = mod + v.ability.modifier
end end
@ -370,21 +373,17 @@ SMODS.Joker {
text = { text = {
"Use to {C:red}destroy", "Use to {C:red}destroy",
"selected {C:attention}playing cards", "selected {C:attention}playing cards",
not Jane.cry and "{C:red,E:1}Self-destructs" or nil, not Cryptid and "{C:red,E:1}Self-destructs" or nil,
not Jane.cry and "after {C:attention}#1# #2#" or nil, not Cryptid and "after {C:attention}#1# #2#" or nil,
}, },
}, },
pos = {x = 0, y = 0}, pos = {x = 0, y = 0},
soul_pos = {x = 1, y = 0}, soul_pos = {x = 1, y = 0},
config = {extra = {uses = 2}}, config = {extra = {uses = 2}},
eternal_compat = false,
blueprint_compat = false, blueprint_compat = false,
cost = Jane.cry and 50 or 7, cost = Cryptid and 50 or 20,
rarity = Jane.cry and exotic or 3, rarity = Cryptid and exotic or 3,
loc_vars = function(_, _, card) loc_vars = function(_, _, card)
card.ability = card.ability or {}
card.ability.extra = card.ability.extra or {}
card.ability.extra.uses = card.ability.extra.uses or 2
local uses = card.ability.extra.uses local uses = card.ability.extra.uses
return {vars = {uses, uses == 1 and "use" or "uses"}} return {vars = {uses, uses == 1 and "use" or "uses"}}
end, end,
@ -401,7 +400,7 @@ SMODS.Joker {
v:start_dissolve() v:start_dissolve()
end end
if Jane.cry then if Cryptid then
return return
end end
@ -439,8 +438,8 @@ SMODS.Joker {
pos = {x = 0, y = 0}, pos = {x = 0, y = 0},
soul_pos = {x = 1, y = 0}, soul_pos = {x = 1, y = 0},
blueprint_compat = false, blueprint_compat = false,
cost = Jane.cry and 12 or 20, cost = Cryptid and 12 or 20,
rarity = Jane.cry and epic or 4, rarity = Cryptid and epic or 4,
Bakery_can_use = function(_, card) Bakery_can_use = function(_, card)
if card.debuff or not if card.debuff or not
Jane.can_use() or not Jane.can_use() or not
@ -516,21 +515,15 @@ SMODS.Joker {
loc_txt = { loc_txt = {
name = "The Rivulet", name = "The Rivulet",
text = { text = {
"Values on {C:attention}consumables", "Non-{C:dark_edition}editioned{} cards are",
"are {C:attention}" .. (Jane.cry and "multiplied" or "added") .. "{} by {C:attention}#1#" .. (Jane.cry and "" or "{} when"), "given a random {C:dark_edition}Edition",
(Jane.cry and "when " or "") .. "they are created",
"{C:inactive}(If possible)",
}, },
}, },
config = {modifier = Jane.cry and 2 or 1},
pos = {x = 0, y = 0}, pos = {x = 0, y = 0},
soul_pos = {x = 1, y = 0}, soul_pos = {x = 1, y = 0},
blueprint_compat = false, blueprint_compat = false,
cost = 8, cost = 20,
rarity = 3, rarity = 4,
loc_vars = function(_, _, center)
return {vars = {center.ability.modifier}}
end,
} }
local orig_draw = Card.draw local orig_draw = Card.draw
@ -555,11 +548,11 @@ function Card:draw(layer)
if cen and if cen and
self.facing == "front" and self.facing == "front" and
self.config and self.config and
(self.added_to_deck or (self.area and self.area == G.hand)) and (self.added_to_deck or (self.area and self.area == G.hand)) and not
not self.edition and self.edition and
(self.area == G.consumeables or cen.set ~= "Booster") and (self.area == G.consumeables or cen.set ~= "Booster") and
next(SMODS.find_card("j_jane_gourmand")) then next(SMODS.find_card("j_jane_rivulet")) then
self:set_edition("e_jane_jumbo", true, true) self:set_edition(poll_edition("rivulet_edition", nil, true, true))
end end
orig_draw(self, layer) orig_draw(self, layer)
@ -576,28 +569,44 @@ function Card:set_debuff(should_debuff)
end end
end end
local function attunement()
return (G.GAME or {}).weeckweeck and 2 or (Cryptid and 1.002 or 1.25)
end
SMODS.Joker { SMODS.Joker {
key = "saint", key = "saint",
atlas = "janesaint", atlas = "janesaint",
loc_txt = { loc_txt = {
name = {"{}", "#1#{C:jane_RGB,s:0.8}#2#", "{C:jane_RGB,s:1.6}#3#"}, name = "The Saint{C:jane_RGB}#1#",
text = { text = Cryptid and {
"{C:attention}Use {}to toggle itself or", "{C:attention}Use {}to toggle {X:legendary,C:white}Eternal{} stickers to the left",
"other Jokers to its", "{C:spectral}Analog{}, {C:spectral}Ankh{}, {C:spectral}Gateway{}, and",
"left's {C:legendary}Eternal{} sticker", "{C:spectral,s:0.95}Summoning {s:0.95}will {C:attention,s:0.95}not destroy Jokers",
"{C:attention}#4#{}#5#{C:spectral}#6#{}#7#", "{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}#8#{C:attention,s:1.25}#9#{C:inactive,s:1.25}#10#", "{C:inactive,s:1.25}#7#{C:attention,s:1.25}#8#{C:inactive,s:1.25}#9#{C:inactive}#10#",
Jane.cry and "{C:inactive}(Gateway has no downside)" or nil, } or {
"{C:attention}Use {}to toggle {X:legendary,C:white}Eternal{} stickers to the left",
"{C:jane_RGB}#2#{}#3#{C:dark_edition}#4#{C:spectral}#5#",
"{C:inactive,s:1.25}#6#{C:attention,s:1.25}#7#{C:inactive,s:1.25}#8#{C:inactive}#9#",
}, },
}, },
config = {extra = {changes_editions = false, jokers = Jane.cry and 10 or 1, karma = 0, max_karma = Jane.cry and 10 or 3}}, config = {extra = {karma = 0, max_karma = Cryptid and 10 or 2}},
pos = {x = 0, y = 0}, pos = {x = 0, y = 0},
soul_pos = {x = 1, y = 0}, soul_pos = {x = 1, y = 0},
cost = 20, cost = 20,
rarity = 4, rarity = 4,
blueprint_compat = true, blueprint_compat = true,
loc_vars = function(_, info_queue, card) loc_vars = function(_, info_queue, card)
info_queue[#info_queue + 1] = Jane.cry and G.P_CENTERS.c_cry_gateway or nil if Cryptid then
info_queue[#info_queue + 1] = G.P_CENTERS.c_cry_analog
end
info_queue[#info_queue + 1] = Cryptid and G.P_CENTERS.c_ankh or nil
info_queue[#info_queue + 1] = Cryptid and G.P_CENTERS.c_cry_gateway or G.P_CENTERS.c_soul
if Cryptid then
info_queue[#info_queue + 1] = G.P_CENTERS.c_cry_summoning
end
local extra = card.ability.extra local extra = card.ability.extra
local karma = extra.karma local karma = extra.karma
@ -605,26 +614,36 @@ SMODS.Joker {
local attuned = karma >= max_karma local attuned = karma >= max_karma
return { return {
vars = { vars = Cryptid and {
attuned and "" or "The Saint", attuned and " (Attuned)" or "",
attuned and "The" or "",
attuned and "Attuned" or "",
attuned and "" or "Attune ", attuned and "" or "Attune ",
attuned and "" or "at ", attuned and "" or "after using ",
attuned and (Jane.cry and "Gateways " or "Spectrals ") or attuned and "^^" .. attunement() or max_karma,
max_karma .. (Jane.cry and " Gateways" or " Spectrals"), attuned and "" or " Gateways",
attuned and "add Joker slots" or "", attuned and " Mult" or "",
attuned and "[Currently " or "[", attuned and "" or "[",
attuned and "+" .. karma or karma, attuned and "" or karma,
attuned and "]" or " / " .. max_karma .. "]", attuned and "" or " / " .. max_karma .. "]",
attuned and "(Cannot be debuffed)" or "",
} or {
attuned and " (Attuned)" or "",
attuned and "" or "Attune ",
attuned and "Boosts cards with " or "after using ",
attuned and "editions" or max_karma,
attuned and "" or " Ankh or Soul Cards",
attuned and "" or "[",
attuned and "" or karma,
attuned and "" or " / " .. max_karma .. "]",
attuned and "(Cannot be debuffed)" or "",
}, },
} }
end, end,
update = function(_, card, _) update = function(_, card, _)
if card.edition and card.edition.Roland_frozen then card.debuff_immune = card.ability.extra.is_attuned
card:set_edition("e_base")
elseif card.children.floating_sprite then if card.added_to_deck and card.children.center and card.children.floating_sprite then
card.children.floating_sprite:set_sprite_pos({x = card.ability.extra.is_attuned and 2 or 1, y = 0}) local extra = card.ability.extra
card.children.floating_sprite:set_sprite_pos({x = extra.is_attuned and 2 or 1, y = 0})
end end
end, end,
calculate = function(_, card, context) calculate = function(_, card, context)
@ -666,9 +685,49 @@ SMODS.Joker {
end, 1) end, 1)
end end
if extra.karma >= max_karma then if extra.is_attuned then
local karma = (extra.is_attuning or extra.is_attuned) and 0 or extra.karma card.debuff = false
G.jokers:change_size(karma * extra.jokers)
if card.ability then
card.ability.perishable = false
card.ability.perish_tally = 1e9
end
if Cryptid and not context.joker_main then
return
end
if not Cryptid and not context.other_joker and (not context.individual or context.cardarea ~= G.play) then
return
end
local attune = attunement()
local trigger = ({
e_holo = {mult = 50},
e_foil = {chips = 250},
e_polychrome = {x_mult = 2.5},
e_jane_polygloss = {
mult = 10,
x_mult = 2,
chips = 100,
p_dollars = 10,
},
e_jane_moire = {
colour = G.C.jane_RGB,
sound = "talisman_eeechip",
EEchip_mod = Cryptid and attune or nil,
[Cryptid and "EEmult_mod" or "Emult_mod"] = attune,
message = (Cryptid and "^^" or "^") .. attune .. (Cryptid and " Chips & Mult" or ""),
},
})[Cryptid and "e_jane_moire" or ((context.other_card or context.other_joker or {}).edition or {}).key]
if trigger then
trigger.card = card
end
return trigger
elseif extra.karma >= max_karma then
ascend() ascend()
end end
@ -679,9 +738,9 @@ SMODS.Joker {
return return
end end
local gc = context.consumeable:gc() local key = context.consumeable:gc().key
if Jane.cry and gc.key ~= "c_cry_gateway" or not Jane.cry and gc.set ~= "Spectral" then if Cryptid and key ~= "c_cry_gateway" or not Cryptid and (key ~= "c_ankh" and key ~= "c_soul") then
return return
end end
@ -697,7 +756,7 @@ SMODS.Joker {
{message = "+" .. quota .. " Karma", colour = G.C.PALE_GREEN} {message = "+" .. quota .. " Karma", colour = G.C.PALE_GREEN}
) )
local _ = extra.karma <= max_karma and card_eval_status_text( card_eval_status_text(
card, card,
"extra", "extra",
nil, nil,
@ -710,49 +769,33 @@ SMODS.Joker {
return return
end end
G.jokers:change_size((extra.is_attuned and quota or extra.karma) * extra.jokers)
ascend() ascend()
end, end,
Bakery_can_use = function(_, card) Bakery_can_use = function(_, card)
return Jane.can_use() and not card.debuff return not card.debuff and Jane.can_use()
end, end,
Bakery_use_joker = function(_, card) Bakery_use_joker = function(self, card)
for joker_index = 1, math.max(card.rank - 1, 1) do if not self:Bakery_can_use(card) then
local joker = G.jokers.cards[joker_index] return
end
for k, v in ipairs(G.jokers.cards) do
if card == v then
for i = 1, math.max(k - 1, 1) do
local joker = G.jokers.cards[i]
joker:set_eternal(not joker.ability.eternal) joker:set_eternal(not joker.ability.eternal)
if joker.Roland_frozen_ability then
joker.Roland_frozen_ability.eternal = joker.ability.eternal
end
if not card.ability.extra.changes_editions or
not card.ability.extra.is_attuned or
joker.ability.eternal then
joker:juice_up() joker:juice_up()
goto continue
end end
local edition = 1 return
for ii, vv in ipairs(joker.edition and G.P_CENTER_POOLS.Edition or {}) do
if vv.key == joker.edition.key then
edition = ii
break
end end
end end
local next = edition < #G.P_CENTER_POOLS.Edition and edition + 1 or 1
joker:set_edition(G.P_CENTER_POOLS.Edition[next].key)
::continue::
end
end, end,
} }
if Cryptid and Cryptid.aliases then if Cryptid then
Cryptid.aliases["saint"] = "j_jane_saint" Cryptid.aliases["saint"] = "j_jane_saint"
Cryptid.aliases["attuned"] = "j_jane_saint"
Cryptid.aliases["the saint"] = "j_jane_saint" Cryptid.aliases["the saint"] = "j_jane_saint"
Cryptid.aliases["the attuned"] = "j_jane_saint"
end end
SMODS.Joker { SMODS.Joker {
@ -761,8 +804,8 @@ SMODS.Joker {
loc_txt = { loc_txt = {
name = "The Rot", name = "The Rot",
text = { text = {
Jane.cry and "{C:attention}Duplicates itself{} at the" or "{C:inactive,E:1}Does nothing", Cryptid and "{C:attention}Duplicates itself{} at the" or "{C:inactive,E:1}Does nothing",
Jane.cry and "end of {C:attention}every ante" or nil, Cryptid and "end of {C:attention}every ante" or nil,
}, },
}, },
pos = {x = 0, y = 0}, pos = {x = 0, y = 0},
@ -779,7 +822,7 @@ SMODS.Joker {
return not not next(SMODS.find_card("j_jane_rot")) return not not next(SMODS.find_card("j_jane_rot"))
end, end,
calculate = Jane.cry and function(_, card, context) calculate = Cryptid and function(_, card, context)
local function has_room() local function has_room()
return G.jokers.config.card_count < G.jokers.config.card_limit return G.jokers.config.card_count < G.jokers.config.card_limit
end end

View file

@ -183,8 +183,8 @@ SMODS.Consumable {
loc_txt = { loc_txt = {
name = "Shadows", name = "Shadows",
text = { text = {
"Create {C:attention}#1#{} random {C:dark_edition}Negative", "Create {C:attention}#1#{} {C:green}random {C:dark_edition}Negative",
"{C:attention}Perishable Jokers{}, set {C:money}sell", "{C:attention}Perishable {C:attention}Jokers{}, set {C:money}sell",
"{C:money}value {}of {C:attention}all Jokers {}to {C:money}$0", "{C:money}value {}of {C:attention}all Jokers {}to {C:money}$0",
}, },
}, },
@ -249,13 +249,13 @@ SMODS.Consumable {
key = "obfuscation", key = "obfuscation",
atlas = "janeacc", atlas = "janeacc",
set = "Spectral", set = "Spectral",
hidden = not Jane.cry, hidden = not Cryptid,
soul_rate = not Jane.cry and 0.003 or nil, soul_rate = not Cryptid and 0.003 or nil,
soul_set = not Jane.cry and "Spectral" or nil, soul_set = not Cryptid and "Spectral" or nil,
loc_txt = { loc_txt = {
name = "Obfuscation", name = "Obfuscation",
text = { text = {
"{C:green,E:1}Randomizes{} all cards in hand", "{C:green,E:1}Randomises{} all cards in hand",
"{C:inactive}(Rank, seal, edition,", "{C:inactive}(Rank, seal, edition,",
"{C:inactive}enhancement, and suit)", "{C:inactive}enhancement, and suit)",
}, },
@ -280,14 +280,14 @@ SMODS.Consumable {
key = "rift", key = "rift",
atlas = "janeacc", atlas = "janeacc",
set = "Spectral", set = "Spectral",
hidden = not Jane.cry, hidden = not Cryptid,
soul_rate = not Jane.cry and 0.003 or nil, soul_rate = not Cryptid and 0.003 or nil,
soul_set = not Jane.cry and "Spectral" or nil, soul_set = not Cryptid and "Spectral" or nil,
loc_txt = { loc_txt = {
name = "Rift", name = "Rift",
text = { text = {
"{C:red}Reset {}your deck to a", "{C:attention}Reset {}your deck to a",
"standard 52-card deck", "{C:attention}standard 52-card deck",
}, },
}, },
pos = {x = 4, y = 4}, pos = {x = 4, y = 4},

View file

@ -1,4 +1,4 @@
if not Jane.cry then if not Cryptid then
return return
end end
@ -97,7 +97,7 @@ SMODS.Consumable {
end, end,
} }
if Cryptid and Cryptid.aliases then if Cryptid then
Cryptid.aliases["joker in a tarot"] = "c_jane_jokerinatarot" Cryptid.aliases["joker in a tarot"] = "c_jane_jokerinatarot"
Cryptid.aliases["joker-in-a-tarot"] = "c_jane_jokerinatarot" Cryptid.aliases["joker-in-a-tarot"] = "c_jane_jokerinatarot"
Cryptid.aliases["jolly in a tarot"] = "c_jane_jokerinatarot" Cryptid.aliases["jolly in a tarot"] = "c_jane_jokerinatarot"

View file

@ -93,17 +93,14 @@ for _, v in pairs({
{"tag_cry_scope", "Scope", 5, 7, 3}, {"tag_cry_scope", "Scope", 5, 7, 3},
{"tag_cry_banana", "Banana", 0, 8, 4}, {"tag_cry_banana", "Banana", 0, 8, 4},
}) do }) do
if v[1] and (Jane.cry or v[1]:sub(1, 7) ~= "tag_cry") then if v[1] and (Cryptid or v[1]:sub(1, 7) ~= "tag_cry") then
SMODS.Consumable { SMODS.Consumable {
key = "token_" .. v[1], key = "token_" .. v[1],
set = "jane_tokens", set = "jane_tokens",
atlas = "janetokens", atlas = "janetokens",
loc_txt = { loc_txt = {
name = v[2] .. " Token", name = v[2] .. " Token",
text = { text = {"Creates a" .. (vowels[v[2]:sub(1, 1)] and "n" or "") .. " {C:attention}" .. v[2] .. " Tag"},
"Creates a" .. (vowels[v[2]:sub(1, 1)] and "n" or ""),
"{C:attention}" .. v[2] .. " Tag",
},
}, },
loc_vars = function(_, info_queue, _) loc_vars = function(_, info_queue, _)
info_queue[#info_queue + 1] = v[1] ~= "tag_cry_cat" and G.P_TAGS[v[1]] or nil info_queue[#info_queue + 1] = v[1] ~= "tag_cry_cat" and G.P_TAGS[v[1]] or nil
@ -115,9 +112,7 @@ for _, v in pairs({
can_divide = true, can_divide = true,
can_use = Jane.can_use, can_use = Jane.can_use,
in_pool = function(_, _) in_pool = function(_, _)
return G.GAME.used_vouchers.v_jane_token_voucher or return G.GAME.used_vouchers.v_jane_token_voucher or G.GAME.modifiers.Roland_alt_swapper_deck
G.GAME.used_vouchers.v_jane_token_voucher_plus or
G.GAME.modifiers.Roland_alt_swapper_deck
end, end,
use = function(_, _, _, _) use = function(_, _, _, _)
play_sound("jane_e_gilded", 1.25, 0.4) play_sound("jane_e_gilded", 1.25, 0.4)

View file

@ -19,7 +19,7 @@ SMODS.Atlas {
path = Jane.config.texture_pack .. "/v_jane_token_voucher_plus.png", path = Jane.config.texture_pack .. "/v_jane_token_voucher_plus.png",
} }
if Jane.cry then if Cryptid then
SMODS.Voucher { SMODS.Voucher {
key = "jolly_voucher", key = "jolly_voucher",
atlas = "janejollyvoucher", atlas = "janejollyvoucher",