Compare commits
41 commits
| Author | SHA1 | Date | |
|---|---|---|---|
| bb05a0512b | |||
| 8122036a55 | |||
| 3cf0a17c45 | |||
| 67f6ca08f5 | |||
| 9175f9bb7f | |||
| 3e679120e0 | |||
| 5931aa264b | |||
| 0b5560d019 | |||
| 6f7aac1234 | |||
| 7dfc8671e4 | |||
| 31669e6b0c | |||
| 0f0ec63819 | |||
| 4640b21403 | |||
| 5f28cc3d36 | |||
| 2af1d9be76 | |||
| 65fd36476a | |||
| 1db153664f | |||
| 40e8d4086b | |||
| ced0a9ab08 | |||
| d3193af581 | |||
| f76e4fe160 | |||
| 618474b080 | |||
| ef007afc55 | |||
| 12ae6ff798 | |||
| 2086d386d8 | |||
| 8b00262f22 | |||
| cb4262093d | |||
| e9f1050dc2 | |||
| 0e47de546b | |||
| 70895b77e8 | |||
| 050289d7bf | |||
| 507f6dbdff | |||
| 18624dc29f | |||
| 0145e774a5 | |||
| a6e349fb57 | |||
| 7786ca2a8f | |||
| 7d6288e59f | |||
| ee984ed5f3 | |||
| 1e2ec5f67c | |||
| fc58d49867 | |||
| 7d1ff51525 |
15 changed files with 267 additions and 180 deletions
BIN
assets/sounds/ambient_surreal1.ogg
Normal file
BIN
assets/sounds/ambient_surreal1.ogg
Normal file
Binary file not shown.
BIN
assets/sounds/ambient_surreal2.ogg
Normal file
BIN
assets/sounds/ambient_surreal2.ogg
Normal file
Binary file not shown.
BIN
assets/sounds/ambient_surreal3.ogg
Normal file
BIN
assets/sounds/ambient_surreal3.ogg
Normal file
Binary file not shown.
BIN
assets/sounds/ambient_surreal4.ogg
Normal file
BIN
assets/sounds/ambient_surreal4.ogg
Normal file
Binary file not shown.
54
lovely.toml
54
lovely.toml
|
|
@ -42,12 +42,44 @@ match_indent = true
|
||||||
target = "functions/misc_functions.lua"
|
target = "functions/misc_functions.lua"
|
||||||
pattern = "local AC = G.SETTINGS.ambient_control"
|
pattern = "local AC = G.SETTINGS.ambient_control"
|
||||||
position = "before"
|
position = "before"
|
||||||
payload = '''if Jane and (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 break_infinity = ((Talisman or {}).config_file or {}).break_infinity
|
||||||
local big = (break_infinity == "" or break_infinity == nil) and function (x) return x end or to_big
|
local big = (break_infinity == "" or break_infinity == nil) and function (x) return x end or to_big
|
||||||
local base = Cryptid and 2 or G.ARGS.score_intensity.required_score
|
local base = Cryptid and 2 or G.ARGS.score_intensity.required_score
|
||||||
local expo = Cryptid and G.ARGS.score_intensity.required_score or 2
|
local expo = Cryptid and G.ARGS.score_intensity.required_score or 2
|
||||||
Jane.sinister = (G.ARGS.score_intensity.earned_score / (big(base) ^ big(expo))):to_number() > 1
|
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
|
||||||
end'''
|
end'''
|
||||||
match_indent = true
|
match_indent = true
|
||||||
|
|
||||||
|
|
@ -57,7 +89,7 @@ target = "functions/state_events.lua"
|
||||||
pattern = "for _, v in ipairs(SMODS.get_card_areas('playing_cards')) do"
|
pattern = "for _, v in ipairs(SMODS.get_card_areas('playing_cards')) do"
|
||||||
position = "after"
|
position = "after"
|
||||||
payload = '''if v == G.hand and not (G.GAME.blind and G.GAME.blind.name == "The Card" and not G.GAME.blind.disabled) and next(SMODS.find_card("j_jane_survivor")) then
|
payload = '''if v == G.hand and not (G.GAME.blind and G.GAME.blind.name == "The Card" and not G.GAME.blind.disabled) and next(SMODS.find_card("j_jane_survivor")) then
|
||||||
if Cryptid then
|
if Jane.cry then
|
||||||
for _, v in ipairs(G.hand.cards) do
|
for _, v in ipairs(G.hand.cards) do
|
||||||
local area = {cards = {v}}
|
local area = {cards = {v}}
|
||||||
SMODS.calculate_main_scoring({cardarea = area, full_hand = area.cards, scoring_hand = area.cards, scoring_name = text, poker_hands = poker_hands}, area.cards)
|
SMODS.calculate_main_scoring({cardarea = area, full_hand = area.cards, scoring_hand = area.cards, scoring_name = text, poker_hands = poker_hands}, area.cards)
|
||||||
|
|
@ -171,7 +203,8 @@ self.jokers = CardArea(
|
||||||
CAI.joker_W+CAI.consumeable_W,
|
CAI.joker_W+CAI.consumeable_W,
|
||||||
CAI.joker_H,
|
CAI.joker_H,
|
||||||
{card_limit = (self.GAME.starting_params.joker_slots +
|
{card_limit = (self.GAME.starting_params.joker_slots +
|
||||||
self.GAME.starting_params.consumable_slots - 1) *
|
self.GAME.starting_params.consumable_slots -
|
||||||
|
(G.GAME.modifiers.jane_spacious_omega and 0 or 1)) *
|
||||||
(G.GAME.modifiers.alt_jane_spacious and 2 or 1),
|
(G.GAME.modifiers.alt_jane_spacious and 2 or 1),
|
||||||
type = 'joker',
|
type = 'joker',
|
||||||
highlight_limit = 1e100
|
highlight_limit = 1e100
|
||||||
|
|
@ -225,3 +258,16 @@ if G.GAME.modifiers.jane_spacious then
|
||||||
t = {G.jokers, G.vouchers}
|
t = {G.jokers, G.vouchers}
|
||||||
end'''
|
end'''
|
||||||
match_indent = true
|
match_indent = true
|
||||||
|
|
||||||
|
[[patches]]
|
||||||
|
[patches.pattern]
|
||||||
|
target = "functions/misc_functions.lua"
|
||||||
|
pattern = "ambientOrgan1 = {volfunc = function(_prev_volume) return _prev_volume*(1 - dt) + dt*0.6*(G.SETTINGS.SOUND.music_volume + 100)/200*(G.ARGS.score_intensity.organ) end},"
|
||||||
|
position = "after"
|
||||||
|
payload = '''
|
||||||
|
jane_ambientSurreal1 = {volfunc = function(_prev_volume) return _prev_volume*(1 - dt) + dt*0.6*(G.SETTINGS.SOUND.music_volume + 80)/200*((G.ARGS.score_intensity.ambientSurreal1 or 0) * 1.4) end},
|
||||||
|
jane_ambientSurreal2 = {volfunc = function(_prev_volume) return _prev_volume*(1 - dt) + dt*0.6*(G.SETTINGS.SOUND.music_volume + 90)/200*((G.ARGS.score_intensity.ambientSurreal2 or 0) * 1.6) end},
|
||||||
|
jane_ambientSurreal3 = {volfunc = function(_prev_volume) return _prev_volume*(1 - dt) + dt*0.6*(G.SETTINGS.SOUND.music_volume + 100)/200*((G.ARGS.score_intensity.ambientSurreal3 or 0) * 1.8) end},
|
||||||
|
jane_ambientSurreal4 = {volfunc = function(_prev_volume) return _prev_volume*(1 - dt) + dt*0.6*(G.SETTINGS.SOUND.music_volume + 110)/200*((G.ARGS.score_intensity.ambientSurreal4 or 0) * 2) end},
|
||||||
|
'''
|
||||||
|
match_indent = true
|
||||||
|
|
|
||||||
|
|
@ -13,11 +13,10 @@
|
||||||
"dependencies": [
|
"dependencies": [
|
||||||
"Steamodded (>=1.0.0~BETA-1606b)",
|
"Steamodded (>=1.0.0~BETA-1606b)",
|
||||||
"Lovely (>=0.6)",
|
"Lovely (>=0.6)",
|
||||||
"Bakery (>=3.2.0~*)",
|
"Bakery (>=3.2.0~*)"
|
||||||
"Roland (>=2.8.0~*)"
|
|
||||||
],
|
],
|
||||||
"conflicts": [
|
"conflicts": [
|
||||||
"Jen"
|
"Jen"
|
||||||
],
|
],
|
||||||
"version": "1.7.14"
|
"version": "1.11.0"
|
||||||
}
|
}
|
||||||
|
|
@ -153,7 +153,7 @@ local rain_world_jokers = {
|
||||||
"j_jane_monk",
|
"j_jane_monk",
|
||||||
"j_jane_survivor",
|
"j_jane_survivor",
|
||||||
"j_jane_spearmaster",
|
"j_jane_spearmaster",
|
||||||
"j_jane_rivulet",
|
"j_jane_gourmand",
|
||||||
"j_jane_saint",
|
"j_jane_saint",
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
@ -631,6 +631,7 @@ back {
|
||||||
text = {
|
text = {
|
||||||
"{C:attention}Joker {}and {C:attention}Consumable",
|
"{C:attention}Joker {}and {C:attention}Consumable",
|
||||||
"slots are {C:attention}combined",
|
"slots are {C:attention}combined",
|
||||||
|
"{C:attention}-1 {}Slot",
|
||||||
},
|
},
|
||||||
},
|
},
|
||||||
alt_loc_txt = {
|
alt_loc_txt = {
|
||||||
|
|
@ -689,12 +690,13 @@ back {
|
||||||
apply_orrery()
|
apply_orrery()
|
||||||
G.GAME.modifiers.jane_spacious = true
|
G.GAME.modifiers.jane_spacious = true
|
||||||
G.GAME.used_vouchers.v_omen_globe = true
|
G.GAME.used_vouchers.v_omen_globe = true
|
||||||
|
G.GAME.modifiers.jane_spacious_omega = true
|
||||||
G.GAME.starting_voucher_count = (G.GAME.starting_voucher_count or 0) + 1
|
G.GAME.starting_voucher_count = (G.GAME.starting_voucher_count or 0) + 1
|
||||||
|
|
||||||
Jane.q(function()
|
Jane.q(function()
|
||||||
|
add_rain_world_joker()
|
||||||
local wee = create_card("Joker", G.jokers, nil, nil, nil, nil, "j_wee", "weeck")
|
local wee = create_card("Joker", G.jokers, nil, nil, nil, nil, "j_wee", "weeck")
|
||||||
G.jokers:emplace(wee)
|
G.jokers:emplace(wee)
|
||||||
add_rain_world_joker()
|
|
||||||
G.GAME.tortoise = true
|
G.GAME.tortoise = true
|
||||||
G.GAME.obsidian = true
|
G.GAME.obsidian = true
|
||||||
G.GAME.mysterious = true
|
G.GAME.mysterious = true
|
||||||
|
|
@ -713,6 +715,7 @@ back {
|
||||||
end
|
end
|
||||||
end,
|
end,
|
||||||
calculate = function(_, _, context)
|
calculate = function(_, _, context)
|
||||||
|
rebalance_orrery()
|
||||||
G.GAME.mysterious = nil
|
G.GAME.mysterious = nil
|
||||||
|
|
||||||
if Jane.is_end_of_ante(context) then
|
if Jane.is_end_of_ante(context) then
|
||||||
|
|
|
||||||
|
|
@ -10,17 +10,36 @@ local rain_world_jokers = {
|
||||||
"j_jane_rot",
|
"j_jane_rot",
|
||||||
}
|
}
|
||||||
|
|
||||||
local is_rain_world_joker = {}
|
local is_rain_world_joker, survival = {}, {}
|
||||||
|
|
||||||
for _, v in pairs(rain_world_jokers) do
|
for _, v in pairs(rain_world_jokers) do
|
||||||
is_rain_world_joker[v] = true
|
is_rain_world_joker[v] = true
|
||||||
end
|
end
|
||||||
|
|
||||||
|
Jane.q(function()
|
||||||
|
for gk, g in pairs(G.localization.descriptions) do
|
||||||
|
for ck, c in pairs((type(g) == "table" and not ({Back = true, Sleeve = true})[gk]) and g or {}) do
|
||||||
|
for _, text in pairs((type(c) == "table" and type(c.text) == "table" and G.P_CENTERS[ck]) and c.text or {}) do
|
||||||
|
if type(text) == "string" and (text:find("discard") or text:find("Discard")) then
|
||||||
|
survival[#survival + 1] = {id = ck}
|
||||||
|
break
|
||||||
|
end
|
||||||
|
end
|
||||||
|
end
|
||||||
|
end
|
||||||
|
end, nil, nil, nil, nil, false, true)
|
||||||
|
|
||||||
|
SMODS.Challenge {
|
||||||
|
key = "survival",
|
||||||
|
loc_txt = {name = "Survival"},
|
||||||
|
jokers = {{id = "j_jane_survivor"}},
|
||||||
|
rules = {modifiers = {{id = "discards", value = 0}}},
|
||||||
|
restrictions = {banned_cards = survival},
|
||||||
|
}
|
||||||
|
|
||||||
SMODS.Challenge {
|
SMODS.Challenge {
|
||||||
key = "downpour",
|
key = "downpour",
|
||||||
loc_txt = {
|
loc_txt = {name = "Downpour"},
|
||||||
name = "Downpour",
|
|
||||||
},
|
|
||||||
rules = {custom = {{id = "jane_downpour1"}, {id = "jane_downpour2"}, {id = "jane_downpour3"}}},
|
rules = {custom = {{id = "jane_downpour1"}, {id = "jane_downpour2"}, {id = "jane_downpour3"}}},
|
||||||
apply = function(_)
|
apply = function(_)
|
||||||
for _, v in ipairs(rain_world_jokers) do
|
for _, v in ipairs(rain_world_jokers) do
|
||||||
|
|
|
||||||
|
|
@ -119,12 +119,19 @@ local jumbo = SMODS.Edition({
|
||||||
|
|
||||||
Jane.misprintize(card, {min = jumbo_modifier, max = jumbo_modifier}, nil, true)
|
Jane.misprintize(card, {min = jumbo_modifier, max = jumbo_modifier}, nil, true)
|
||||||
|
|
||||||
|
if (card.ability or {}).bonus and (card.base or {}).nominal then
|
||||||
|
card.ability.bonus = card.ability.bonus + card.base.nominal
|
||||||
|
end
|
||||||
|
|
||||||
if card.added_to_deck then
|
if card.added_to_deck then
|
||||||
card:add_to_deck()
|
card:add_to_deck()
|
||||||
end
|
end
|
||||||
|
|
||||||
Jane.resize(card, Jane.config.wee_sizemod)
|
Jane.resize(card, Jane.config.wee_sizemod)
|
||||||
end,
|
end,
|
||||||
|
on_load = function(card)
|
||||||
|
Jane.resize(card, Jane.config.wee_sizemod)
|
||||||
|
end,
|
||||||
on_remove = function(card)
|
on_remove = function(card)
|
||||||
if not card.Jane_jumbo then
|
if not card.Jane_jumbo then
|
||||||
return
|
return
|
||||||
|
|
@ -139,6 +146,10 @@ local jumbo = SMODS.Edition({
|
||||||
|
|
||||||
Jane.misprintize(card, {min = 1 / jumbo_modifier, max = 1 / jumbo_modifier}, nil, true)
|
Jane.misprintize(card, {min = 1 / jumbo_modifier, max = 1 / jumbo_modifier}, nil, true)
|
||||||
|
|
||||||
|
if (card.ability or {}).bonus and (card.base or {}).nominal then
|
||||||
|
card.ability.bonus = card.ability.bonus - card.base.nominal
|
||||||
|
end
|
||||||
|
|
||||||
if was_added then
|
if was_added then
|
||||||
card:add_to_deck()
|
card:add_to_deck()
|
||||||
end
|
end
|
||||||
|
|
@ -147,7 +158,7 @@ local jumbo = SMODS.Edition({
|
||||||
end,
|
end,
|
||||||
sound = {sound = "jane_e_jumbo", per = 1, vol = 0.5},
|
sound = {sound = "jane_e_jumbo", per = 1, vol = 0.5},
|
||||||
weight = 5,
|
weight = 5,
|
||||||
extra_cost = 5,
|
extra_cost = 2,
|
||||||
in_shop = true,
|
in_shop = true,
|
||||||
shader = false,
|
shader = false,
|
||||||
apply_to_float = false,
|
apply_to_float = false,
|
||||||
|
|
@ -160,13 +171,21 @@ function Card:set_ability(...)
|
||||||
local is_jumbo = self.edition and self.edition.jane_jumbo
|
local is_jumbo = self.edition and self.edition.jane_jumbo
|
||||||
|
|
||||||
if is_jumbo then
|
if is_jumbo then
|
||||||
|
if Jane.cry then
|
||||||
jumbo.on_remove(self)
|
jumbo.on_remove(self)
|
||||||
|
else
|
||||||
|
Jane.resize(self)
|
||||||
|
end
|
||||||
end
|
end
|
||||||
|
|
||||||
local ret = orig_set_ability(self, ...)
|
local ret = orig_set_ability(self, ...)
|
||||||
|
|
||||||
if is_jumbo then
|
if is_jumbo then
|
||||||
|
if Jane.cry then
|
||||||
jumbo.on_apply(self)
|
jumbo.on_apply(self)
|
||||||
|
else
|
||||||
|
Jane.resize(self, Jane.config.wee_sizemod)
|
||||||
|
end
|
||||||
end
|
end
|
||||||
|
|
||||||
return ret
|
return ret
|
||||||
|
|
@ -184,14 +203,13 @@ SMODS.Edition({
|
||||||
},
|
},
|
||||||
config = {e_chips = Jane.cry and 0.8 or 0.9, e_mult = Jane.cry and 1.2 or 1.1},
|
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},
|
sound = {sound = "jane_e_moire", per = 1, vol = 0.7},
|
||||||
weight = 2,
|
weight = 1,
|
||||||
extra_cost = 10,
|
extra_cost = 10,
|
||||||
in_shop = true,
|
in_shop = true,
|
||||||
shader = "moire",
|
shader = "moire",
|
||||||
in_pool = allow_moire,
|
|
||||||
apply_to_float = false,
|
apply_to_float = false,
|
||||||
get_weight = function(self)
|
get_weight = function(self)
|
||||||
return G.GAME.edition_rate * self.weight * (allow_moire() and 1 or 0)
|
return G.GAME.edition_rate * self.weight * (allow_moire() and 20 or 2)
|
||||||
end,
|
end,
|
||||||
loc_vars = function(self, _, _)
|
loc_vars = function(self, _, _)
|
||||||
return {vars = {self.config.e_chips, self.config.e_mult}}
|
return {vars = {self.config.e_chips, self.config.e_mult}}
|
||||||
|
|
|
||||||
|
|
@ -138,6 +138,20 @@ local escapey_quotes = {
|
||||||
},
|
},
|
||||||
}
|
}
|
||||||
|
|
||||||
|
local function escapey_button_text(card)
|
||||||
|
if card.debuff then
|
||||||
|
return "DEBUFFED"
|
||||||
|
end
|
||||||
|
|
||||||
|
for _, v in ipairs(G.consumeables.cards) do
|
||||||
|
if destructible(v) then
|
||||||
|
return "CONSUME"
|
||||||
|
end
|
||||||
|
end
|
||||||
|
|
||||||
|
return "ESCAPE"
|
||||||
|
end
|
||||||
|
|
||||||
local esc = SMODS.Joker {
|
local esc = SMODS.Joker {
|
||||||
key = "escapey",
|
key = "escapey",
|
||||||
atlas = "janeescapey",
|
atlas = "janeescapey",
|
||||||
|
|
@ -154,7 +168,7 @@ local esc = SMODS.Joker {
|
||||||
"{C:inactive,s:0.75,E:1}#5#{C:red,s:1.5,E:1}#6#",
|
"{C:inactive,s:0.75,E:1}#5#{C:red,s:1.5,E:1}#6#",
|
||||||
},
|
},
|
||||||
},
|
},
|
||||||
config = {extra = {money = 2, xmoney = 2, max = Jane.cry and 2000 or 200}},
|
config = {extra = {money = 2, xmoney = 2, max = 200, escape_label = "ESCAPE"}},
|
||||||
attributes = {"destroy_card", "economy", "tag"},
|
attributes = {"destroy_card", "economy", "tag"},
|
||||||
pos = {x = 0, y = 0},
|
pos = {x = 0, y = 0},
|
||||||
sinis = {x = 2, y = 0},
|
sinis = {x = 2, y = 0},
|
||||||
|
|
@ -175,6 +189,12 @@ local esc = SMODS.Joker {
|
||||||
|
|
||||||
return {vars = {extra.xmoney, number_format(extra.max), extra.money, normal[1], normal[2], scared}}
|
return {vars = {extra.xmoney, number_format(extra.max), extra.money, normal[1], normal[2], scared}}
|
||||||
end,
|
end,
|
||||||
|
calculate = function(_, card)
|
||||||
|
local extra = card.ability.extra
|
||||||
|
local label = extra.escape_label
|
||||||
|
extra.escape_label = escapey_button_text(card)
|
||||||
|
local _ = label ~= extra.escape_label and Bakery_API.rehighlight(card)
|
||||||
|
end,
|
||||||
Bakery_can_use = function(_, card)
|
Bakery_can_use = function(_, card)
|
||||||
if not Jane.can_use() or card.debuff then
|
if not Jane.can_use() or card.debuff then
|
||||||
return false
|
return false
|
||||||
|
|
@ -193,7 +213,7 @@ local esc = SMODS.Joker {
|
||||||
return false
|
return false
|
||||||
end,
|
end,
|
||||||
Bakery_use_button_text = function(_, card)
|
Bakery_use_button_text = function(_, card)
|
||||||
return card.debuff and "DEBUFFED" or "ESCAPE"
|
return card.ability.extra.escape_label
|
||||||
end,
|
end,
|
||||||
Bakery_use_joker = function(self, card)
|
Bakery_use_joker = function(self, card)
|
||||||
if card.debuff then
|
if card.debuff then
|
||||||
|
|
@ -235,9 +255,9 @@ local esc = SMODS.Joker {
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
|
||||||
local scaling = Jane.cry and G.GAME.dollars or math.min(G.GAME.dollars, extra.max)
|
local tag_money = Jane.cry and G.GAME.dollars or math.min(G.GAME.dollars, extra.max)
|
||||||
local tags = scaling * (math.pow(extra.xmoney, xtimes) - 1)
|
local tag_times = Jane.cry and math.pow(extra.xmoney, xtimes) - 1 or xtimes
|
||||||
ease_dollars(math.ceil(times * extra.money + tags))
|
ease_dollars(math.ceil(times * extra.money + tag_money * tag_times))
|
||||||
end,
|
end,
|
||||||
tag_threshold = 30,
|
tag_threshold = 30,
|
||||||
}
|
}
|
||||||
|
|
@ -383,7 +403,7 @@ SMODS.Joker {
|
||||||
cost = 8,
|
cost = 8,
|
||||||
rarity = 3,
|
rarity = 3,
|
||||||
loc_vars = function(_, _, card)
|
loc_vars = function(_, _, card)
|
||||||
local level = tonumber(card.ability.extra.level)
|
local level = tonumber(card.ability.extra.level) or 1
|
||||||
|
|
||||||
local function level_name(i)
|
local function level_name(i)
|
||||||
local acc = ""
|
local acc = ""
|
||||||
|
|
@ -427,12 +447,12 @@ SMODS.Joker {
|
||||||
update = function(_, card, _)
|
update = function(_, card, _)
|
||||||
if card.added_to_deck and card.children.center and card.children.floating_sprite then
|
if card.added_to_deck and card.children.center and card.children.floating_sprite then
|
||||||
local extra = card.ability.extra or {}
|
local extra = card.ability.extra or {}
|
||||||
local y = tonumber(extra.level) > 1 and 1 or 0
|
local y = (tonumber(extra.level) or 1) > 1 and 1 or 0
|
||||||
card.children.center:set_sprite_pos({x = 0, y = y})
|
card.children.center:set_sprite_pos({x = 0, y = y})
|
||||||
card.children.floating_sprite:set_sprite_pos({x = Jane.sinister and 2 or 1, y = y})
|
card.children.floating_sprite:set_sprite_pos({x = Jane.sinister and 2 or 1, y = y})
|
||||||
end
|
end
|
||||||
|
|
||||||
local level = tonumber(card.ability.extra.level)
|
local level = tonumber(card.ability.extra.level) or 1
|
||||||
|
|
||||||
if not Jane.sinister and level > 2 then
|
if not Jane.sinister and level > 2 then
|
||||||
card:juice_up(0, math.random() * (level - 2) / #Jane.rarity_ids)
|
card:juice_up(0, math.random() * (level - 2) / #Jane.rarity_ids)
|
||||||
|
|
@ -450,7 +470,7 @@ function SMODS.poll_rarity(_pool_key, _rand_key)
|
||||||
local max = 0
|
local max = 0
|
||||||
|
|
||||||
for _, v in pairs(SMODS.find_card("j_jane_honey")) do
|
for _, v in pairs(SMODS.find_card("j_jane_honey")) do
|
||||||
max = v.debuff and max or math.max(max, tonumber(v.ability.extra.level))
|
max = v.debuff and max or math.max(max, tonumber(v.ability.extra.level) or 1)
|
||||||
end
|
end
|
||||||
|
|
||||||
local rarity = orig_rarity(_pool_key, _rand_key)
|
local rarity = orig_rarity(_pool_key, _rand_key)
|
||||||
|
|
|
||||||
25
src/main.lua
25
src/main.lua
|
|
@ -1,8 +1,8 @@
|
||||||
Jane = {
|
Jane = {
|
||||||
cry = not not G.P_CENTERS.j_cry_m,
|
cry = not not G.P_CENTERS.j_cry_m,
|
||||||
config = {
|
config = {
|
||||||
wee_sizemod = 1.25,
|
|
||||||
texture_pack = "default",
|
texture_pack = "default",
|
||||||
|
wee_sizemod = math.sqrt(2),
|
||||||
bans = {"j_cry_crustulum", "c_cry_hammerspace"},
|
bans = {"j_cry_crustulum", "c_cry_hammerspace"},
|
||||||
},
|
},
|
||||||
}
|
}
|
||||||
|
|
@ -199,13 +199,14 @@ function Jane.resize(card, mod)
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
|
||||||
function Jane.q(func, delay, timer, trigger, blockable, blocking)
|
function Jane.q(func, delay, timer, trigger, blockable, blocking, no_delete)
|
||||||
G.E_MANAGER:add_event(Event({
|
G.E_MANAGER:add_event(Event({
|
||||||
delay = delay,
|
delay = delay,
|
||||||
timer = timer,
|
timer = timer,
|
||||||
trigger = (delay and not trigger) and "after" or trigger,
|
trigger = (delay and not trigger) and "after" or trigger,
|
||||||
blocking = blocking,
|
blocking = blocking,
|
||||||
blockable = blockable,
|
blockable = blockable,
|
||||||
|
no_delete = no_delete,
|
||||||
func = function(...)
|
func = function(...)
|
||||||
local ret = func(...)
|
local ret = func(...)
|
||||||
return ret == nil and true or ret
|
return ret == nil and true or ret
|
||||||
|
|
@ -213,6 +214,20 @@ function Jane.q(func, delay, timer, trigger, blockable, blocking)
|
||||||
}))
|
}))
|
||||||
end
|
end
|
||||||
|
|
||||||
|
if false then
|
||||||
|
---@type table?
|
||||||
|
Big = Big
|
||||||
|
|
||||||
|
---@type { aliases: { [string]: string } }?
|
||||||
|
Cryptid = Cryptid
|
||||||
|
|
||||||
|
---@type { config_file: { break_infinity: boolean, disable_anims: boolean }? }?
|
||||||
|
Talisman = Talisman
|
||||||
|
|
||||||
|
---@type fun(any): boolean
|
||||||
|
_G.is_number = _G.is_number
|
||||||
|
end
|
||||||
|
|
||||||
local orig_can_highlight = CardArea.can_highlight
|
local orig_can_highlight = CardArea.can_highlight
|
||||||
|
|
||||||
function CardArea:can_highlight(...)
|
function CardArea:can_highlight(...)
|
||||||
|
|
@ -302,7 +317,7 @@ function Game:update(dt)
|
||||||
local ante = G.GAME.round_resets.ante
|
local ante = G.GAME.round_resets.ante
|
||||||
local blind = get_blind_amount((ante >= 1 and ante <= 8) and math.floor(ante) or ante)
|
local blind = get_blind_amount((ante >= 1 and ante <= 8) and math.floor(ante) or ante)
|
||||||
G.P_BLINDS["bl_jane_wee"].mult = 22 / blind
|
G.P_BLINDS["bl_jane_wee"].mult = 22 / blind
|
||||||
G.P_BLINDS["bl_jane_descending"].mult = math.floor(8 * math.sqrt(blind)) / blind
|
G.P_BLINDS["bl_jane_descending"].mult = math.ceil(8 * math.sqrt(blind)) / blind
|
||||||
Jane.update_honey()
|
Jane.update_honey()
|
||||||
|
|
||||||
if not Jane.bans_done then
|
if not Jane.bans_done then
|
||||||
|
|
@ -349,6 +364,10 @@ SMODS.Atlas {
|
||||||
path = Jane.config.texture_pack .. "/c_jane_acc.png",
|
path = Jane.config.texture_pack .. "/c_jane_acc.png",
|
||||||
}
|
}
|
||||||
|
|
||||||
|
for i = 1, 4 do
|
||||||
|
SMODS.Sound({key = "ambientSurreal" .. i, path = "ambient_surreal" .. i .. ".ogg"})
|
||||||
|
end
|
||||||
|
|
||||||
for _, v in ipairs({
|
for _, v in ipairs({
|
||||||
"back",
|
"back",
|
||||||
"blind",
|
"blind",
|
||||||
|
|
|
||||||
|
|
@ -137,6 +137,7 @@ function Jane.misprintize_tbl(name, ref_tbl, ref_value, clear, override, stack,
|
||||||
(k == "h_x_chips" and not Jane.cry) and not
|
(k == "h_x_chips" and not Jane.cry) and not
|
||||||
(k == "id") and not
|
(k == "id") and not
|
||||||
(k == "colour") and not
|
(k == "colour") and not
|
||||||
|
(k == "nominal") and not
|
||||||
(k == "suit_nominal") and not
|
(k == "suit_nominal") and not
|
||||||
(k == "base_nominal") and not
|
(k == "base_nominal") and not
|
||||||
(k == "face_nominal") and not
|
(k == "face_nominal") and not
|
||||||
|
|
|
||||||
237
src/slugcat.lua
237
src/slugcat.lua
|
|
@ -12,7 +12,7 @@ SMODS.Sound({
|
||||||
select_music_track = function()
|
select_music_track = function()
|
||||||
for _, v in pairs(SMODS.find_card("j_jane_saint")) do
|
for _, v in pairs(SMODS.find_card("j_jane_saint")) do
|
||||||
if v.ability.extra.is_attuned then
|
if v.ability.extra.is_attuned then
|
||||||
return Jane.sinister and -1 / 0 or 10
|
return 201
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
|
||||||
|
|
@ -25,9 +25,13 @@ SMODS.Sound({
|
||||||
path = "music_attuned_sinister.ogg",
|
path = "music_attuned_sinister.ogg",
|
||||||
volume = 1,
|
volume = 1,
|
||||||
select_music_track = function()
|
select_music_track = function()
|
||||||
|
if not Jane.sinister then
|
||||||
|
return -1 / 0
|
||||||
|
end
|
||||||
|
|
||||||
for _, v in pairs(SMODS.find_card("j_jane_saint")) do
|
for _, v in pairs(SMODS.find_card("j_jane_saint")) do
|
||||||
if v.ability.extra.is_attuned then
|
if v.ability.extra.is_attuned then
|
||||||
return Jane.sinister and 10 or -1 / 0
|
return 202
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
|
||||||
|
|
@ -144,10 +148,9 @@ SMODS.Joker {
|
||||||
loc_txt = {
|
loc_txt = {
|
||||||
name = "The Hunter",
|
name = "The Hunter",
|
||||||
text = {
|
text = {
|
||||||
"{E:1}Succumbs to the",
|
"{E:1}Succumbs to the {X:black,C:white,E:1}Rot{},",
|
||||||
"{X:black,C:white,E:1}Rot{}, creating",
|
(Jane.cry and "creating an {C:spectral}Empowered" or "creating a {C:dark_edition}Negative"),
|
||||||
(Jane.cry and "an {C:spectral}Empowered Tag" or "a {C:dark_edition}Negative {C:spectral}Soul"),
|
(Jane.cry and "{C:spectral}Tag" or "{C:spectral}Soul") .. " {}after #1#",
|
||||||
"after #1#",
|
|
||||||
},
|
},
|
||||||
},
|
},
|
||||||
config = {extra = {rounds_left = hunter[1]}},
|
config = {extra = {rounds_left = hunter[1]}},
|
||||||
|
|
@ -272,22 +275,16 @@ SMODS.Joker {
|
||||||
atlas = "janegourmand",
|
atlas = "janegourmand",
|
||||||
loc_txt = {
|
loc_txt = {
|
||||||
name = "The Gourmand",
|
name = "The Gourmand",
|
||||||
text = {
|
text = {"All cards are {C:dark_edition}Jumbo"},
|
||||||
"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},
|
pos = {x = 0, y = 0},
|
||||||
soul_pos = {x = 1, y = 0},
|
soul_pos = {x = 1, y = 0},
|
||||||
blueprint_compat = false,
|
blueprint_compat = false,
|
||||||
cost = 8,
|
cost = 20,
|
||||||
rarity = 3,
|
rarity = 4,
|
||||||
|
loc_vars = function(_, info_queue)
|
||||||
|
info_queue[#info_queue + 1] = G.P_CENTERS.e_jane_jumbo
|
||||||
|
end,
|
||||||
}
|
}
|
||||||
|
|
||||||
local function add_to_consumable_ability_by(n)
|
local function add_to_consumable_ability_by(n)
|
||||||
|
|
@ -341,14 +338,14 @@ local orig_set_ability = Card.set_ability
|
||||||
function Card:set_ability(center, initial, delay_sprites)
|
function Card:set_ability(center, initial, delay_sprites)
|
||||||
orig_set_ability(self, center, initial, delay_sprites)
|
orig_set_ability(self, center, initial, delay_sprites)
|
||||||
|
|
||||||
if next(SMODS.find_card("j_jane_gourmand")) and
|
if next(SMODS.find_card("j_jane_rivulet")) and
|
||||||
self.gc and
|
self.gc and
|
||||||
self:gc().key ~= "c_base" and
|
self:gc().key ~= "c_base" and
|
||||||
string.sub(self:gc().key, 1, 2) == "c_" then
|
string.sub(self:gc().key, 1, 2) == "c_" then
|
||||||
if Jane.cry 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_gourmand")) do
|
for _, v in pairs(SMODS.find_card("j_jane_rivulet")) do
|
||||||
mod = mod * v.ability.modifier
|
mod = mod * v.ability.modifier
|
||||||
end
|
end
|
||||||
|
|
||||||
|
|
@ -356,7 +353,7 @@ function Card:set_ability(center, initial, delay_sprites)
|
||||||
else
|
else
|
||||||
local mod = 0
|
local mod = 0
|
||||||
|
|
||||||
for _, v in pairs(SMODS.find_card("j_jane_gourmand")) do
|
for _, v in pairs(SMODS.find_card("j_jane_rivulet")) do
|
||||||
mod = mod + v.ability.modifier
|
mod = mod + v.ability.modifier
|
||||||
end
|
end
|
||||||
|
|
||||||
|
|
@ -380,10 +377,14 @@ SMODS.Joker {
|
||||||
pos = {x = 0, y = 0},
|
pos = {x = 0, y = 0},
|
||||||
soul_pos = {x = 1, y = 0},
|
soul_pos = {x = 1, y = 0},
|
||||||
config = {extra = {uses = 2}},
|
config = {extra = {uses = 2}},
|
||||||
|
eternal_compat = false,
|
||||||
blueprint_compat = false,
|
blueprint_compat = false,
|
||||||
cost = Jane.cry and 50 or 20,
|
cost = Jane.cry and 50 or 7,
|
||||||
rarity = Jane.cry and exotic or 3,
|
rarity = Jane.cry and exotic or 3,
|
||||||
loc_vars = function(_, _, card)
|
loc_vars = function(_, _, card)
|
||||||
|
card.ability = card.ability or {}
|
||||||
|
card.ability.extra = card.ability.extra or {}
|
||||||
|
card.ability.extra.uses = card.ability.extra.uses or 2
|
||||||
local uses = card.ability.extra.uses
|
local uses = card.ability.extra.uses
|
||||||
return {vars = {uses, uses == 1 and "use" or "uses"}}
|
return {vars = {uses, uses == 1 and "use" or "uses"}}
|
||||||
end,
|
end,
|
||||||
|
|
@ -515,15 +516,21 @@ SMODS.Joker {
|
||||||
loc_txt = {
|
loc_txt = {
|
||||||
name = "The Rivulet",
|
name = "The Rivulet",
|
||||||
text = {
|
text = {
|
||||||
"Non-{C:dark_edition}editioned{} cards are",
|
"Values on {C:attention}consumables",
|
||||||
"given a random {C:dark_edition}Edition",
|
"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)",
|
||||||
},
|
},
|
||||||
},
|
},
|
||||||
|
config = {modifier = Jane.cry and 2 or 1},
|
||||||
pos = {x = 0, y = 0},
|
pos = {x = 0, y = 0},
|
||||||
soul_pos = {x = 1, y = 0},
|
soul_pos = {x = 1, y = 0},
|
||||||
blueprint_compat = false,
|
blueprint_compat = false,
|
||||||
cost = 20,
|
cost = 8,
|
||||||
rarity = 4,
|
rarity = 3,
|
||||||
|
loc_vars = function(_, _, center)
|
||||||
|
return {vars = {center.ability.modifier}}
|
||||||
|
end,
|
||||||
}
|
}
|
||||||
|
|
||||||
local orig_draw = Card.draw
|
local orig_draw = Card.draw
|
||||||
|
|
@ -548,11 +555,11 @@ function Card:draw(layer)
|
||||||
if cen and
|
if cen and
|
||||||
self.facing == "front" and
|
self.facing == "front" and
|
||||||
self.config and
|
self.config and
|
||||||
(self.added_to_deck or (self.area and self.area == G.hand)) and not
|
(self.added_to_deck or (self.area and self.area == G.hand)) and
|
||||||
self.edition and
|
not self.edition and
|
||||||
(self.area == G.consumeables or cen.set ~= "Booster") and
|
(self.area == G.consumeables or cen.set ~= "Booster") and
|
||||||
next(SMODS.find_card("j_jane_rivulet")) then
|
next(SMODS.find_card("j_jane_gourmand")) then
|
||||||
self:set_edition(poll_edition("rivulet_edition", nil, true, true))
|
self:set_edition("e_jane_jumbo", true, true)
|
||||||
end
|
end
|
||||||
|
|
||||||
orig_draw(self, layer)
|
orig_draw(self, layer)
|
||||||
|
|
@ -569,44 +576,28 @@ function Card:set_debuff(should_debuff)
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
|
||||||
local function attunement()
|
|
||||||
return (G.GAME or {}).weeckweeck and 2 or (Jane.cry and 1.002 or 1.25)
|
|
||||||
end
|
|
||||||
|
|
||||||
SMODS.Joker {
|
SMODS.Joker {
|
||||||
key = "saint",
|
key = "saint",
|
||||||
atlas = "janesaint",
|
atlas = "janesaint",
|
||||||
loc_txt = {
|
loc_txt = {
|
||||||
name = "The Saint{C:jane_RGB}#1#",
|
name = {"{}", "#1#{C:jane_RGB,s:0.8}#2#", "{C:jane_RGB,s:1.6}#3#"},
|
||||||
text = Jane.cry and {
|
text = {
|
||||||
"{C:attention}Use {}to toggle {X:legendary,C:white}Eternal{} stickers to the left",
|
"{C:attention}Use {}to toggle itself or",
|
||||||
"{C:spectral}Analog{}, {C:spectral}Ankh{}, {C:spectral}Gateway{}, and",
|
"other Jokers to its",
|
||||||
"{C:spectral,s:0.95}Summoning {s:0.95}will {C:attention,s:0.95}not destroy Jokers",
|
"left's {C:legendary}Eternal{} sticker",
|
||||||
"{C:jane_RGB}#2#{}#3#{X:black,C:jane_RGB,s:1.5}#4#{C:spectral}#5#{C:mult}#6#",
|
"{C:attention}#4#{}#5#{C:spectral}#6#{}#7#",
|
||||||
"{C:inactive,s:1.25}#7#{C:attention,s:1.25}#8#{C:inactive,s:1.25}#9#{C:inactive}#10#",
|
"{C:inactive,s:1.25}#8#{C:attention,s:1.25}#9#{C:inactive,s:1.25}#10#",
|
||||||
} or {
|
Jane.cry and "{C:inactive}(Gateway has no downside)" or nil,
|
||||||
"{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 = {karma = 0, max_karma = Jane.cry and 10 or 2}},
|
config = {extra = {changes_editions = false, jokers = Jane.cry and 10 or 1, karma = 0, max_karma = Jane.cry and 10 or 3}},
|
||||||
pos = {x = 0, y = 0},
|
pos = {x = 0, y = 0},
|
||||||
soul_pos = {x = 1, y = 0},
|
soul_pos = {x = 1, y = 0},
|
||||||
cost = 20,
|
cost = 20,
|
||||||
rarity = 4,
|
rarity = 4,
|
||||||
blueprint_compat = true,
|
blueprint_compat = true,
|
||||||
loc_vars = function(_, info_queue, card)
|
loc_vars = function(_, info_queue, card)
|
||||||
if Jane.cry then
|
info_queue[#info_queue + 1] = Jane.cry and G.P_CENTERS.c_cry_gateway or nil
|
||||||
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 extra = card.ability.extra
|
||||||
local karma = extra.karma
|
local karma = extra.karma
|
||||||
|
|
@ -614,36 +605,26 @@ SMODS.Joker {
|
||||||
local attuned = karma >= max_karma
|
local attuned = karma >= max_karma
|
||||||
|
|
||||||
return {
|
return {
|
||||||
vars = Jane.cry and {
|
vars = {
|
||||||
attuned and " (Attuned)" or "",
|
attuned and "" or "The Saint",
|
||||||
|
attuned and "The" or "",
|
||||||
|
attuned and "Attuned" or "",
|
||||||
attuned and "" or "Attune ",
|
attuned and "" or "Attune ",
|
||||||
attuned and "" or "after using ",
|
attuned and "" or "at ",
|
||||||
attuned and "^^" .. attunement() or max_karma,
|
attuned and (Jane.cry and "Gateways " or "Spectrals ") or
|
||||||
attuned and "" or " Gateways",
|
max_karma .. (Jane.cry and " Gateways" or " Spectrals"),
|
||||||
attuned and " Mult" or "",
|
attuned and "add Joker slots" or "",
|
||||||
attuned and "" or "[",
|
attuned and "[Currently " or "[",
|
||||||
attuned and "" or karma,
|
attuned and "+" .. karma or karma,
|
||||||
attuned and "" or " / " .. max_karma .. "]",
|
attuned and "]" or " / " .. max_karma .. "]",
|
||||||
attuned and "(Cannot be debuffed)" or "",
|
|
||||||
} or {
|
|
||||||
attuned and " (Attuned)" or "",
|
|
||||||
attuned and "" or "Attune ",
|
|
||||||
attuned and "Boosts cards with " or "after using ",
|
|
||||||
attuned and "editions" or max_karma,
|
|
||||||
attuned and "" or " Ankh or Soul Cards",
|
|
||||||
attuned and "" or "[",
|
|
||||||
attuned and "" or karma,
|
|
||||||
attuned and "" or " / " .. max_karma .. "]",
|
|
||||||
attuned and "(Cannot be debuffed)" or "",
|
|
||||||
},
|
},
|
||||||
}
|
}
|
||||||
end,
|
end,
|
||||||
update = function(_, card, _)
|
update = function(_, card, _)
|
||||||
card.debuff_immune = card.ability.extra.is_attuned
|
if card.edition and card.edition.Roland_frozen then
|
||||||
|
card:set_edition("e_base")
|
||||||
if card.added_to_deck and card.children.center and card.children.floating_sprite then
|
elseif card.children.floating_sprite then
|
||||||
local extra = card.ability.extra
|
card.children.floating_sprite:set_sprite_pos({x = card.ability.extra.is_attuned and 2 or 1, y = 0})
|
||||||
card.children.floating_sprite:set_sprite_pos({x = extra.is_attuned and 2 or 1, y = 0})
|
|
||||||
end
|
end
|
||||||
end,
|
end,
|
||||||
calculate = function(_, card, context)
|
calculate = function(_, card, context)
|
||||||
|
|
@ -685,49 +666,9 @@ SMODS.Joker {
|
||||||
end, 1)
|
end, 1)
|
||||||
end
|
end
|
||||||
|
|
||||||
if extra.is_attuned then
|
if extra.karma >= max_karma then
|
||||||
card.debuff = false
|
local karma = (extra.is_attuning or extra.is_attuned) and 0 or extra.karma
|
||||||
|
G.jokers:change_size(karma * extra.jokers)
|
||||||
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()
|
ascend()
|
||||||
end
|
end
|
||||||
|
|
||||||
|
|
@ -738,9 +679,9 @@ SMODS.Joker {
|
||||||
return
|
return
|
||||||
end
|
end
|
||||||
|
|
||||||
local key = context.consumeable:gc().key
|
local gc = context.consumeable:gc()
|
||||||
|
|
||||||
if Jane.cry and key ~= "c_cry_gateway" or not Jane.cry and (key ~= "c_ankh" and key ~= "c_soul") then
|
if Jane.cry and gc.key ~= "c_cry_gateway" or not Jane.cry and gc.set ~= "Spectral" then
|
||||||
return
|
return
|
||||||
end
|
end
|
||||||
|
|
||||||
|
|
@ -756,7 +697,7 @@ SMODS.Joker {
|
||||||
{message = "+" .. quota .. " Karma", colour = G.C.PALE_GREEN}
|
{message = "+" .. quota .. " Karma", colour = G.C.PALE_GREEN}
|
||||||
)
|
)
|
||||||
|
|
||||||
card_eval_status_text(
|
local _ = extra.karma <= max_karma and card_eval_status_text(
|
||||||
card,
|
card,
|
||||||
"extra",
|
"extra",
|
||||||
nil,
|
nil,
|
||||||
|
|
@ -769,33 +710,49 @@ SMODS.Joker {
|
||||||
return
|
return
|
||||||
end
|
end
|
||||||
|
|
||||||
|
G.jokers:change_size((extra.is_attuned and quota or extra.karma) * extra.jokers)
|
||||||
ascend()
|
ascend()
|
||||||
end,
|
end,
|
||||||
Bakery_can_use = function(_, card)
|
Bakery_can_use = function(_, card)
|
||||||
return not card.debuff and Jane.can_use()
|
return Jane.can_use() and not card.debuff
|
||||||
end,
|
end,
|
||||||
Bakery_use_joker = function(self, card)
|
Bakery_use_joker = function(_, card)
|
||||||
if not self:Bakery_can_use(card) then
|
for joker_index = 1, math.max(card.rank - 1, 1) do
|
||||||
return
|
local joker = G.jokers.cards[joker_index]
|
||||||
end
|
|
||||||
|
|
||||||
for k, v in ipairs(G.jokers.cards) do
|
|
||||||
if card == v then
|
|
||||||
for i = 1, math.max(k - 1, 1) do
|
|
||||||
local joker = G.jokers.cards[i]
|
|
||||||
joker:set_eternal(not joker.ability.eternal)
|
joker:set_eternal(not joker.ability.eternal)
|
||||||
joker:juice_up()
|
|
||||||
|
if joker.Roland_frozen_ability then
|
||||||
|
joker.Roland_frozen_ability.eternal = joker.ability.eternal
|
||||||
end
|
end
|
||||||
|
|
||||||
return
|
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
|
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
|
||||||
|
end
|
||||||
|
end
|
||||||
|
|
||||||
|
local next = edition < #G.P_CENTER_POOLS.Edition and edition + 1 or 1
|
||||||
|
joker:set_edition(G.P_CENTER_POOLS.Edition[next].key)
|
||||||
|
::continue::
|
||||||
end
|
end
|
||||||
end,
|
end,
|
||||||
}
|
}
|
||||||
|
|
||||||
if Cryptid and Cryptid.aliases then
|
if Cryptid and Cryptid.aliases then
|
||||||
Cryptid.aliases["saint"] = "j_jane_saint"
|
Cryptid.aliases["saint"] = "j_jane_saint"
|
||||||
|
Cryptid.aliases["attuned"] = "j_jane_saint"
|
||||||
Cryptid.aliases["the saint"] = "j_jane_saint"
|
Cryptid.aliases["the saint"] = "j_jane_saint"
|
||||||
|
Cryptid.aliases["the attuned"] = "j_jane_saint"
|
||||||
end
|
end
|
||||||
|
|
||||||
SMODS.Joker {
|
SMODS.Joker {
|
||||||
|
|
|
||||||
|
|
@ -183,8 +183,8 @@ SMODS.Consumable {
|
||||||
loc_txt = {
|
loc_txt = {
|
||||||
name = "Shadows",
|
name = "Shadows",
|
||||||
text = {
|
text = {
|
||||||
"Create {C:attention}#1#{} {C:green}random {C:dark_edition}Negative",
|
"Create {C:attention}#1#{} random {C:dark_edition}Negative",
|
||||||
"{C:attention}Perishable {C:attention}Jokers{}, set {C:money}sell",
|
"{C:attention}Perishable Jokers{}, set {C:money}sell",
|
||||||
"{C:money}value {}of {C:attention}all Jokers {}to {C:money}$0",
|
"{C:money}value {}of {C:attention}all Jokers {}to {C:money}$0",
|
||||||
},
|
},
|
||||||
},
|
},
|
||||||
|
|
@ -255,7 +255,7 @@ SMODS.Consumable {
|
||||||
loc_txt = {
|
loc_txt = {
|
||||||
name = "Obfuscation",
|
name = "Obfuscation",
|
||||||
text = {
|
text = {
|
||||||
"{C:green,E:1}Randomises{} all cards in hand",
|
"{C:green,E:1}Randomizes{} all cards in hand",
|
||||||
"{C:inactive}(Rank, seal, edition,",
|
"{C:inactive}(Rank, seal, edition,",
|
||||||
"{C:inactive}enhancement, and suit)",
|
"{C:inactive}enhancement, and suit)",
|
||||||
},
|
},
|
||||||
|
|
@ -286,8 +286,8 @@ SMODS.Consumable {
|
||||||
loc_txt = {
|
loc_txt = {
|
||||||
name = "Rift",
|
name = "Rift",
|
||||||
text = {
|
text = {
|
||||||
"{C:attention}Reset {}your deck to a",
|
"{C:red}Reset {}your deck to a",
|
||||||
"{C:attention}standard 52-card deck",
|
"standard 52-card deck",
|
||||||
},
|
},
|
||||||
},
|
},
|
||||||
pos = {x = 4, y = 4},
|
pos = {x = 4, y = 4},
|
||||||
|
|
|
||||||
|
|
@ -100,7 +100,10 @@ for _, v in pairs({
|
||||||
atlas = "janetokens",
|
atlas = "janetokens",
|
||||||
loc_txt = {
|
loc_txt = {
|
||||||
name = v[2] .. " Token",
|
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, _)
|
loc_vars = function(_, info_queue, _)
|
||||||
info_queue[#info_queue + 1] = v[1] ~= "tag_cry_cat" and G.P_TAGS[v[1]] or nil
|
info_queue[#info_queue + 1] = v[1] ~= "tag_cry_cat" and G.P_TAGS[v[1]] or nil
|
||||||
|
|
@ -112,7 +115,9 @@ for _, v in pairs({
|
||||||
can_divide = true,
|
can_divide = true,
|
||||||
can_use = Jane.can_use,
|
can_use = Jane.can_use,
|
||||||
in_pool = function(_, _)
|
in_pool = function(_, _)
|
||||||
return G.GAME.used_vouchers.v_jane_token_voucher or G.GAME.modifiers.Roland_alt_swapper_deck
|
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
|
||||||
end,
|
end,
|
||||||
use = function(_, _, _, _)
|
use = function(_, _, _, _)
|
||||||
play_sound("jane_e_gilded", 1.25, 0.4)
|
play_sound("jane_e_gilded", 1.25, 0.4)
|
||||||
|
|
|
||||||
Loading…
Add table
Reference in a new issue