Compare commits
No commits in common. "main" and "1.7.17" have entirely different histories.
15 changed files with 175 additions and 262 deletions
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
54
lovely.toml
54
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)
|
||||
|
|
@ -203,8 +171,7 @@ self.jokers = CardArea(
|
|||
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)) *
|
||||
self.GAME.starting_params.consumable_slots - 1) *
|
||||
(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
|
||||
|
|
|
|||
|
|
@ -13,10 +13,11 @@
|
|||
"dependencies": [
|
||||
"Steamodded (>=1.0.0~BETA-1606b)",
|
||||
"Lovely (>=0.6)",
|
||||
"Bakery (>=3.2.0~*)"
|
||||
"Bakery (>=3.2.0~*)",
|
||||
"Roland (>=2.8.0~*)"
|
||||
],
|
||||
"conflicts": [
|
||||
"Jen"
|
||||
],
|
||||
"version": "1.11.0"
|
||||
"version": "1.7.17"
|
||||
}
|
||||
|
|
@ -153,7 +153,7 @@ local rain_world_jokers = {
|
|||
"j_jane_monk",
|
||||
"j_jane_survivor",
|
||||
"j_jane_spearmaster",
|
||||
"j_jane_gourmand",
|
||||
"j_jane_rivulet",
|
||||
"j_jane_saint",
|
||||
}
|
||||
|
||||
|
|
@ -631,7 +631,6 @@ back {
|
|||
text = {
|
||||
"{C:attention}Joker {}and {C:attention}Consumable",
|
||||
"slots are {C:attention}combined",
|
||||
"{C:attention}-1 {}Slot",
|
||||
},
|
||||
},
|
||||
alt_loc_txt = {
|
||||
|
|
@ -690,13 +689,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 +713,6 @@ back {
|
|||
end
|
||||
end,
|
||||
calculate = function(_, _, context)
|
||||
rebalance_orrery()
|
||||
G.GAME.mysterious = nil
|
||||
|
||||
if Jane.is_end_of_ante(context) then
|
||||
|
|
|
|||
|
|
@ -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
|
||||
|
|
|
|||
|
|
@ -119,19 +119,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 +139,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 +147,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 +160,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
|
||||
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
|
||||
end
|
||||
|
||||
return ret
|
||||
|
|
@ -203,13 +184,14 @@ SMODS.Edition({
|
|||
},
|
||||
config = {e_chips = Jane.cry and 0.8 or 0.9, e_mult = Jane.cry 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}}
|
||||
|
|
|
|||
|
|
@ -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 {
|
||||
key = "escapey",
|
||||
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#",
|
||||
},
|
||||
},
|
||||
config = {extra = {money = 2, xmoney = 2, max = 200, escape_label = "ESCAPE"}},
|
||||
config = {extra = {money = 2, xmoney = 2, max = 1000}},
|
||||
attributes = {"destroy_card", "economy", "tag"},
|
||||
pos = {x = 0, 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}}
|
||||
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 +193,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,9 +235,9 @@ 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 scaling = Jane.cry and G.GAME.dollars or math.min(G.GAME.dollars, extra.max)
|
||||
local tags = scaling * (math.pow(extra.xmoney, xtimes) - 1)
|
||||
ease_dollars(math.ceil(times * extra.money + tags))
|
||||
end,
|
||||
tag_threshold = 30,
|
||||
}
|
||||
|
|
|
|||
25
src/main.lua
25
src/main.lua
|
|
@ -1,8 +1,8 @@
|
|||
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"},
|
||||
},
|
||||
}
|
||||
|
|
@ -199,14 +199,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 +213,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 +302,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 +349,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",
|
||||
|
|
|
|||
|
|
@ -137,7 +137,6 @@ function Jane.misprintize_tbl(name, ref_tbl, ref_value, clear, override, stack,
|
|||
(k == "h_x_chips" and not Jane.cry) 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
|
||||
|
|
|
|||
235
src/slugcat.lua
235
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
|
||||
|
||||
|
|
@ -148,9 +144,10 @@ 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#",
|
||||
"{E:1}Succumbs to the",
|
||||
"{X:black,C:white,E:1}Rot{}, creating",
|
||||
(Jane.cry and "an {C:spectral}Empowered Tag" or "a {C:dark_edition}Negative {C:spectral}Soul"),
|
||||
"after #1#",
|
||||
},
|
||||
},
|
||||
config = {extra = {rounds_left = hunter[1]}},
|
||||
|
|
@ -275,16 +272,22 @@ 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}" .. (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)",
|
||||
},
|
||||
},
|
||||
loc_vars = function(_, _, center)
|
||||
return {vars = {center.ability.modifier}}
|
||||
end,
|
||||
config = {modifier = Jane.cry and 2 or 1},
|
||||
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)
|
||||
|
|
@ -338,14 +341,14 @@ local orig_set_ability = Card.set_ability
|
|||
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
|
||||
if Jane.cry then
|
||||
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
|
||||
end
|
||||
|
||||
|
|
@ -353,7 +356,7 @@ function Card:set_ability(center, initial, delay_sprites)
|
|||
else
|
||||
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
|
||||
end
|
||||
|
||||
|
|
@ -377,14 +380,10 @@ SMODS.Joker {
|
|||
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,
|
||||
cost = Jane.cry and 50 or 20,
|
||||
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,
|
||||
|
|
@ -516,21 +515,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",
|
||||
"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 +548,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 +569,44 @@ function Card:set_debuff(should_debuff)
|
|||
end
|
||||
end
|
||||
|
||||
local function attunement()
|
||||
return (G.GAME or {}).weeckweeck and 2 or (Jane.cry 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 = Jane.cry 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 = Jane.cry 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 Jane.cry then
|
||||
info_queue[#info_queue + 1] = G.P_CENTERS.c_cry_analog
|
||||
end
|
||||
|
||||
info_queue[#info_queue + 1] = Jane.cry and G.P_CENTERS.c_ankh or nil
|
||||
info_queue[#info_queue + 1] = Jane.cry and G.P_CENTERS.c_cry_gateway or G.P_CENTERS.c_soul
|
||||
|
||||
if Jane.cry then
|
||||
info_queue[#info_queue + 1] = G.P_CENTERS.c_cry_summoning
|
||||
end
|
||||
|
||||
local extra = card.ability.extra
|
||||
local karma = extra.karma
|
||||
|
|
@ -605,26 +614,36 @@ SMODS.Joker {
|
|||
local attuned = karma >= max_karma
|
||||
|
||||
return {
|
||||
vars = {
|
||||
attuned and "" or "The Saint",
|
||||
attuned and "The" or "",
|
||||
attuned and "Attuned" or "",
|
||||
vars = Jane.cry 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 +685,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 Jane.cry and not context.joker_main then
|
||||
return
|
||||
end
|
||||
|
||||
if not Jane.cry 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 = Jane.cry and attune or nil,
|
||||
[Jane.cry and "EEmult_mod" or "Emult_mod"] = attune,
|
||||
message = (Jane.cry and "^^" or "^") .. attune .. (Jane.cry and " Chips & Mult" or ""),
|
||||
},
|
||||
})[Jane.cry 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 +738,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 Jane.cry and key ~= "c_cry_gateway" or not Jane.cry and (key ~= "c_ankh" and key ~= "c_soul") then
|
||||
return
|
||||
end
|
||||
|
||||
|
|
@ -697,7 +756,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 +769,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]
|
||||
Bakery_use_joker = function(self, card)
|
||||
if not self:Bakery_can_use(card) then
|
||||
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)
|
||||
|
||||
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
|
||||
return
|
||||
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,
|
||||
}
|
||||
|
||||
if Cryptid and Cryptid.aliases 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 {
|
||||
|
|
|
|||
|
|
@ -183,8 +183,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",
|
||||
},
|
||||
},
|
||||
|
|
@ -255,7 +255,7 @@ SMODS.Consumable {
|
|||
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)",
|
||||
},
|
||||
|
|
@ -286,8 +286,8 @@ SMODS.Consumable {
|
|||
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},
|
||||
|
|
|
|||
|
|
@ -100,10 +100,7 @@ for _, v in pairs({
|
|||
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 +112,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)
|
||||
|
|
|
|||
Loading…
Add table
Reference in a new issue