Compare commits

..

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

7 changed files with 143 additions and 130 deletions

View file

@ -18,5 +18,5 @@
"conflicts": [
"Jen"
],
"version": "1.11.0"
"version": "1.8.7"
}

View file

@ -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",
}
@ -694,9 +694,9 @@ back {
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 +715,6 @@ back {
end
end,
calculate = function(_, _, context)
rebalance_orrery()
G.GAME.mysterious = nil
if Jane.is_end_of_ante(context) then

View file

@ -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}}

View file

@ -214,20 +214,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(...)

View file

@ -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

View file

@ -275,16 +275,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 +344,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
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 +359,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,7 +383,6 @@ 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,
rarity = Jane.cry and exotic or 3,
@ -516,21 +521,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)",
"All 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 +554,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 +575,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 +620,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 +691,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 +744,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 +762,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 +775,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 {

View file

@ -115,9 +115,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)