Completely Rework Saint, Buff Moire, Fix Artificer

This commit is contained in:
Emik 2026-06-23 18:52:55 +02:00
parent f76e4fe160
commit d3193af581
Signed by: emik
GPG key ID: 6B0CD72A5E503BDF
3 changed files with 52 additions and 102 deletions

View file

@ -18,5 +18,5 @@
"conflicts": [
"Jen"
],
"version": "1.8.9"
"version": "1.9.0"
}

View file

@ -184,14 +184,13 @@ 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 = 2,
weight = 1,
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 1 or 0)
return G.GAME.edition_rate * self.weight * (allow_moire() and 20 or 2)
end,
loc_vars = function(self, _, _)
return {vars = {self.config.e_chips, self.config.e_mult}}

View file

@ -383,6 +383,7 @@ 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,
@ -575,25 +576,18 @@ 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 = "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#",
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 {X:legendary,C:white}Eternal{} sticker",
"{C:attention}#4#{}#5#{X:black,C:jane_RGB}#6#{C:spectral}#7#",
"{C:inactive}#8#{C:attention}#9#{C:inactive}#10#",
Jane.cry and "{C:inactive}(Gateway has no downside)" or nil,
},
},
config = {extra = {karma = 0, max_karma = Jane.cry and 10 or 2}},
@ -603,16 +597,7 @@ SMODS.Joker {
rarity = 4,
blueprint_compat = true,
loc_vars = function(_, info_queue, card)
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
info_queue[#info_queue + 1] = Jane.cry and G.P_CENTERS.c_cry_gateway or G.P_CENTERS.c_ankh
local extra = card.ability.extra
local karma = extra.karma
@ -620,35 +605,25 @@ SMODS.Joker {
local attuned = karma >= max_karma
return {
vars = Jane.cry and {
attuned and " (Attuned)" or "",
vars = {
attuned and "" or "The Saint",
attuned and "The" or "",
attuned and "Attuned" or "",
attuned and "" or "Attune ",
attuned and "" or "after using ",
attuned and "^^" .. attunement() or max_karma,
attuned and "" or " Gateways",
attuned and " Mult" or "",
attuned and "alongside its " or "after ",
attuned and "Edition" or max_karma,
attuned and "" or (Jane.cry and " Gateways" or " Ankhs"),
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 "",
attuned and "(Cannot be debuffed)" or " / " .. max_karma .. "]",
},
}
end,
update = function(_, card, _)
card.debuff_immune = card.ability.extra.is_attuned
local extra = card.ability.extra
card.debuff_immune = extra.is_attuned
if card.added_to_deck and card.children.center and card.children.floating_sprite then
local extra = card.ability.extra
if card.children.floating_sprite then
card.children.floating_sprite:set_sprite_pos({x = extra.is_attuned and 2 or 1, y = 0})
end
end,
@ -698,41 +673,6 @@ SMODS.Joker {
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
@ -746,7 +686,7 @@ SMODS.Joker {
local key = context.consumeable:gc().key
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 key ~= "c_cry_gateway" or not Jane.cry and key ~= "c_ankh" then
return
end
@ -777,24 +717,35 @@ SMODS.Joker {
ascend()
end,
Bakery_can_use = function(_, card)
return not card.debuff and Jane.can_use()
end,
Bakery_use_joker = function(self, card)
if not self:Bakery_can_use(card) then
return
end
Bakery_can_use = Jane.can_use,
Bakery_use_joker = function(_, card)
for joker_index = 1, math.max(card.rank - 1, 1) do
local joker = G.jokers.cards[joker_index]
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
return
if card.ability.extra.is_attuned and joker.Roland_frozen then
goto edition_only
end
joker:set_eternal(not joker.ability.eternal)
if not card.ability.extra.is_attuned or joker.ability.eternal then
joker:juice_up()
goto no_edition
end
::edition_only::
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)
::no_edition::
end
end,
}