Compare commits
No commits in common. "main" and "1.7.0" have entirely different histories.
21 changed files with 351 additions and 493 deletions
BIN
assets/1x/default/c_jane_reversetarots.png
Normal file
BIN
assets/1x/default/c_jane_reversetarots.png
Normal file
Binary file not shown.
|
After Width: | Height: | Size: 30 KiB |
BIN
assets/2x/default/c_jane_reversetarots.png
Normal file
BIN
assets/2x/default/c_jane_reversetarots.png
Normal file
Binary file not shown.
|
After Width: | Height: | Size: 64 KiB |
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
56
lovely.toml
56
lovely.toml
|
|
@ -42,44 +42,12 @@ match_indent = true
|
|||
target = "functions/misc_functions.lua"
|
||||
pattern = "local AC = G.SETTINGS.ambient_control"
|
||||
position = "before"
|
||||
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
|
||||
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
|
||||
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 base = Cryptid and 2 or G.ARGS.score_intensity.required_score
|
||||
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 = 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
|
||||
Jane.sinister = (G.ARGS.score_intensity.earned_score / (big(base) ^ big(expo))):to_number() > 1
|
||||
end'''
|
||||
match_indent = true
|
||||
|
||||
|
|
@ -89,7 +57,7 @@ target = "functions/state_events.lua"
|
|||
pattern = "for _, v in ipairs(SMODS.get_card_areas('playing_cards')) do"
|
||||
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
|
||||
if Jane.cry then
|
||||
if Cryptid then
|
||||
for _, v in ipairs(G.hand.cards) do
|
||||
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)
|
||||
|
|
@ -202,9 +170,8 @@ self.jokers = CardArea(
|
|||
0, 0,
|
||||
CAI.joker_W+CAI.consumeable_W,
|
||||
CAI.joker_H,
|
||||
{card_limit = (self.GAME.starting_params.joker_slots +
|
||||
self.GAME.starting_params.consumable_slots -
|
||||
(G.GAME.modifiers.jane_spacious_omega and 0 or 1)) *
|
||||
{card_limit = self.GAME.starting_params.joker_slots +
|
||||
self.GAME.starting_params.consumable_slots *
|
||||
(G.GAME.modifiers.alt_jane_spacious and 2 or 1),
|
||||
type = 'joker',
|
||||
highlight_limit = 1e100
|
||||
|
|
@ -258,16 +225,3 @@ if G.GAME.modifiers.jane_spacious then
|
|||
t = {G.jokers, G.vouchers}
|
||||
end'''
|
||||
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
|
||||
|
|
|
|||
|
|
@ -11,12 +11,11 @@
|
|||
"badge_colour": "3c3cff",
|
||||
"priority": 114,
|
||||
"dependencies": [
|
||||
"Steamodded (>=1.0.0~BETA-1606b)",
|
||||
"Lovely (>=0.6)",
|
||||
"Bakery (>=3.2.0~*)"
|
||||
"Steamodded (>=1.0.0~ALPHA-1304a)",
|
||||
"Bakery (>=0.1.26~*)"
|
||||
],
|
||||
"conflicts": [
|
||||
"Jen"
|
||||
],
|
||||
"version": "1.11.0"
|
||||
"version": "1.7.0"
|
||||
}
|
||||
38
src/back.lua
38
src/back.lua
|
|
@ -102,35 +102,35 @@ back {
|
|||
loc_txt = {
|
||||
name = "Acceleration Deck",
|
||||
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{},",
|
||||
Jane.cry and "set {C:attention}ante {}to the {C:attention}next" or "",
|
||||
Jane.cry 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 "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",
|
||||
},
|
||||
},
|
||||
alt_loc_txt = {
|
||||
name = "Jolt Sleeve",
|
||||
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{},",
|
||||
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, _)
|
||||
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
|
||||
|
||||
return {vars = {}}
|
||||
end,
|
||||
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.nitro = true
|
||||
end,
|
||||
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
|
||||
end,
|
||||
alt_calculate = function(_, _, context)
|
||||
|
|
@ -152,8 +152,9 @@ back {
|
|||
local rain_world_jokers = {
|
||||
"j_jane_monk",
|
||||
"j_jane_survivor",
|
||||
"j_jane_artificer",
|
||||
"j_jane_spearmaster",
|
||||
"j_jane_gourmand",
|
||||
"j_jane_rivulet",
|
||||
"j_jane_saint",
|
||||
}
|
||||
|
||||
|
|
@ -212,7 +213,7 @@ back {
|
|||
end,
|
||||
}
|
||||
|
||||
if Jane.cry then
|
||||
if Cryptid then
|
||||
back {
|
||||
key = "mysterious",
|
||||
atlas = "janedecks",
|
||||
|
|
@ -430,14 +431,14 @@ back {
|
|||
name = "Orrery Deck",
|
||||
text = {
|
||||
"{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 = {
|
||||
name = "Ephemeris Sleeve",
|
||||
text = {
|
||||
"{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(_)
|
||||
|
|
@ -562,7 +563,7 @@ local function two(x)
|
|||
end
|
||||
end
|
||||
|
||||
local eternal_text = Jane.cry and "Absolute" or "Eternal"
|
||||
local eternal_text = Cryptid and "Absolute" or "Eternal"
|
||||
|
||||
back {
|
||||
key = "weeck",
|
||||
|
|
@ -570,7 +571,7 @@ back {
|
|||
pos = {x = 4, y = 1},
|
||||
loc_txt = {
|
||||
name = "Weeck",
|
||||
text = Jane.cry and {
|
||||
text = Cryptid and {
|
||||
"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,
|
||||
|
|
@ -631,7 +632,6 @@ back {
|
|||
text = {
|
||||
"{C:attention}Joker {}and {C:attention}Consumable",
|
||||
"slots are {C:attention}combined",
|
||||
"{C:attention}-1 {}Slot",
|
||||
},
|
||||
},
|
||||
alt_loc_txt = {
|
||||
|
|
@ -690,13 +690,12 @@ back {
|
|||
apply_orrery()
|
||||
G.GAME.modifiers.jane_spacious = 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
|
||||
|
||||
Jane.q(function()
|
||||
add_rain_world_joker()
|
||||
local wee = create_card("Joker", G.jokers, nil, nil, nil, nil, "j_wee", "weeck")
|
||||
G.jokers:emplace(wee)
|
||||
add_rain_world_joker()
|
||||
G.GAME.tortoise = true
|
||||
G.GAME.obsidian = true
|
||||
G.GAME.mysterious = true
|
||||
|
|
@ -715,7 +714,6 @@ back {
|
|||
end
|
||||
end,
|
||||
calculate = function(_, _, context)
|
||||
rebalance_orrery()
|
||||
G.GAME.mysterious = nil
|
||||
|
||||
if Jane.is_end_of_ante(context) then
|
||||
|
|
@ -757,7 +755,7 @@ function ease_ante(mod)
|
|||
end
|
||||
|
||||
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
|
||||
math.ceil(next_number(G.GAME.round_resets.ante) - G.GAME.round_resets.ante)) or
|
||||
(mod > 0 and mod * 2 or mod)
|
||||
|
|
|
|||
|
|
@ -36,9 +36,9 @@ SMODS.Blind {
|
|||
atlas = "janeblinds",
|
||||
pos = {x = 0, y = 0},
|
||||
vars = {},
|
||||
dollars = Jane.cry and 7 or 5,
|
||||
dollars = Cryptid and 7 or 5,
|
||||
defeat = function(_)
|
||||
if not Jane.cry then
|
||||
if not Cryptid then
|
||||
offset_operator(2 - Jane.get_operator())
|
||||
elseif not G.GAME.blind.disabled then
|
||||
offset_operator(1)
|
||||
|
|
@ -62,7 +62,7 @@ SMODS.Blind {
|
|||
end,
|
||||
}
|
||||
|
||||
if Jane.cry then
|
||||
if Cryptid then
|
||||
SMODS.Blind {
|
||||
loc_txt = {
|
||||
name = "The Insignia",
|
||||
|
|
@ -107,7 +107,7 @@ SMODS.Blind {
|
|||
atlas = "janeblinds",
|
||||
pos = {x = 0, y = 3},
|
||||
vars = {},
|
||||
dollars = Jane.cry and 2 or 5,
|
||||
dollars = Cryptid and 2 or 5,
|
||||
disable = function(self)
|
||||
self.disabled = true
|
||||
end,
|
||||
|
|
|
|||
|
|
@ -5,7 +5,7 @@ SMODS.Atlas {
|
|||
path = Jane.config.texture_pack .. "/p_jane_boosters.png",
|
||||
}
|
||||
|
||||
if Jane.cry then
|
||||
if Cryptid then
|
||||
for i = 1, 2 do
|
||||
SMODS.Booster {
|
||||
key = "ministandard" .. i,
|
||||
|
|
|
|||
|
|
@ -10,36 +10,17 @@ local rain_world_jokers = {
|
|||
"j_jane_rot",
|
||||
}
|
||||
|
||||
local is_rain_world_joker, survival = {}, {}
|
||||
local is_rain_world_joker = {}
|
||||
|
||||
for _, v in pairs(rain_world_jokers) do
|
||||
is_rain_world_joker[v] = true
|
||||
end
|
||||
|
||||
Jane.q(function()
|
||||
for gk, g in pairs(G.localization.descriptions) do
|
||||
for ck, c in pairs((type(g) == "table" and not ({Back = true, Sleeve = true})[gk]) and g or {}) do
|
||||
for _, text in pairs((type(c) == "table" and type(c.text) == "table" and G.P_CENTERS[ck]) and c.text or {}) do
|
||||
if type(text) == "string" and (text:find("discard") or text:find("Discard")) then
|
||||
survival[#survival + 1] = {id = ck}
|
||||
break
|
||||
end
|
||||
end
|
||||
end
|
||||
end
|
||||
end, nil, nil, nil, nil, false, true)
|
||||
|
||||
SMODS.Challenge {
|
||||
key = "survival",
|
||||
loc_txt = {name = "Survival"},
|
||||
jokers = {{id = "j_jane_survivor"}},
|
||||
rules = {modifiers = {{id = "discards", value = 0}}},
|
||||
restrictions = {banned_cards = survival},
|
||||
}
|
||||
|
||||
SMODS.Challenge {
|
||||
key = "downpour",
|
||||
loc_txt = {name = "Downpour"},
|
||||
loc_txt = {
|
||||
name = "Downpour",
|
||||
},
|
||||
rules = {custom = {{id = "jane_downpour1"}, {id = "jane_downpour2"}, {id = "jane_downpour3"}}},
|
||||
apply = function(_)
|
||||
for _, v in ipairs(rain_world_jokers) do
|
||||
|
|
|
|||
|
|
@ -5,6 +5,10 @@ SMODS.Sound({key = "e_moire", path = "e_moire.ogg"})
|
|||
SMODS.Sound({key = "e_polygloss", path = "e_polygloss.ogg"})
|
||||
|
||||
local function allow_moire()
|
||||
if Cryptid then
|
||||
return true
|
||||
end
|
||||
|
||||
for _, v in pairs(SMODS.find_card("j_jane_saint")) do
|
||||
if v.ability.extra.is_attuned then
|
||||
return true
|
||||
|
|
@ -23,7 +27,7 @@ SMODS.Edition({
|
|||
loc_txt = {
|
||||
name = "Polygloss",
|
||||
label = "Polygloss",
|
||||
text = Jane.cry and {
|
||||
text = Cryptid and {
|
||||
"{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",
|
||||
|
|
@ -38,7 +42,7 @@ SMODS.Edition({
|
|||
chips = 12,
|
||||
x_mult = 1.2,
|
||||
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},
|
||||
weight = 10,
|
||||
|
|
@ -87,7 +91,7 @@ function Sprite:draw_shader(_shader, ...)
|
|||
end
|
||||
end
|
||||
|
||||
local jumbo_modifier = Jane.cry and 100 or 2
|
||||
local jumbo_modifier = Cryptid and 100 or 2
|
||||
|
||||
local jumbo = SMODS.Edition({
|
||||
key = "jumbo",
|
||||
|
|
@ -119,19 +123,12 @@ local jumbo = SMODS.Edition({
|
|||
|
||||
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
|
||||
card:add_to_deck()
|
||||
end
|
||||
|
||||
Jane.resize(card, Jane.config.wee_sizemod)
|
||||
end,
|
||||
on_load = function(card)
|
||||
Jane.resize(card, Jane.config.wee_sizemod)
|
||||
end,
|
||||
on_remove = function(card)
|
||||
if not card.Jane_jumbo then
|
||||
return
|
||||
|
|
@ -146,10 +143,6 @@ local jumbo = SMODS.Edition({
|
|||
|
||||
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
|
||||
card:add_to_deck()
|
||||
end
|
||||
|
|
@ -158,7 +151,7 @@ local jumbo = SMODS.Edition({
|
|||
end,
|
||||
sound = {sound = "jane_e_jumbo", per = 1, vol = 0.5},
|
||||
weight = 5,
|
||||
extra_cost = 2,
|
||||
extra_cost = 5,
|
||||
in_shop = true,
|
||||
shader = false,
|
||||
apply_to_float = false,
|
||||
|
|
@ -171,21 +164,13 @@ function Card:set_ability(...)
|
|||
local is_jumbo = self.edition and self.edition.jane_jumbo
|
||||
|
||||
if is_jumbo then
|
||||
if Jane.cry then
|
||||
jumbo.on_remove(self)
|
||||
else
|
||||
Jane.resize(self)
|
||||
end
|
||||
jumbo.on_remove(self)
|
||||
end
|
||||
|
||||
local ret = orig_set_ability(self, ...)
|
||||
|
||||
if is_jumbo then
|
||||
if Jane.cry then
|
||||
jumbo.on_apply(self)
|
||||
else
|
||||
Jane.resize(self, Jane.config.wee_sizemod)
|
||||
end
|
||||
jumbo.on_apply(self)
|
||||
end
|
||||
|
||||
return ret
|
||||
|
|
@ -201,15 +186,16 @@ SMODS.Edition({
|
|||
"{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},
|
||||
weight = 1,
|
||||
weight = 2,
|
||||
extra_cost = 10,
|
||||
in_shop = true,
|
||||
shader = "moire",
|
||||
in_pool = allow_moire,
|
||||
apply_to_float = false,
|
||||
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,
|
||||
loc_vars = function(self, _, _)
|
||||
return {vars = {self.config.e_chips, self.config.e_mult}}
|
||||
|
|
|
|||
119
src/joker.lua
119
src/joker.lua
|
|
@ -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 {
|
||||
px = 71,
|
||||
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_tick", path = "corrupt_tick.ogg"})
|
||||
|
||||
local exotic = Jane.cry and "cry_exotic" or 4
|
||||
local exotic = Cryptid and "cry_exotic" or 4
|
||||
|
||||
local food = {
|
||||
"j_gros_michel",
|
||||
|
|
@ -49,7 +49,7 @@ local granddad_palette = {
|
|||
}
|
||||
|
||||
local function destructible(card)
|
||||
return card.ability.consumeable and not card.highlighted and not (card.ability or {}).eternal
|
||||
return not card.highlighted and not (card.ability or {}).eternal
|
||||
end
|
||||
|
||||
local function food_jokers_count()
|
||||
|
|
@ -138,21 +138,7 @@ 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 {
|
||||
SMODS.Joker {
|
||||
key = "escapey",
|
||||
atlas = "janeescapey",
|
||||
pronouns = "they_them",
|
||||
|
|
@ -161,6 +147,7 @@ local esc = SMODS.Joker {
|
|||
text = {
|
||||
"{s:1.25}Use to sell {C:attention,s:1.25}tags",
|
||||
"{s:1.25}for {X:money,C:white,s:1.25}$#1#X{s:1.25} each",
|
||||
"{C:inactive,s:1.25}(Max of {C:money,s:1.25}$#2#{C:inactive,s:1.25})",
|
||||
"If any {C:attention}consumables",
|
||||
"are unselected, sell",
|
||||
"those for {C:money}$#3# {}instead",
|
||||
|
|
@ -168,7 +155,7 @@ local esc = SMODS.Joker {
|
|||
"{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"},
|
||||
pos = {x = 0, y = 0},
|
||||
sinis = {x = 2, y = 0},
|
||||
|
|
@ -189,12 +176,6 @@ local esc = SMODS.Joker {
|
|||
|
||||
return {vars = {extra.xmoney, number_format(extra.max), extra.money, normal[1], normal[2], scared}}
|
||||
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)
|
||||
if not Jane.can_use() or card.debuff then
|
||||
return false
|
||||
|
|
@ -213,7 +194,7 @@ local esc = SMODS.Joker {
|
|||
return false
|
||||
end,
|
||||
Bakery_use_button_text = function(_, card)
|
||||
return card.ability.extra.escape_label
|
||||
return card.debuff and "DEBUFFED" or "ESCAPE"
|
||||
end,
|
||||
Bakery_use_joker = function(self, card)
|
||||
if card.debuff then
|
||||
|
|
@ -255,19 +236,12 @@ local esc = SMODS.Joker {
|
|||
end
|
||||
end
|
||||
|
||||
local tag_money = Jane.cry 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
|
||||
ease_dollars(math.ceil(times * extra.money + tag_money * tag_times))
|
||||
local tags = math.min(G.GAME.dollars, extra.max) * (math.pow(extra.xmoney, xtimes) - 1)
|
||||
ease_dollars(math.ceil(times * extra.money + tags))
|
||||
end,
|
||||
tag_threshold = 30,
|
||||
}
|
||||
|
||||
local _ = Jane.cry or table.insert(
|
||||
esc.loc_txt.text,
|
||||
3,
|
||||
"{C:inactive,s:1.25}(Max of {C:money,s:1.25}$#2#{C:inactive,s:1.25})"
|
||||
)
|
||||
|
||||
local maxie_quotes = {
|
||||
normal = {
|
||||
"Hey! I hope we can become great friends together!",
|
||||
|
|
@ -296,7 +270,7 @@ SMODS.Joker {
|
|||
"{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},
|
||||
sinis = {x = 2, y = 0},
|
||||
soul_pos = {x = 1, y = 0},
|
||||
|
|
@ -313,19 +287,14 @@ SMODS.Joker {
|
|||
},
|
||||
}
|
||||
end,
|
||||
calculate = function(self, card, context)
|
||||
local _ = context.starting_shop and self:add_to_deck(card, false)
|
||||
end,
|
||||
add_to_deck = function(_, card, from_debuff)
|
||||
if from_debuff then
|
||||
return
|
||||
end
|
||||
|
||||
calculate = function(_, card, context)
|
||||
local min = math.min(card.ability.extra.choices, maxie_limit)
|
||||
card.ability.extra.choices = min
|
||||
|
||||
for _ = 1, min do
|
||||
SMODS.add_booster_to_shop()
|
||||
if context.starting_shop then
|
||||
for _ = 1, min do
|
||||
SMODS.add_booster_to_shop()
|
||||
end
|
||||
end
|
||||
end,
|
||||
}
|
||||
|
|
@ -403,7 +372,7 @@ SMODS.Joker {
|
|||
cost = 8,
|
||||
rarity = 3,
|
||||
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 acc = ""
|
||||
|
|
@ -447,12 +416,12 @@ SMODS.Joker {
|
|||
update = function(_, card, _)
|
||||
if card.added_to_deck and card.children.center and card.children.floating_sprite then
|
||||
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.floating_sprite:set_sprite_pos({x = Jane.sinister and 2 or 1, y = y})
|
||||
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
|
||||
card:juice_up(0, math.random() * (level - 2) / #Jane.rarity_ids)
|
||||
|
|
@ -460,7 +429,7 @@ SMODS.Joker {
|
|||
end,
|
||||
}
|
||||
|
||||
if Cryptid and Cryptid.aliases then
|
||||
if Cryptid then
|
||||
Cryptid.aliases["honey"] = "j_jane_honey"
|
||||
end
|
||||
|
||||
|
|
@ -470,7 +439,7 @@ function SMODS.poll_rarity(_pool_key, _rand_key)
|
|||
local max = 0
|
||||
|
||||
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
|
||||
|
||||
local rarity = orig_rarity(_pool_key, _rand_key)
|
||||
|
|
@ -542,7 +511,7 @@ SMODS.Joker {
|
|||
"{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},
|
||||
sinis = {x = 2, y = 0},
|
||||
soul_pos = {x = 1, y = 0},
|
||||
|
|
@ -641,12 +610,12 @@ SMODS.Joker {
|
|||
end,
|
||||
}
|
||||
|
||||
if Cryptid and Cryptid.aliases then
|
||||
if Cryptid then
|
||||
Cryptid.aliases["oxy"] = "j_jane_oxy"
|
||||
end
|
||||
|
||||
local operator = Jane.cry and "^" or "X"
|
||||
local operator_prefix = Jane.cry and "{X:dark_edition,C:mult}" or "{X:mult,C:white}"
|
||||
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",
|
||||
|
|
@ -655,16 +624,16 @@ SMODS.Joker {
|
|||
name = "Betmma",
|
||||
text = {
|
||||
operator_prefix .. "+" .. operator .. "#1#{C:mult} Mult{} for every",
|
||||
"{C:attention}" .. (Jane.cry and "Unique " or "") .. "Voucher{} redeemed",
|
||||
"{C:attention}unique Voucher redeemed",
|
||||
"{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},
|
||||
soul_pos = {x = 1, y = 0},
|
||||
blueprint_compat = true,
|
||||
cost = Jane.cry and 20 or 8,
|
||||
rarity = Jane.cry and 4 or 3,
|
||||
cost = Cryptid and 20 or 8,
|
||||
rarity = Cryptid and 4 or 3,
|
||||
loc_vars = function(_, _, center)
|
||||
return {vars = {center.ability.extra.tet, 1 + (voucher_count() * center.ability.extra.tet)}}
|
||||
end,
|
||||
|
|
@ -680,15 +649,15 @@ SMODS.Joker {
|
|||
|
||||
return {
|
||||
card = card,
|
||||
colour = Jane.cry and G.C.jane_RGB or nil,
|
||||
message = Jane.cry and (operator .. number_format(num)) or nil,
|
||||
[Jane.cry and "e_mult" or "x_mult"] = num,
|
||||
colour = Cryptid and G.C.jane_RGB or nil,
|
||||
message = Cryptid and (operator .. number_format(num)) or nil,
|
||||
[Cryptid and "e_mult" or "x_mult"] = num,
|
||||
}, true
|
||||
end
|
||||
end,
|
||||
}
|
||||
|
||||
if not Jane.cry then
|
||||
if not Cryptid then
|
||||
return
|
||||
end
|
||||
|
||||
|
|
@ -706,8 +675,8 @@ SMODS.Joker {
|
|||
soul_pos = {x = 1, y = 0},
|
||||
atlas = "jane7granddad",
|
||||
blueprint_compat = true,
|
||||
cost = Jane.cry and 49 or 7,
|
||||
rarity = Jane.cry and exotic or 3,
|
||||
cost = Cryptid and 49 or 7,
|
||||
rarity = Cryptid and exotic or 3,
|
||||
loc_vars = function(_, _, center)
|
||||
return {vars = {center.ability.shopslots}}
|
||||
end,
|
||||
|
|
@ -726,19 +695,19 @@ 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, Jane.cry and 5 or 4)
|
||||
local rnd = pseudorandom(pseudoseed("granddad"), 1, Cryptid and 5 or 4)
|
||||
|
||||
if rnd == 1 then
|
||||
return {
|
||||
message = Jane.cry and "+777" or "+77",
|
||||
chips = Jane.cry and 777 or 77,
|
||||
message = Cryptid and "+777" or "+77",
|
||||
chips = Cryptid and 777 or 77,
|
||||
colour = palette,
|
||||
card = card,
|
||||
}, true
|
||||
elseif rnd == 2 then
|
||||
return {
|
||||
message = Jane.cry and "+777 Mult" or "+77 Mult",
|
||||
mult = Jane.cry and 777 or 77,
|
||||
message = Cryptid and "+777 Mult" or "+77 Mult",
|
||||
mult = Cryptid and 777 or 77,
|
||||
colour = palette,
|
||||
card = card,
|
||||
}, true
|
||||
|
|
@ -751,8 +720,8 @@ SMODS.Joker {
|
|||
}, true
|
||||
elseif rnd == 4 then
|
||||
return {
|
||||
message = Jane.cry and "X7 Mult" or "X1.77 Mult",
|
||||
x_mult = Jane.cry and 7 or 1.77,
|
||||
message = Cryptid and "X7 Mult" or "X1.77 Mult",
|
||||
x_mult = Cryptid and 7 or 1.77,
|
||||
colour = palette,
|
||||
card = card,
|
||||
}, true
|
||||
|
|
@ -782,8 +751,8 @@ SMODS.Joker {
|
|||
pos = {x = 0, y = 0},
|
||||
soul_pos = {x = 1, y = 0},
|
||||
config = {extra = {base = 2}},
|
||||
cost = Jane.cry and 20 or 8,
|
||||
rarity = Jane.cry and 4 or 3,
|
||||
rarity = 3,
|
||||
cost = 8,
|
||||
blueprint_compat = true,
|
||||
loc_vars = function(_, _, card)
|
||||
return {vars = {card.ability.extra.base ^ food_jokers_count()}}
|
||||
|
|
@ -792,7 +761,7 @@ SMODS.Joker {
|
|||
local count = food_jokers_count()
|
||||
|
||||
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,
|
||||
}
|
||||
|
|
|
|||
35
src/main.lua
35
src/main.lua
|
|
@ -1,15 +1,17 @@
|
|||
Jane = {
|
||||
cry = not not G.P_CENTERS.j_cry_m,
|
||||
config = {
|
||||
wee_sizemod = 1.25,
|
||||
texture_pack = "default",
|
||||
wee_sizemod = math.sqrt(2),
|
||||
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"}
|
||||
|
||||
if not Jane.misprintize then
|
||||
|
|
@ -113,7 +115,7 @@ function Jane.card_status_text(
|
|||
end
|
||||
|
||||
function Jane.empowered()
|
||||
if Jane.cry then
|
||||
if Cryptid then
|
||||
add_tag(Tag("tag_cry_empowered"))
|
||||
return
|
||||
end
|
||||
|
|
@ -199,14 +201,13 @@ function Jane.resize(card, mod)
|
|||
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({
|
||||
delay = delay,
|
||||
timer = timer,
|
||||
trigger = (delay and not trigger) and "after" or trigger,
|
||||
blocking = blocking,
|
||||
blockable = blockable,
|
||||
no_delete = no_delete,
|
||||
func = function(...)
|
||||
local ret = func(...)
|
||||
return ret == nil and true or ret
|
||||
|
|
@ -214,20 +215,6 @@ function Jane.q(func, delay, timer, trigger, blockable, blocking, no_delete)
|
|||
}))
|
||||
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
|
||||
|
||||
function CardArea:can_highlight(...)
|
||||
|
|
@ -317,7 +304,7 @@ function Game:update(dt)
|
|||
local ante = G.GAME.round_resets.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_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()
|
||||
|
||||
if not Jane.bans_done then
|
||||
|
|
@ -364,10 +351,6 @@ SMODS.Atlas {
|
|||
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({
|
||||
"back",
|
||||
"blind",
|
||||
|
|
|
|||
|
|
@ -133,11 +133,10 @@ function Jane.misprintize_tbl(name, ref_tbl, ref_value, clear, override, stack,
|
|||
for k, v in pairs(tbl) do
|
||||
if (type(tbl[k]) ~= "table") or is_number(tbl[k]) then
|
||||
if is_number(tbl[k]) and not
|
||||
(k == "x_chips" and not Jane.cry) and not
|
||||
(k == "h_x_chips" and not Jane.cry) and not
|
||||
(k == "x_chips" and not Cryptid) and not
|
||||
(k == "h_x_chips" and not Cryptid) and not
|
||||
(k == "id") and not
|
||||
(k == "colour") and not
|
||||
(k == "nominal") and not
|
||||
(k == "suit_nominal") and not
|
||||
(k == "base_nominal") and not
|
||||
(k == "face_nominal") and not
|
||||
|
|
|
|||
454
src/slugcat.lua
454
src/slugcat.lua
|
|
@ -12,7 +12,7 @@ SMODS.Sound({
|
|||
select_music_track = function()
|
||||
for _, v in pairs(SMODS.find_card("j_jane_saint")) do
|
||||
if v.ability.extra.is_attuned then
|
||||
return 201
|
||||
return Jane.sinister and -1 / 0 or 10
|
||||
end
|
||||
end
|
||||
|
||||
|
|
@ -25,13 +25,9 @@ SMODS.Sound({
|
|||
path = "music_attuned_sinister.ogg",
|
||||
volume = 1,
|
||||
select_music_track = function()
|
||||
if not Jane.sinister then
|
||||
return -1 / 0
|
||||
end
|
||||
|
||||
for _, v in pairs(SMODS.find_card("j_jane_saint")) do
|
||||
if v.ability.extra.is_attuned then
|
||||
return 202
|
||||
return Jane.sinister and 10 or -1 / 0
|
||||
end
|
||||
end
|
||||
|
||||
|
|
@ -58,8 +54,8 @@ for _, v in pairs({
|
|||
}
|
||||
end
|
||||
|
||||
local epic = Jane.cry and "cry_epic" or 3
|
||||
local exotic = Jane.cry and "cry_exotic" or 4
|
||||
local epic = Cryptid and "cry_epic" or 3
|
||||
local exotic = Cryptid and "cry_exotic" or 4
|
||||
|
||||
SMODS.Rarity {
|
||||
key = "junk",
|
||||
|
|
@ -128,10 +124,10 @@ SMODS.Joker {
|
|||
loc_txt = {
|
||||
name = "The Survivor",
|
||||
text = {
|
||||
"All cards held in",
|
||||
"hand also {C:attention}score" .. (Jane.cry and " {}and" or ""),
|
||||
Jane.cry and "considered as the" or nil,
|
||||
Jane.cry and "{C:attention}first {}played card" or nil,
|
||||
"All cards held in hand",
|
||||
"{C:attention}contribute to scoring" .. (Cryptid and " {}and" or ""),
|
||||
Cryptid and "are all considered as" or nil,
|
||||
Cryptid and "the {C:attention}first played card" or nil,
|
||||
},
|
||||
},
|
||||
pos = {x = 0, y = 0},
|
||||
|
|
@ -148,9 +144,11 @@ SMODS.Joker {
|
|||
loc_txt = {
|
||||
name = "The Hunter",
|
||||
text = {
|
||||
"{E:1}Succumbs to the {X:black,C:white,E:1}Rot{},",
|
||||
(Jane.cry and "creating an {C:spectral}Empowered" or "creating a {C:dark_edition}Negative"),
|
||||
(Jane.cry and "{C:spectral}Tag" or "{C:spectral}Soul") .. " {}after #1#",
|
||||
"{C:blue}Provides infinite hands",
|
||||
"{C:red,s,E:1}Succumbs to the Rot {}and creates",
|
||||
(Cryptid and "an {C:spectral}Empowered Tag" or "a {C:dark_edition}Negative {C:spectral}Soul") .. " {}after #1#",
|
||||
"When {C:attention}sold#2#{}, turns#3#",
|
||||
"#4#{C:red}The Rot{} without rewards",
|
||||
},
|
||||
},
|
||||
config = {extra = {rounds_left = hunter[1]}},
|
||||
|
|
@ -159,15 +157,14 @@ SMODS.Joker {
|
|||
blueprint_compat = false,
|
||||
perishable_compat = false,
|
||||
soul_pos = {x = 1, y = 0},
|
||||
cost = Jane.cry and 15 or 8,
|
||||
rarity = Jane.cry and epic or 3,
|
||||
cost = Cryptid and 15 or 8,
|
||||
rarity = Cryptid and epic or 3,
|
||||
loc_vars = function(_, info_queue, card)
|
||||
local function rounds(amount)
|
||||
return " round" .. ((math.abs(amount) > 1 or math.abs(amount) == 0) and "s" or "")
|
||||
end
|
||||
|
||||
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 sold = rounds_left - hunter[5]
|
||||
|
||||
|
|
@ -221,51 +218,72 @@ SMODS.Joker {
|
|||
spawn_rot()
|
||||
end
|
||||
|
||||
if context.blueprint or
|
||||
context.individual or
|
||||
context.repetition or
|
||||
context.retrigger_joker or
|
||||
not context.end_of_round then
|
||||
if context.blueprint then
|
||||
return
|
||||
end
|
||||
|
||||
card.ability.extra.rounds_left = card.ability.extra.rounds_left - 1
|
||||
local rl = card.ability.extra.rounds_left
|
||||
Jane.card_status_text(card, tostring(card.ability.extra.rounds_left), nil, nil, G.C.RED, nil, nil, nil, nil,
|
||||
nil, "generic1")
|
||||
|
||||
if rl > hunter[2] then
|
||||
card:juice_up(0.6, 0.1)
|
||||
elseif rl > hunter[3] then
|
||||
if rl == hunter[2] then
|
||||
Jane.play_sound("jane_gore1")
|
||||
if context.selling_self and card.ability.extra.rounds_left <= hunter[5] then
|
||||
spawn_rot()
|
||||
elseif not context.individual and not context.repetition and not context.retrigger_joker then
|
||||
if G.GAME.round_resets.hands <= 0 then
|
||||
G.GAME.round_resets.hands = 1
|
||||
end
|
||||
|
||||
card:juice_up(0.6, 0.1)
|
||||
elseif rl > hunter[4] then
|
||||
if rl == hunter[3] then
|
||||
Jane.play_sound("jane_gore3")
|
||||
if not card.hunter_prep then
|
||||
card.hunter_prep = true
|
||||
|
||||
Jane.q(function()
|
||||
card.hunter_prep = nil
|
||||
|
||||
if G.GAME.current_round.hands_left < G.GAME.round_resets.hands then
|
||||
ease_hands_played(G.GAME.round_resets.hands - G.GAME.current_round.hands_left)
|
||||
end
|
||||
end)
|
||||
end
|
||||
|
||||
card:juice_up(0.6, 0.1)
|
||||
elseif rl > hunter[5] then
|
||||
if rl == hunter[4] then
|
||||
Jane.play_sound("jane_gore8")
|
||||
if not context.end_of_round then
|
||||
return
|
||||
end
|
||||
|
||||
card:juice_up(0.6, 0.1)
|
||||
Jane.play_sound("jane_warning_heartbeat")
|
||||
elseif rl > 0 then
|
||||
if rl == hunter[5] then
|
||||
Jane.play_sound("jane_gore4")
|
||||
end
|
||||
card.hunter_prep = nil
|
||||
card.ability.extra.rounds_left = card.ability.extra.rounds_left - 1
|
||||
local rl = card.ability.extra.rounds_left
|
||||
Jane.card_status_text(card, tostring(card.ability.extra.rounds_left), nil, nil, G.C.RED, nil, nil, nil, nil,
|
||||
nil, "generic1")
|
||||
|
||||
card:juice_up(1.8, 0.3)
|
||||
Jane.play_sound("jane_warning_heartbeat")
|
||||
else
|
||||
card:juice_up(2, 0.8)
|
||||
Jane.play_sound("jane_warning_heartbeat")
|
||||
Jane.q(die, 0)
|
||||
if rl > hunter[2] then
|
||||
card:juice_up(0.6, 0.1)
|
||||
elseif rl > hunter[3] then
|
||||
if rl == hunter[2] then
|
||||
Jane.play_sound("jane_gore1")
|
||||
end
|
||||
|
||||
card:juice_up(0.6, 0.1)
|
||||
elseif rl > hunter[4] then
|
||||
if rl == hunter[3] then
|
||||
Jane.play_sound("jane_gore3")
|
||||
end
|
||||
|
||||
card:juice_up(0.6, 0.1)
|
||||
elseif rl > hunter[5] then
|
||||
if rl == hunter[4] then
|
||||
Jane.play_sound("jane_gore8")
|
||||
end
|
||||
|
||||
card:juice_up(0.6, 0.1)
|
||||
Jane.play_sound("jane_warning_heartbeat")
|
||||
elseif rl > 0 then
|
||||
if rl == hunter[5] then
|
||||
Jane.play_sound("jane_gore4")
|
||||
end
|
||||
|
||||
card:juice_up(1.8, 0.3)
|
||||
Jane.play_sound("jane_warning_heartbeat")
|
||||
else
|
||||
card:juice_up(2, 0.8)
|
||||
Jane.play_sound("jane_warning_heartbeat")
|
||||
Jane.q(die, 0)
|
||||
end
|
||||
end
|
||||
end,
|
||||
}
|
||||
|
|
@ -275,90 +293,41 @@ SMODS.Joker {
|
|||
atlas = "janegourmand",
|
||||
loc_txt = {
|
||||
name = "The Gourmand",
|
||||
text = {"All cards are {C:dark_edition}Jumbo"},
|
||||
text = {
|
||||
"Values on {C:attention}consumables",
|
||||
"are {C:attention}multiplied{} by {C:attention}#1#",
|
||||
"when they are created",
|
||||
"{C:inactive}(If possible)",
|
||||
},
|
||||
},
|
||||
loc_vars = function(_, _, center)
|
||||
return {vars = {center.ability.modifier}}
|
||||
end,
|
||||
config = {modifier = 2},
|
||||
pos = {x = 0, y = 0},
|
||||
soul_pos = {x = 1, y = 0},
|
||||
blueprint_compat = false,
|
||||
cost = 20,
|
||||
rarity = 4,
|
||||
loc_vars = function(_, info_queue)
|
||||
info_queue[#info_queue + 1] = G.P_CENTERS.e_jane_jumbo
|
||||
end,
|
||||
cost = 8,
|
||||
rarity = 3,
|
||||
}
|
||||
|
||||
local function add_to_consumable_ability_by(n)
|
||||
local f = SMODS.Mods.Roland.qol[1]
|
||||
|
||||
local function new(v)
|
||||
return type(v) == "number" and v + n or type(v) == "table" and f(v):map(new):table() or v
|
||||
end
|
||||
|
||||
---@param card Card
|
||||
return function(card)
|
||||
local ability = card.ability or {}
|
||||
|
||||
local function go(key)
|
||||
---@type { [string]: number }|number
|
||||
local value = ability[key]
|
||||
--print(key)
|
||||
if not value then
|
||||
return
|
||||
end
|
||||
|
||||
if type(value) == "number" then
|
||||
ability[key] = value + n
|
||||
return
|
||||
end
|
||||
|
||||
if type(value) ~= "table" then
|
||||
return
|
||||
end
|
||||
|
||||
local new_value = f(value):map(new):table()
|
||||
|
||||
f(new_value):each(function(v, k)
|
||||
ability[k] = v
|
||||
end)
|
||||
|
||||
ability[key] = new_value
|
||||
end
|
||||
|
||||
local center_key = (card.config or {}).center_key
|
||||
|
||||
if center_key and center_key:sub(1, 2) == "c_" then
|
||||
f {"extra", "consumeable"}:each(go)
|
||||
end
|
||||
end
|
||||
end
|
||||
|
||||
local orig_set_ability = Card.set_ability
|
||||
|
||||
---@diagnostic disable-next-line: duplicate-set-field
|
||||
function Card:set_ability(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().key ~= "c_base" and
|
||||
string.sub(self:gc().key, 1, 2) == "c_" then
|
||||
if Jane.cry or not ((SMODS.Mods.Roland or {}).qol or {})[1] then
|
||||
local mod = 1
|
||||
local mod = 1
|
||||
|
||||
for _, v in pairs(SMODS.find_card("j_jane_rivulet")) do
|
||||
mod = mod * v.ability.modifier
|
||||
end
|
||||
|
||||
Jane.misprintize(self, {min = mod, max = mod}, nil, true)
|
||||
else
|
||||
local mod = 0
|
||||
|
||||
for _, v in pairs(SMODS.find_card("j_jane_rivulet")) do
|
||||
mod = mod + v.ability.modifier
|
||||
end
|
||||
|
||||
add_to_consumable_ability_by(mod)(self)
|
||||
for _, v in pairs(SMODS.find_card("j_jane_gourmand")) do
|
||||
mod = mod * v.ability.modifier
|
||||
end
|
||||
|
||||
Jane.misprintize(self, {min = mod, max = mod}, nil, true)
|
||||
end
|
||||
end
|
||||
|
||||
|
|
@ -368,31 +337,20 @@ SMODS.Joker {
|
|||
loc_txt = {
|
||||
name = "The Artificer",
|
||||
text = {
|
||||
"Use to {C:red}destroy",
|
||||
"Grants the {C:green}ability{} to {C:red}destroy",
|
||||
"selected {C:attention}playing cards",
|
||||
not Jane.cry and "{C:red,E:1}Self-destructs" or nil,
|
||||
not Jane.cry and "after {C:attention}#1# #2#" or nil,
|
||||
},
|
||||
},
|
||||
pos = {x = 0, y = 0},
|
||||
soul_pos = {x = 1, y = 0},
|
||||
config = {extra = {uses = 2}},
|
||||
eternal_compat = false,
|
||||
blueprint_compat = false,
|
||||
cost = Jane.cry and 50 or 7,
|
||||
rarity = Jane.cry and exotic or 3,
|
||||
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
|
||||
return {vars = {uses, uses == 1 and "use" or "uses"}}
|
||||
end,
|
||||
cost = Cryptid and 50 or 20,
|
||||
rarity = exotic,
|
||||
Bakery_use_button_text = function(_, _) return "DESTROY" end,
|
||||
Bakery_can_use = function(_, card)
|
||||
return not card.debuff and Jane.can_use() and next(G.hand.highlighted)
|
||||
end,
|
||||
Bakery_use_joker = function(_, card)
|
||||
Bakery_use_joker = function(_, _)
|
||||
for _, v in pairs(SMODS.find_card("j_jane_oxy")) do
|
||||
Jane.oxy(v, G.hand.highlighted)
|
||||
end
|
||||
|
|
@ -400,17 +358,6 @@ SMODS.Joker {
|
|||
for _, v in pairs(G.hand.highlighted) do
|
||||
v:start_dissolve()
|
||||
end
|
||||
|
||||
if Jane.cry then
|
||||
return
|
||||
end
|
||||
|
||||
card.ability.extra.uses = card.ability.extra.uses - 1
|
||||
local _ = card.ability.extra.uses <= 0 and card:start_dissolve()
|
||||
|
||||
local _ = card.ability.extra.uses == 1 and juice_card_until(card, function()
|
||||
return card.area == G.jokers
|
||||
end, true)
|
||||
end,
|
||||
}
|
||||
|
||||
|
|
@ -422,11 +369,9 @@ SMODS.Joker {
|
|||
loc_txt = {
|
||||
name = "The Spearmaster",
|
||||
text = {
|
||||
"You can choose {C:attention}any",
|
||||
"number of cards",
|
||||
"in {C:attention}Booster Packs",
|
||||
"{C:attention}Booster Packs{} have",
|
||||
"{C:green}+#1#{} additional cards",
|
||||
"You can choose {C:attention}any number of cards",
|
||||
"after opening {C:attention}any Booster Pack",
|
||||
"{C:attention}Booster Packs{} have {C:green}+#1#{} additional cards",
|
||||
},
|
||||
},
|
||||
config = {extra = {choices = 1}},
|
||||
|
|
@ -439,8 +384,8 @@ SMODS.Joker {
|
|||
pos = {x = 0, y = 0},
|
||||
soul_pos = {x = 1, y = 0},
|
||||
blueprint_compat = false,
|
||||
cost = Jane.cry and 12 or 20,
|
||||
rarity = Jane.cry and epic or 4,
|
||||
cost = Cryptid and 12 or 20,
|
||||
rarity = Cryptid and epic or 4,
|
||||
Bakery_can_use = function(_, card)
|
||||
if card.debuff or not
|
||||
Jane.can_use() or not
|
||||
|
|
@ -516,21 +461,15 @@ SMODS.Joker {
|
|||
loc_txt = {
|
||||
name = "The Rivulet",
|
||||
text = {
|
||||
"Values on {C:attention}consumables",
|
||||
"are {C:attention}" .. (Jane.cry and "multiplied" or "added") .. "{} by {C:attention}#1#" .. (Jane.cry and "" or "{} when"),
|
||||
(Jane.cry and "when " or "") .. "they are created",
|
||||
"{C:inactive}(If possible)",
|
||||
"Non-{C:dark_edition}editioned{} cards are",
|
||||
"{C:attention}given a random {C:dark_edition}Edition",
|
||||
},
|
||||
},
|
||||
config = {modifier = Jane.cry and 2 or 1},
|
||||
pos = {x = 0, y = 0},
|
||||
soul_pos = {x = 1, y = 0},
|
||||
blueprint_compat = false,
|
||||
cost = 8,
|
||||
rarity = 3,
|
||||
loc_vars = function(_, _, center)
|
||||
return {vars = {center.ability.modifier}}
|
||||
end,
|
||||
cost = 20,
|
||||
rarity = 4,
|
||||
}
|
||||
|
||||
local orig_draw = Card.draw
|
||||
|
|
@ -555,11 +494,11 @@ function Card:draw(layer)
|
|||
if cen and
|
||||
self.facing == "front" and
|
||||
self.config and
|
||||
(self.added_to_deck or (self.area and self.area == G.hand)) and
|
||||
not self.edition and
|
||||
(self.added_to_deck or (self.area and self.area == G.hand)) and not
|
||||
self.edition and
|
||||
(self.area == G.consumeables or cen.set ~= "Booster") and
|
||||
next(SMODS.find_card("j_jane_gourmand")) then
|
||||
self:set_edition("e_jane_jumbo", true, true)
|
||||
next(SMODS.find_card("j_jane_rivulet")) then
|
||||
self:set_edition(poll_edition("rivulet_edition", nil, true, true))
|
||||
end
|
||||
|
||||
orig_draw(self, layer)
|
||||
|
|
@ -576,28 +515,44 @@ function Card:set_debuff(should_debuff)
|
|||
end
|
||||
end
|
||||
|
||||
local function attunement()
|
||||
return (G.GAME or {}).weeckweeck and 2 or (Cryptid and 1.002 or 1.25)
|
||||
end
|
||||
|
||||
SMODS.Joker {
|
||||
key = "saint",
|
||||
atlas = "janesaint",
|
||||
loc_txt = {
|
||||
name = {"{}", "#1#{C:jane_RGB,s:0.8}#2#", "{C:jane_RGB,s:1.6}#3#"},
|
||||
text = {
|
||||
"{C:attention}Use {}to toggle itself or",
|
||||
"other Jokers to its",
|
||||
"left's {C:legendary}Eternal{} sticker",
|
||||
"{C:attention}#4#{}#5#{C:spectral}#6#{}#7#",
|
||||
"{C:inactive,s:1.25}#8#{C:attention,s:1.25}#9#{C:inactive,s:1.25}#10#",
|
||||
Jane.cry and "{C:inactive}(Gateway has no downside)" or nil,
|
||||
name = "The Saint{C:jane_RGB}#1#",
|
||||
text = Cryptid and {
|
||||
"{C:attention}Use {}to toggle {X:legendary,C:white}Eternal{} stickers to the left",
|
||||
"{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: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: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},
|
||||
soul_pos = {x = 1, y = 0},
|
||||
cost = 20,
|
||||
rarity = 4,
|
||||
blueprint_compat = true,
|
||||
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 karma = extra.karma
|
||||
|
|
@ -605,26 +560,36 @@ SMODS.Joker {
|
|||
local attuned = karma >= max_karma
|
||||
|
||||
return {
|
||||
vars = {
|
||||
attuned and "" or "The Saint",
|
||||
attuned and "The" or "",
|
||||
attuned and "Attuned" or "",
|
||||
vars = Cryptid and {
|
||||
attuned and " (Attuned)" or "",
|
||||
attuned and "" or "Attune ",
|
||||
attuned and "" or "at ",
|
||||
attuned and (Jane.cry and "Gateways " or "Spectrals ") or
|
||||
max_karma .. (Jane.cry and " Gateways" or " Spectrals"),
|
||||
attuned and "add Joker slots" or "",
|
||||
attuned and "[Currently " or "[",
|
||||
attuned and "+" .. karma or karma,
|
||||
attuned and "]" or " / " .. max_karma .. "]",
|
||||
attuned and "" or "after using ",
|
||||
attuned and "^^" .. attunement() or max_karma,
|
||||
attuned and "" or " Gateways",
|
||||
attuned and " Mult" or "",
|
||||
attuned and "" or "[",
|
||||
attuned and "" or 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,
|
||||
update = function(_, card, _)
|
||||
if card.edition and card.edition.Roland_frozen then
|
||||
card:set_edition("e_base")
|
||||
elseif card.children.floating_sprite then
|
||||
card.children.floating_sprite:set_sprite_pos({x = card.ability.extra.is_attuned and 2 or 1, y = 0})
|
||||
card.debuff_immune = card.ability.extra.is_attuned
|
||||
|
||||
if card.added_to_deck and card.children.center and card.children.floating_sprite then
|
||||
local extra = card.ability.extra
|
||||
card.children.floating_sprite:set_sprite_pos({x = extra.is_attuned and 2 or 1, y = 0})
|
||||
end
|
||||
end,
|
||||
calculate = function(_, card, context)
|
||||
|
|
@ -666,9 +631,49 @@ SMODS.Joker {
|
|||
end, 1)
|
||||
end
|
||||
|
||||
if extra.karma >= max_karma then
|
||||
local karma = (extra.is_attuning or extra.is_attuned) and 0 or extra.karma
|
||||
G.jokers:change_size(karma * extra.jokers)
|
||||
if extra.is_attuned then
|
||||
card.debuff = false
|
||||
|
||||
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()
|
||||
end
|
||||
|
||||
|
|
@ -679,9 +684,9 @@ SMODS.Joker {
|
|||
return
|
||||
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
|
||||
end
|
||||
|
||||
|
|
@ -697,7 +702,7 @@ SMODS.Joker {
|
|||
{message = "+" .. quota .. " Karma", colour = G.C.PALE_GREEN}
|
||||
)
|
||||
|
||||
local _ = extra.karma <= max_karma and card_eval_status_text(
|
||||
card_eval_status_text(
|
||||
card,
|
||||
"extra",
|
||||
nil,
|
||||
|
|
@ -710,49 +715,33 @@ SMODS.Joker {
|
|||
return
|
||||
end
|
||||
|
||||
G.jokers:change_size((extra.is_attuned and quota or extra.karma) * extra.jokers)
|
||||
ascend()
|
||||
end,
|
||||
Bakery_can_use = function(_, card)
|
||||
return Jane.can_use() and not card.debuff
|
||||
return not card.debuff and Jane.can_use()
|
||||
end,
|
||||
Bakery_use_joker = function(_, card)
|
||||
for joker_index = 1, math.max(card.rank - 1, 1) do
|
||||
local joker = G.jokers.cards[joker_index]
|
||||
joker:set_eternal(not joker.ability.eternal)
|
||||
Bakery_use_joker = function(self, card)
|
||||
if not self:Bakery_can_use(card) then
|
||||
return
|
||||
end
|
||||
|
||||
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()
|
||||
goto continue
|
||||
end
|
||||
|
||||
local edition = 1
|
||||
|
||||
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
|
||||
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:juice_up()
|
||||
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::
|
||||
return
|
||||
end
|
||||
end
|
||||
end,
|
||||
}
|
||||
|
||||
if Cryptid and Cryptid.aliases then
|
||||
if Cryptid then
|
||||
Cryptid.aliases["saint"] = "j_jane_saint"
|
||||
Cryptid.aliases["attuned"] = "j_jane_saint"
|
||||
Cryptid.aliases["the saint"] = "j_jane_saint"
|
||||
Cryptid.aliases["the attuned"] = "j_jane_saint"
|
||||
end
|
||||
|
||||
SMODS.Joker {
|
||||
|
|
@ -761,8 +750,9 @@ SMODS.Joker {
|
|||
loc_txt = {
|
||||
name = "The Rot",
|
||||
text = {
|
||||
Jane.cry 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,
|
||||
not Cryptid and "{C:inactive,E:1}Does nothing" or nil,
|
||||
Cryptid and "{C:attention}Duplicates itself{} at the" or nil,
|
||||
Cryptid and "end of {C:attention}every ante" or nil,
|
||||
},
|
||||
},
|
||||
pos = {x = 0, y = 0},
|
||||
|
|
@ -779,7 +769,7 @@ SMODS.Joker {
|
|||
|
||||
return not not next(SMODS.find_card("j_jane_rot"))
|
||||
end,
|
||||
calculate = Jane.cry and function(_, card, context)
|
||||
calculate = Cryptid and function(_, card, context)
|
||||
local function has_room()
|
||||
return G.jokers.config.card_count < G.jokers.config.card_limit
|
||||
end
|
||||
|
|
|
|||
|
|
@ -1,3 +1,10 @@
|
|||
SMODS.Atlas {
|
||||
key = "janertarots",
|
||||
px = 71,
|
||||
py = 95,
|
||||
path = Jane.config.texture_pack .. "/c_jane_reversetarots.png",
|
||||
}
|
||||
|
||||
SMODS.Sound({key = "draw", path = "draw.ogg"})
|
||||
|
||||
local function conjure(card, number)
|
||||
|
|
@ -183,8 +190,8 @@ SMODS.Consumable {
|
|||
loc_txt = {
|
||||
name = "Shadows",
|
||||
text = {
|
||||
"Create {C:attention}#1#{} random {C:dark_edition}Negative",
|
||||
"{C:attention}Perishable Jokers{}, set {C:money}sell",
|
||||
"Create {C:attention}#1#{} {C:green}random {C:dark_edition}Negative",
|
||||
"{C:attention}Perishable {C:attention}Jokers{}, set {C:money}sell",
|
||||
"{C:money}value {}of {C:attention}all Jokers {}to {C:money}$0",
|
||||
},
|
||||
},
|
||||
|
|
@ -249,13 +256,13 @@ SMODS.Consumable {
|
|||
key = "obfuscation",
|
||||
atlas = "janeacc",
|
||||
set = "Spectral",
|
||||
hidden = not Jane.cry,
|
||||
soul_rate = not Jane.cry and 0.003 or nil,
|
||||
soul_set = not Jane.cry and "Spectral" or nil,
|
||||
hidden = not Cryptid,
|
||||
soul_rate = not Cryptid and 0.003 or nil,
|
||||
soul_set = not Cryptid and "Spectral" or nil,
|
||||
loc_txt = {
|
||||
name = "Obfuscation",
|
||||
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}enhancement, and suit)",
|
||||
},
|
||||
|
|
@ -280,14 +287,14 @@ SMODS.Consumable {
|
|||
key = "rift",
|
||||
atlas = "janeacc",
|
||||
set = "Spectral",
|
||||
hidden = not Jane.cry,
|
||||
soul_rate = not Jane.cry and 0.003 or nil,
|
||||
soul_set = not Jane.cry and "Spectral" or nil,
|
||||
hidden = not Cryptid,
|
||||
soul_rate = not Cryptid and 0.003 or nil,
|
||||
soul_set = not Cryptid and "Spectral" or nil,
|
||||
loc_txt = {
|
||||
name = "Rift",
|
||||
text = {
|
||||
"{C:red}Reset {}your deck to a",
|
||||
"standard 52-card deck",
|
||||
"{C:attention}Reset {}your deck to a",
|
||||
"{C:attention}standard 52-card deck",
|
||||
},
|
||||
},
|
||||
pos = {x = 4, y = 4},
|
||||
|
|
|
|||
|
|
@ -1,4 +1,4 @@
|
|||
if not Jane.cry then
|
||||
if not Cryptid then
|
||||
return
|
||||
end
|
||||
|
||||
|
|
@ -97,7 +97,7 @@ SMODS.Consumable {
|
|||
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["jolly in a tarot"] = "c_jane_jokerinatarot"
|
||||
|
|
|
|||
|
|
@ -38,9 +38,6 @@ local function on_token_use(id)
|
|||
add_tag(t)
|
||||
end
|
||||
|
||||
local gourmand = G.P_TAGS.j_cry_gourmand and "j_cry_gourmand" or
|
||||
(G.P_TAGS.j_cry_gourmond and "j_cry_gourmond" or nil)
|
||||
|
||||
local vowels = {A = true, E = true, I = true, O = true, U = true}
|
||||
|
||||
for _, v in pairs({
|
||||
|
|
@ -55,7 +52,7 @@ for _, v in pairs({
|
|||
{"tag_uncommon", "Uncommon", 2, 1, 3},
|
||||
{"tag_rare", "Rare", 3, 1, 5},
|
||||
{"tag_cry_epic", "Epic", 4, 1, 8},
|
||||
{gourmand, "Gourmand", 5, 1, 4},
|
||||
{"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},
|
||||
|
|
@ -93,17 +90,14 @@ for _, v in pairs({
|
|||
{"tag_cry_scope", "Scope", 5, 7, 3},
|
||||
{"tag_cry_banana", "Banana", 0, 8, 4},
|
||||
}) do
|
||||
if v[1] and (Jane.cry or v[1]:sub(1, 7) ~= "tag_cry") then
|
||||
if Cryptid or v[1]:sub(1, 7) ~= "tag_cry" then
|
||||
SMODS.Consumable {
|
||||
key = "token_" .. v[1],
|
||||
set = "jane_tokens",
|
||||
atlas = "janetokens",
|
||||
loc_txt = {
|
||||
name = v[2] .. " Token",
|
||||
text = {
|
||||
"Creates a" .. (vowels[v[2]:sub(1, 1)] and "n" or ""),
|
||||
"{C:attention}" .. v[2] .. " Tag",
|
||||
},
|
||||
text = {"Creates a" .. (vowels[v[2]:sub(1, 1)] and "n" or "") .. " {C:attention}" .. v[2] .. " Tag"},
|
||||
},
|
||||
loc_vars = function(_, info_queue, _)
|
||||
info_queue[#info_queue + 1] = v[1] ~= "tag_cry_cat" and G.P_TAGS[v[1]] or nil
|
||||
|
|
@ -115,9 +109,7 @@ for _, v in pairs({
|
|||
can_divide = true,
|
||||
can_use = Jane.can_use,
|
||||
in_pool = function(_, _)
|
||||
return G.GAME.used_vouchers.v_jane_token_voucher or
|
||||
G.GAME.used_vouchers.v_jane_token_voucher_plus or
|
||||
G.GAME.modifiers.Roland_alt_swapper_deck
|
||||
return G.GAME.used_vouchers.v_jane_token_voucher or G.GAME.modifiers.Roland_alt_swapper_deck
|
||||
end,
|
||||
use = function(_, _, _, _)
|
||||
play_sound("jane_e_gilded", 1.25, 0.4)
|
||||
|
|
|
|||
|
|
@ -19,7 +19,7 @@ SMODS.Atlas {
|
|||
path = Jane.config.texture_pack .. "/v_jane_token_voucher_plus.png",
|
||||
}
|
||||
|
||||
if Jane.cry then
|
||||
if Cryptid then
|
||||
SMODS.Voucher {
|
||||
key = "jolly_voucher",
|
||||
atlas = "janejollyvoucher",
|
||||
|
|
|
|||
Loading…
Add table
Reference in a new issue