Compare commits
No commits in common. "main" and "1.11.10" have entirely different histories.
11 changed files with 327 additions and 287 deletions
BIN
assets/1x/default/j_jane_peppino.png
Normal file
BIN
assets/1x/default/j_jane_peppino.png
Normal file
Binary file not shown.
|
After Width: | Height: | Size: 3.1 KiB |
BIN
assets/2x/default/j_jane_peppino.png
Normal file
BIN
assets/2x/default/j_jane_peppino.png
Normal file
Binary file not shown.
|
After Width: | Height: | Size: 4.2 KiB |
20
lovely.toml
20
lovely.toml
|
|
@ -1,7 +1,7 @@
|
||||||
[manifest]
|
[manifest]
|
||||||
version = "1.0.0"
|
version = "1.0.0"
|
||||||
dump_lua = true
|
dump_lua = true
|
||||||
priority = 115
|
priority = 114
|
||||||
|
|
||||||
[[patches]]
|
[[patches]]
|
||||||
[patches.pattern]
|
[patches.pattern]
|
||||||
|
|
@ -16,7 +16,9 @@ match_indent = true
|
||||||
target = "globals.lua"
|
target = "globals.lua"
|
||||||
pattern = "EDITION = {1,1,1,1},"
|
pattern = "EDITION = {1,1,1,1},"
|
||||||
position = "before"
|
position = "before"
|
||||||
payload = "jane_RGB = {1,1,1,1},"
|
payload = '''jane_RGB = {0,0,0,1},
|
||||||
|
jane_RGB_HUE = 0,
|
||||||
|
almighty = {0,0,1,1},'''
|
||||||
match_indent = true
|
match_indent = true
|
||||||
|
|
||||||
[[patches]]
|
[[patches]]
|
||||||
|
|
@ -45,20 +47,16 @@ payload = '''if Jane and
|
||||||
G.ARGS.score_intensity.required_score:to_number() or
|
G.ARGS.score_intensity.required_score:to_number() or
|
||||||
G.ARGS.score_intensity.required_score) ~= 0 then
|
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 small = function (x) return type(x) == "table" and x:to_number() or x end
|
|
||||||
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
|
||||||
local ratio = G.ARGS.score_intensity.earned_score / (big(base) ^ big(expo))
|
local ratio = (G.ARGS.score_intensity.earned_score / (big(base) ^ big(expo))):to_number()
|
||||||
Jane.sinister = small(ratio) > 1
|
Jane.sinister = ratio > 1
|
||||||
|
|
||||||
G.ARGS.score_intensity.ambientSurreal4 =
|
G.ARGS.score_intensity.ambientSurreal4 =
|
||||||
(break_infinity and
|
(break_infinity and
|
||||||
SMODS.Mods.Amulet and
|
SMODS.Mods.Amulet and
|
||||||
G.ARGS.score_intensity.earned_score >= (SMODS.Mods.Amulet
|
G.ARGS.score_intensity.earned_score >= Bakery_API.parse_hyper_e("e10#10##10000")) and 1 or 0
|
||||||
and Big:new { 1.7976931348623157e308, 1, [1.7975e308] = 1 }
|
|
||||||
or Bakery_API.parse_hyper_e 'e10#10##100000'
|
|
||||||
)) and 1 or 0
|
|
||||||
|
|
||||||
G.ARGS.score_intensity.ambientSurreal3 =
|
G.ARGS.score_intensity.ambientSurreal3 =
|
||||||
(G.ARGS.score_intensity.ambientSurreal4 == 0 and
|
(G.ARGS.score_intensity.ambientSurreal4 == 0 and
|
||||||
|
|
@ -67,14 +65,14 @@ payload = '''if Jane and
|
||||||
G.ARGS.score_intensity.ambientSurreal2 =
|
G.ARGS.score_intensity.ambientSurreal2 =
|
||||||
(G.ARGS.score_intensity.ambientSurreal3 == 0 and
|
(G.ARGS.score_intensity.ambientSurreal3 == 0 and
|
||||||
G.ARGS.score_intensity.ambientSurreal4 == 0 and
|
G.ARGS.score_intensity.ambientSurreal4 == 0 and
|
||||||
small(G.ARGS.score_intensity.earned_score /
|
(G.ARGS.score_intensity.earned_score /
|
||||||
(Cryptid and
|
(Cryptid and
|
||||||
big(G.ARGS.score_intensity.required_score) ^
|
big(G.ARGS.score_intensity.required_score) ^
|
||||||
big(G.ARGS.score_intensity.required_score) ^
|
big(G.ARGS.score_intensity.required_score) ^
|
||||||
big(G.ARGS.score_intensity.required_score) or
|
big(G.ARGS.score_intensity.required_score) or
|
||||||
big(2) ^ big(G.ARGS.score_intensity.required_score)
|
big(2) ^ big(G.ARGS.score_intensity.required_score)
|
||||||
)
|
)
|
||||||
) > 1
|
):to_number() > 1
|
||||||
) and 1 or 0
|
) and 1 or 0
|
||||||
|
|
||||||
G.ARGS.score_intensity.ambientSurreal1 =
|
G.ARGS.score_intensity.ambientSurreal1 =
|
||||||
|
|
|
||||||
|
|
@ -9,7 +9,7 @@
|
||||||
"prefix": "jane",
|
"prefix": "jane",
|
||||||
"main_file": "src/main.lua",
|
"main_file": "src/main.lua",
|
||||||
"badge_colour": "3c3cff",
|
"badge_colour": "3c3cff",
|
||||||
"priority": 115,
|
"priority": 114,
|
||||||
"dependencies": [
|
"dependencies": [
|
||||||
"Steamodded (>=1.0.0~BETA-1606b)",
|
"Steamodded (>=1.0.0~BETA-1606b)",
|
||||||
"Lovely (>=0.6)",
|
"Lovely (>=0.6)",
|
||||||
|
|
@ -18,5 +18,5 @@
|
||||||
"conflicts": [
|
"conflicts": [
|
||||||
"Jen"
|
"Jen"
|
||||||
],
|
],
|
||||||
"version": "1.11.28"
|
"version": "1.11.10"
|
||||||
}
|
}
|
||||||
|
|
@ -527,11 +527,8 @@ local function apply_weeck()
|
||||||
|
|
||||||
for _, v in pairs(G.playing_cards) do
|
for _, v in pairs(G.playing_cards) do
|
||||||
if v.base.id == 2 then
|
if v.base.id == 2 then
|
||||||
if Jane.cry then
|
|
||||||
v.ability.cry_absolute = true
|
v.ability.cry_absolute = true
|
||||||
v.ability.eternal = true
|
v.ability.eternal = true
|
||||||
end
|
|
||||||
|
|
||||||
add[#add + 1] = v
|
add[#add + 1] = v
|
||||||
else
|
else
|
||||||
v:start_dissolve(nil, true)
|
v:start_dissolve(nil, true)
|
||||||
|
|
@ -542,7 +539,7 @@ local function apply_weeck()
|
||||||
local dupe = copy_card(v)
|
local dupe = copy_card(v)
|
||||||
dupe:start_materialize()
|
dupe:start_materialize()
|
||||||
dupe:add_to_deck()
|
dupe:add_to_deck()
|
||||||
G.deck:emplace(dupe)
|
G.hand:emplace(dupe)
|
||||||
G.playing_card = (G.playing_card and G.playing_card + 1) or 1
|
G.playing_card = (G.playing_card and G.playing_card + 1) or 1
|
||||||
table.insert(G.playing_cards, dupe)
|
table.insert(G.playing_cards, dupe)
|
||||||
end
|
end
|
||||||
|
|
@ -716,8 +713,6 @@ back {
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
|
||||||
G.hand.config.card_limit = math.max(G.hand.config.card_limit or 12, 12)
|
|
||||||
end,
|
end,
|
||||||
calculate = function(_, _, context)
|
calculate = function(_, _, context)
|
||||||
rebalance_orrery()
|
rebalance_orrery()
|
||||||
|
|
|
||||||
|
|
@ -109,8 +109,7 @@ SMODS.Blind {
|
||||||
vars = {},
|
vars = {},
|
||||||
dollars = Jane.cry and 2 or 5,
|
dollars = Jane.cry and 2 or 5,
|
||||||
in_pool = function()
|
in_pool = function()
|
||||||
return (G.GAME or {}).selected_sleeve ~= "sleeve_Bakery_United" and
|
return ((((G.GAME or {}).selected_back or {}).effect or {}).center or {}).key ~= "b_Bakery_LoneStar"
|
||||||
((((G.GAME or {}).selected_back or {}).effect or {}).center or {}).key ~= "b_Bakery_LoneStar"
|
|
||||||
end,
|
end,
|
||||||
disable = function(self)
|
disable = function(self)
|
||||||
self.disabled = true
|
self.disabled = true
|
||||||
|
|
|
||||||
112
src/edition.lua
112
src/edition.lua
|
|
@ -5,9 +5,7 @@ SMODS.Sound({key = "e_moire", path = "e_moire.ogg"})
|
||||||
SMODS.Sound({key = "e_polygloss", path = "e_polygloss.ogg"})
|
SMODS.Sound({key = "e_polygloss", path = "e_polygloss.ogg"})
|
||||||
|
|
||||||
local function get_weight(self)
|
local function get_weight(self)
|
||||||
return self.weight *
|
return G.GAME.edition_rate * self.weight
|
||||||
G.GAME.edition_rate *
|
|
||||||
(next(SMODS.find_card "j_jane_saint") and 10 or 1)
|
|
||||||
end
|
end
|
||||||
|
|
||||||
SMODS.Edition({
|
SMODS.Edition({
|
||||||
|
|
@ -17,7 +15,7 @@ SMODS.Edition({
|
||||||
label = "Polygloss",
|
label = "Polygloss",
|
||||||
text = Jane.cry and {
|
text = Jane.cry and {
|
||||||
"{C:chips}+#1#{} Chips",
|
"{C:chips}+#1#{} Chips",
|
||||||
"{C:mult}+#2#{}, {X:mult,C:white}X#3#{}, & {X:dark_edition,C:white}^#4#{} Mult",
|
"{C:mult}+#2#{}, {X:mult,C:white}X#3#{}, & {X:mult,C:dark_edition}^#4#{} Mult",
|
||||||
"{C:money}$#5# {}when scored",
|
"{C:money}$#5# {}when scored",
|
||||||
} or {
|
} or {
|
||||||
"{C:chips}+#1#{} Chips",
|
"{C:chips}+#1#{} Chips",
|
||||||
|
|
@ -27,7 +25,7 @@ SMODS.Edition({
|
||||||
},
|
},
|
||||||
config = {
|
config = {
|
||||||
mult = 2,
|
mult = 2,
|
||||||
chips = 22,
|
chips = 12,
|
||||||
x_mult = 1.2,
|
x_mult = 1.2,
|
||||||
p_dollars = 1,
|
p_dollars = 1,
|
||||||
e_mult = Jane.cry and 1.02 or nil,
|
e_mult = Jane.cry and 1.02 or nil,
|
||||||
|
|
@ -36,7 +34,7 @@ SMODS.Edition({
|
||||||
weight = 10,
|
weight = 10,
|
||||||
extra_cost = 2,
|
extra_cost = 2,
|
||||||
in_shop = true,
|
in_shop = true,
|
||||||
shader = "jane_polygloss",
|
shader = "polygloss",
|
||||||
apply_to_float = false,
|
apply_to_float = false,
|
||||||
loc_vars = function(self, _, _)
|
loc_vars = function(self, _, _)
|
||||||
local vars = {self.config.chips}
|
local vars = {self.config.chips}
|
||||||
|
|
@ -71,46 +69,13 @@ SMODS.Edition({
|
||||||
get_weight = get_weight,
|
get_weight = get_weight,
|
||||||
})
|
})
|
||||||
|
|
||||||
local moire = SMODS.Edition({
|
local orig_draw_shader = Sprite.draw_shader
|
||||||
key = "moire",
|
|
||||||
loc_txt = {
|
|
||||||
name = "Moire",
|
|
||||||
label = "Moire",
|
|
||||||
text = {
|
|
||||||
"{X:dark_edition,C:white}^#1#{} Chips",
|
|
||||||
"{X:dark_edition,C:white}^#2#{} Mult",
|
|
||||||
},
|
|
||||||
},
|
|
||||||
config = {e_chips = 0.8, e_mult = 1.2},
|
|
||||||
sound = {sound = "jane_e_moire", per = 1, vol = 0.7},
|
|
||||||
weight = 1,
|
|
||||||
extra_cost = 10,
|
|
||||||
in_shop = true,
|
|
||||||
shader = "jane_moire",
|
|
||||||
apply_to_float = false,
|
|
||||||
get_weight = get_weight,
|
|
||||||
loc_vars = function(self, _, _)
|
|
||||||
return {vars = {self.config.e_chips, self.config.e_mult}}
|
|
||||||
end,
|
|
||||||
calculate = function(self, card, context)
|
|
||||||
if not context.post_joker and (not context.main_scoring or context.cardarea ~= G.play) then
|
|
||||||
return
|
|
||||||
end
|
|
||||||
|
|
||||||
return {
|
function Sprite:draw_shader(_shader, ...)
|
||||||
extra = {
|
if _shader ~= "jane_jumbo" then
|
||||||
card = card,
|
return orig_draw_shader(self, _shader, ...)
|
||||||
colour = G.C.jane_RGB,
|
end
|
||||||
e_chips = self.config.e_chips,
|
end
|
||||||
extra = {
|
|
||||||
card = card,
|
|
||||||
colour = G.C.jane_RGB,
|
|
||||||
e_mult = self.config.e_mult,
|
|
||||||
},
|
|
||||||
},
|
|
||||||
}
|
|
||||||
end,
|
|
||||||
})
|
|
||||||
|
|
||||||
local jumbo_modifier = Jane.cry and 100 or 2
|
local jumbo_modifier = Jane.cry and 100 or 2
|
||||||
|
|
||||||
|
|
@ -195,8 +160,8 @@ local jumbo = SMODS.Edition({
|
||||||
end
|
end
|
||||||
end,
|
end,
|
||||||
sound = {sound = "jane_e_jumbo", per = 1, vol = 0.5},
|
sound = {sound = "jane_e_jumbo", per = 1, vol = 0.5},
|
||||||
weight = 6,
|
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,
|
||||||
|
|
@ -229,16 +194,43 @@ function Card:set_ability(...)
|
||||||
return ret
|
return ret
|
||||||
end
|
end
|
||||||
|
|
||||||
local orig_draw_shader = Sprite.draw_shader
|
SMODS.Edition({
|
||||||
|
key = "moire",
|
||||||
function Sprite:draw_shader(_shader, ...)
|
loc_txt = {
|
||||||
if _shader == "jane_jumbo" then
|
name = "Moire",
|
||||||
return
|
label = "Moire",
|
||||||
end
|
text = {
|
||||||
|
"{X:chips,C:dark_edition}^#1#{C:chips} Chips",
|
||||||
if _shader == "jane_moire" then
|
"{X:mult,C:dark_edition}^#2#{C:mult} Mult",
|
||||||
G.P_CENTERS.j_jane_saint:draw()
|
},
|
||||||
end
|
},
|
||||||
|
config = {e_chips = 0.8, e_mult = 1.2},
|
||||||
return orig_draw_shader(self, _shader, ...)
|
sound = {sound = "jane_e_moire", per = 1, vol = 0.7},
|
||||||
end
|
weight = 1,
|
||||||
|
extra_cost = 10,
|
||||||
|
in_shop = true,
|
||||||
|
shader = "moire",
|
||||||
|
apply_to_float = false,
|
||||||
|
get_weight = get_weight,
|
||||||
|
loc_vars = function(self, _, _)
|
||||||
|
return {vars = {self.config.e_chips, self.config.e_mult}}
|
||||||
|
end,
|
||||||
|
calculate = function(self, card, context)
|
||||||
|
return (
|
||||||
|
context.post_joker or
|
||||||
|
context.main_scoring and
|
||||||
|
context.cardarea == G.play
|
||||||
|
) and {
|
||||||
|
extra = {
|
||||||
|
card = card,
|
||||||
|
colour = G.C.jane_RGB,
|
||||||
|
e_chips = self.config.e_chips,
|
||||||
|
extra = {
|
||||||
|
card = card,
|
||||||
|
colour = G.C.jane_RGB,
|
||||||
|
e_mult = self.config.e_mult,
|
||||||
|
},
|
||||||
|
},
|
||||||
|
} or nil
|
||||||
|
end,
|
||||||
|
})
|
||||||
|
|
|
||||||
182
src/joker.lua
182
src/joker.lua
|
|
@ -1,4 +1,4 @@
|
||||||
for _, v in pairs({"7granddad", "betmma", "escapey", "honey", "oxy", "maxie"}) do
|
for _, v in pairs({"7granddad", "betmma", "escapey", "honey", "oxy", "maxie", Jane.cry and "peppino" or nil}) do
|
||||||
SMODS.Atlas {
|
SMODS.Atlas {
|
||||||
px = 71,
|
px = 71,
|
||||||
py = 95,
|
py = 95,
|
||||||
|
|
@ -15,12 +15,63 @@ SMODS.Sound({key = "corrupt_milestone", path = "corrupt_milestone.ogg"})
|
||||||
SMODS.Sound({key = "corrupt_untick", path = "corrupt_untick.ogg"})
|
SMODS.Sound({key = "corrupt_untick", path = "corrupt_untick.ogg"})
|
||||||
SMODS.Sound({key = "corrupt_tick", path = "corrupt_tick.ogg"})
|
SMODS.Sound({key = "corrupt_tick", path = "corrupt_tick.ogg"})
|
||||||
|
|
||||||
local granddad_palette = {HEX("155fd9"), HEX("ff8170"), HEX("ffffff"), HEX("6c0700")}
|
local exotic = Jane.cry and "cry_exotic" or 4
|
||||||
|
|
||||||
|
local food = {
|
||||||
|
"j_gros_michel",
|
||||||
|
"j_egg",
|
||||||
|
"j_ice_cream",
|
||||||
|
"j_cavendish",
|
||||||
|
"j_turtle_bean",
|
||||||
|
"j_diet_cola",
|
||||||
|
"j_popcorn",
|
||||||
|
"j_ramen",
|
||||||
|
"j_selzer",
|
||||||
|
"j_cry_pickle",
|
||||||
|
"j_cry_chili_pepper",
|
||||||
|
"j_cry_oldcandy",
|
||||||
|
"j_cry_caramel",
|
||||||
|
"j_cry_foodm",
|
||||||
|
"j_cry_cotton_candy",
|
||||||
|
"j_cry_wrapped",
|
||||||
|
"j_cry_candy_cane",
|
||||||
|
"j_cry_candy_buttons",
|
||||||
|
"j_cry_jawbreaker",
|
||||||
|
"j_cry_mellowcreme",
|
||||||
|
"j_cry_brittle",
|
||||||
|
}
|
||||||
|
|
||||||
|
local granddad_palette = {
|
||||||
|
HEX("155fd9"),
|
||||||
|
HEX("ff8170"),
|
||||||
|
HEX("ffffff"),
|
||||||
|
HEX("6c0700"),
|
||||||
|
}
|
||||||
|
|
||||||
local function destructible(card)
|
local function destructible(card)
|
||||||
return card.ability.consumeable and not card.highlighted and not (card.ability or {}).eternal
|
return card.ability.consumeable and not card.highlighted and not (card.ability or {}).eternal
|
||||||
end
|
end
|
||||||
|
|
||||||
|
local function food_jokers_count()
|
||||||
|
if not G.jokers or not next(G.jokers.cards) then
|
||||||
|
return 0
|
||||||
|
end
|
||||||
|
|
||||||
|
local amount = 0
|
||||||
|
|
||||||
|
if G.jokers.cards[1] and G.jokers.cards[1].has_attribute then
|
||||||
|
for _, v in pairs(G.jokers.cards) do
|
||||||
|
amount = amount + (v:has_attribute "food" and 1 or 0)
|
||||||
|
end
|
||||||
|
else
|
||||||
|
for _, v in pairs(food) do
|
||||||
|
amount = amount + #SMODS.find_card(v)
|
||||||
|
end
|
||||||
|
end
|
||||||
|
|
||||||
|
return amount
|
||||||
|
end
|
||||||
|
|
||||||
local function grand_dad(card)
|
local function grand_dad(card)
|
||||||
if ((Talisman or {}).config_file or {}).disable_anims then
|
if ((Talisman or {}).config_file or {}).disable_anims then
|
||||||
return
|
return
|
||||||
|
|
@ -130,8 +181,8 @@ local esc = SMODS.Joker {
|
||||||
loc_vars = function(_, _, card)
|
loc_vars = function(_, _, card)
|
||||||
local extra = card.ability.extra
|
local extra = card.ability.extra
|
||||||
|
|
||||||
local normal = Jane.sinister and {"", ""} or
|
local normal = Jane.sinister and "" or
|
||||||
pseudorandom_element(escapey_quotes.normal, pseudoseed "EscapeyQuotes") or {"", ""}
|
pseudorandom_element(escapey_quotes.normal, pseudoseed "EscapeyQuotes") or ""
|
||||||
|
|
||||||
local scared = not Jane.sinister and "" or
|
local scared = not Jane.sinister and "" or
|
||||||
pseudorandom_element(escapey_quotes.scared, pseudoseed "EscapeyQuotes") or ""
|
pseudorandom_element(escapey_quotes.scared, pseudoseed "EscapeyQuotes") or ""
|
||||||
|
|
@ -249,7 +300,7 @@ SMODS.Joker {
|
||||||
pos = {x = 0, y = 0},
|
pos = {x = 0, y = 0},
|
||||||
sinis = {x = 2, y = 0},
|
sinis = {x = 2, y = 0},
|
||||||
soul_pos = {x = 1, y = 0},
|
soul_pos = {x = 1, y = 0},
|
||||||
blueprint_compat = false,
|
blueprint_compat = true,
|
||||||
cost = 6,
|
cost = 6,
|
||||||
rarity = 2,
|
rarity = 2,
|
||||||
loc_vars = function(_, _, card)
|
loc_vars = function(_, _, card)
|
||||||
|
|
@ -279,9 +330,9 @@ SMODS.Joker {
|
||||||
end,
|
end,
|
||||||
}
|
}
|
||||||
|
|
||||||
function Jane.check_honey()
|
function Jane.update_honey()
|
||||||
if not G.GAME then
|
if not G.GAME then
|
||||||
return true
|
return
|
||||||
end
|
end
|
||||||
|
|
||||||
local honey = SMODS.find_card("j_jane_honey")
|
local honey = SMODS.find_card("j_jane_honey")
|
||||||
|
|
@ -351,7 +402,6 @@ SMODS.Joker {
|
||||||
blueprint_compat = false,
|
blueprint_compat = false,
|
||||||
cost = 8,
|
cost = 8,
|
||||||
rarity = 3,
|
rarity = 3,
|
||||||
add_to_deck = Jane.check_honey,
|
|
||||||
loc_vars = function(_, _, card)
|
loc_vars = function(_, _, card)
|
||||||
local level = tonumber(card.ability.extra.level) or 1
|
local level = tonumber(card.ability.extra.level) or 1
|
||||||
|
|
||||||
|
|
@ -394,10 +444,8 @@ SMODS.Joker {
|
||||||
},
|
},
|
||||||
}
|
}
|
||||||
end,
|
end,
|
||||||
draw = function(_, card)
|
update = function(_, card, _)
|
||||||
if card.added_to_deck and
|
if card.added_to_deck and card.children.center and card.children.floating_sprite then
|
||||||
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) or 1) > 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})
|
||||||
|
|
@ -487,7 +535,7 @@ SMODS.Joker {
|
||||||
name = "Oxy{C:dark_edition}#1#",
|
name = "Oxy{C:dark_edition}#1#",
|
||||||
text = {
|
text = {
|
||||||
"{C:attention}Scored steel {}cards",
|
"{C:attention}Scored steel {}cards",
|
||||||
"give {X:mult,C:white}X#2#{} {}Mult",
|
"give {X:mult,C:white}X#2#{} {C:mult}Mult",
|
||||||
"{C:dark_edition,E:1}#3#{}#4#{C:red}#5#{C:attention}#6#",
|
"{C:dark_edition,E:1}#3#{}#4#{C:red}#5#{C:attention}#6#",
|
||||||
"{C:dark_edition,E:1}#7#{}#8#",
|
"{C:dark_edition,E:1}#7#{}#8#",
|
||||||
"#9#{C:dark_edition,E:1}#10#",
|
"#9#{C:dark_edition,E:1}#10#",
|
||||||
|
|
@ -518,7 +566,7 @@ SMODS.Joker {
|
||||||
is_corrupted and "Purifies " or "",
|
is_corrupted and "Purifies " or "",
|
||||||
is_corrupted and "in " or "",
|
is_corrupted and "in " or "",
|
||||||
is_corrupted and "" or "Destroying ",
|
is_corrupted and "" or "Destroying ",
|
||||||
effective .. (is_corrupted and " round" or " steel card") .. plural,
|
effective .. (is_corrupted and " ante" or " steel card") .. plural,
|
||||||
is_corrupted and "" or "corrupts ",
|
is_corrupted and "" or "corrupts ",
|
||||||
is_corrupted and "Destroying steel cards" or "this Joker",
|
is_corrupted and "Destroying steel cards" or "this Joker",
|
||||||
is_corrupted and "prolongs the " or "",
|
is_corrupted and "prolongs the " or "",
|
||||||
|
|
@ -531,7 +579,7 @@ SMODS.Joker {
|
||||||
},
|
},
|
||||||
}
|
}
|
||||||
end,
|
end,
|
||||||
draw = 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 = extra.is_corrupted and 1 or 0
|
local y = extra.is_corrupted and 1 or 0
|
||||||
|
|
@ -543,7 +591,7 @@ SMODS.Joker {
|
||||||
local extra = card.ability.extra or {}
|
local extra = card.ability.extra or {}
|
||||||
Jane.oxy(card, context.removed)
|
Jane.oxy(card, context.removed)
|
||||||
|
|
||||||
if context.end_of_round and
|
if context.ante_end and context.ante_change and
|
||||||
extra.progress > 0 and not
|
extra.progress > 0 and not
|
||||||
context.individual and not
|
context.individual and not
|
||||||
context.repetition and not
|
context.repetition and not
|
||||||
|
|
@ -598,7 +646,7 @@ if Cryptid and Cryptid.aliases then
|
||||||
end
|
end
|
||||||
|
|
||||||
local operator = Jane.cry and "^" or "X"
|
local operator = Jane.cry and "^" or "X"
|
||||||
local operator_prefix = Jane.cry and "{X:dark_edition,C:white}" or "{X:mult,C:white}"
|
local operator_prefix = Jane.cry and "{X:dark_edition,C:mult}" or "{X:mult,C:white}"
|
||||||
|
|
||||||
SMODS.Joker {
|
SMODS.Joker {
|
||||||
key = "betmma",
|
key = "betmma",
|
||||||
|
|
@ -606,7 +654,7 @@ SMODS.Joker {
|
||||||
loc_txt = {
|
loc_txt = {
|
||||||
name = "Betmma",
|
name = "Betmma",
|
||||||
text = {
|
text = {
|
||||||
operator_prefix .. "+" .. operator .. "#1#{} Mult for every",
|
operator_prefix .. "+" .. operator .. "#1#{C:mult} Mult{} for every",
|
||||||
"{C:attention}" .. (Jane.cry and "Unique " or "") .. "Voucher{} redeemed",
|
"{C:attention}" .. (Jane.cry and "Unique " or "") .. "Voucher{} redeemed",
|
||||||
"{C:inactive}(Currently " .. operator_prefix .. operator .. "#2#{C:inactive})",
|
"{C:inactive}(Currently " .. operator_prefix .. operator .. "#2#{C:inactive})",
|
||||||
},
|
},
|
||||||
|
|
@ -633,12 +681,17 @@ SMODS.Joker {
|
||||||
return {
|
return {
|
||||||
card = card,
|
card = card,
|
||||||
colour = Jane.cry and G.C.jane_RGB or nil,
|
colour = Jane.cry and G.C.jane_RGB or nil,
|
||||||
[Jane.cry and "emult" or "xmult"] = num,
|
message = Jane.cry and (operator .. number_format(num)) or nil,
|
||||||
|
[Jane.cry and "e_mult" or "x_mult"] = num,
|
||||||
}, true
|
}, true
|
||||||
end
|
end
|
||||||
end,
|
end,
|
||||||
}
|
}
|
||||||
|
|
||||||
|
if not Jane.cry then
|
||||||
|
return
|
||||||
|
end
|
||||||
|
|
||||||
SMODS.Joker {
|
SMODS.Joker {
|
||||||
key = "7granddad",
|
key = "7granddad",
|
||||||
loc_txt = {
|
loc_txt = {
|
||||||
|
|
@ -648,70 +701,99 @@ SMODS.Joker {
|
||||||
"{C:jane_RGB,E:1}reaction {}to scored {C:attention}7{}s",
|
"{C:jane_RGB,E:1}reaction {}to scored {C:attention}7{}s",
|
||||||
},
|
},
|
||||||
},
|
},
|
||||||
config = {extra = {}},
|
config = {},
|
||||||
pos = {x = 0, y = 0},
|
pos = {x = 0, y = 0},
|
||||||
soul_pos = {x = 1, y = 0},
|
soul_pos = {x = 1, y = 0},
|
||||||
atlas = "jane7granddad",
|
atlas = "jane7granddad",
|
||||||
blueprint_compat = true,
|
blueprint_compat = true,
|
||||||
cost = 7,
|
cost = Jane.cry and 49 or 7,
|
||||||
rarity = 3,
|
rarity = Jane.cry and exotic or 3,
|
||||||
|
loc_vars = function(_, _, center)
|
||||||
|
return {vars = {center.ability.shopslots}}
|
||||||
|
end,
|
||||||
add_to_deck = function(_, card, _)
|
add_to_deck = function(_, card, _)
|
||||||
grand_dad(card)
|
grand_dad(card)
|
||||||
end,
|
end,
|
||||||
remove_from_deck = function(_, card, _)
|
remove_from_deck = function(_, card, _)
|
||||||
grand_dad(card)
|
grand_dad(card)
|
||||||
end,
|
end,
|
||||||
draw = function()
|
|
||||||
G.P_CENTERS.j_jane_saint:draw()
|
|
||||||
end,
|
|
||||||
calculate = function(_, card, context)
|
calculate = function(_, card, context)
|
||||||
if context.cardarea ~= G.play or
|
if context.cardarea == G.play then
|
||||||
not context.individual or
|
local function scj(c)
|
||||||
not context.other_card or
|
return c.cardarea and c.cardarea == G.play and not c.before and not c.after and not c.repetition
|
||||||
context.other_card:get_id() ~= 7 then
|
|
||||||
return
|
|
||||||
end
|
end
|
||||||
|
|
||||||
local palette = granddad_palette[math.random(#granddad_palette)]
|
if context.other_card and context.other_card:get_id() == 7 and scj(context) then
|
||||||
local cycle = ((card.ability.extra.cycle or -1) + 1) % 5
|
|
||||||
cycle = cycle == 2 and not Jane.cry and 3 or cycle
|
|
||||||
card.ability.extra.cycle = cycle
|
|
||||||
|
|
||||||
if cycle == (Jane.cry and 2 or 3) then
|
|
||||||
grand_dad(card)
|
grand_dad(card)
|
||||||
end
|
local palette = granddad_palette[math.random(#granddad_palette)]
|
||||||
|
local rnd = pseudorandom(pseudoseed("granddad"), 1, Jane.cry and 5 or 4)
|
||||||
|
|
||||||
if cycle == 0 then
|
if rnd == 1 then
|
||||||
return {
|
return {
|
||||||
chips = 177,
|
message = Jane.cry and "+777" or "+77",
|
||||||
|
chips = Jane.cry and 777 or 77,
|
||||||
colour = palette,
|
colour = palette,
|
||||||
card = card,
|
card = card,
|
||||||
}, true
|
}, true
|
||||||
elseif cycle == 1 then
|
elseif rnd == 2 then
|
||||||
return {
|
return {
|
||||||
|
message = Jane.cry and "+777 Mult" or "+77 Mult",
|
||||||
|
mult = Jane.cry and 777 or 77,
|
||||||
|
colour = palette,
|
||||||
|
card = card,
|
||||||
|
}, true
|
||||||
|
elseif rnd == 3 then
|
||||||
|
return {
|
||||||
|
message = "+$7",
|
||||||
dollars = 7,
|
dollars = 7,
|
||||||
colour = palette,
|
colour = palette,
|
||||||
card = card,
|
card = card,
|
||||||
}, true
|
}, true
|
||||||
elseif cycle == 2 then
|
elseif rnd == 4 then
|
||||||
return {
|
return {
|
||||||
emult = 1.17,
|
message = Jane.cry and "X7 Mult" or "X1.77 Mult",
|
||||||
|
x_mult = Jane.cry and 7 or 1.77,
|
||||||
colour = palette,
|
colour = palette,
|
||||||
card = card,
|
card = card,
|
||||||
}, true
|
}, true
|
||||||
elseif cycle == 3 then
|
else
|
||||||
return {
|
return {
|
||||||
xmult = 1.77,
|
message = "^1.77 Mult",
|
||||||
colour = palette,
|
e_mult = 1.77,
|
||||||
card = card,
|
|
||||||
}, true
|
|
||||||
elseif cycle == 4 then
|
|
||||||
return {
|
|
||||||
mult = 77,
|
|
||||||
colour = palette,
|
colour = palette,
|
||||||
card = card,
|
card = card,
|
||||||
}, true
|
}, true
|
||||||
end
|
end
|
||||||
|
end
|
||||||
|
end
|
||||||
|
end,
|
||||||
|
}
|
||||||
|
|
||||||
|
SMODS.Joker {
|
||||||
|
key = "peppino",
|
||||||
|
atlas = "janepeppino",
|
||||||
|
loc_txt = {
|
||||||
|
name = "Peppino Spaghetti",
|
||||||
|
text = {
|
||||||
|
operator_prefix .. operator .. "2{C:mult} Mult{} per {C:attention}Food Joker",
|
||||||
|
"{C:inactive}(Currently " .. operator_prefix .. operator .. "#1#{C:mult} Mult{C:inactive})",
|
||||||
|
},
|
||||||
|
},
|
||||||
|
pos = {x = 0, y = 0},
|
||||||
|
soul_pos = {x = 1, y = 0},
|
||||||
|
config = {extra = {base = 2}},
|
||||||
|
cost = Jane.cry and 20 or 8,
|
||||||
|
rarity = Jane.cry and 4 or 3,
|
||||||
|
blueprint_compat = true,
|
||||||
|
loc_vars = function(_, _, card)
|
||||||
|
return {vars = {card.ability.extra.base ^ food_jokers_count()}}
|
||||||
|
end,
|
||||||
|
calculate = function(_, card, context)
|
||||||
|
local count = food_jokers_count()
|
||||||
|
|
||||||
|
if context.joker_main and count > 0 then
|
||||||
|
return {[Jane.cry and "e_mult" or "x_mult"] = card.ability.extra.base ^ count}
|
||||||
|
end
|
||||||
end,
|
end,
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
||||||
115
src/main.lua
115
src/main.lua
|
|
@ -1,5 +1,5 @@
|
||||||
Jane = {
|
Jane = {
|
||||||
cry = SMODS.Mods.Cryptid and not SMODS.Mods.Cryptid.disabled,
|
cry = not not G.P_CENTERS.j_cry_m,
|
||||||
config = {
|
config = {
|
||||||
texture_pack = "default",
|
texture_pack = "default",
|
||||||
wee_sizemod = math.sqrt(2),
|
wee_sizemod = math.sqrt(2),
|
||||||
|
|
@ -7,7 +7,7 @@ Jane = {
|
||||||
},
|
},
|
||||||
}
|
}
|
||||||
|
|
||||||
Jane.rarity_ids = Jane.cry and {1, 2, 3, "cry_epic", 4, "cry_exotic", "jane_junk"} or {1, 2, 3, "jane_junk"}
|
Jane.rarity_ids = Jane.cry and {1, 2, 3, "cry_epic", 4, "cry_exotic", "jane_junk"} or {1, 2, 3, 4, "jane_junk"}
|
||||||
|
|
||||||
Jane.rarity_names = Jane.cry and {"Common", "Uncommon", "Rare", "Epic", "Legendary", "Exotic", "Junk"} or
|
Jane.rarity_names = Jane.cry and {"Common", "Uncommon", "Rare", "Epic", "Legendary", "Exotic", "Junk"} or
|
||||||
{"Common", "Uncommon", "Rare", "Legendary", "Junk"}
|
{"Common", "Uncommon", "Rare", "Legendary", "Junk"}
|
||||||
|
|
@ -155,33 +155,6 @@ function Jane.hidden(card)
|
||||||
(type(card) == "table" and (card.name == "Black Hole" or card.name == "The Soul") or card.hidden)
|
(type(card) == "table" and (card.name == "Black Hole" or card.name == "The Soul") or card.hidden)
|
||||||
end
|
end
|
||||||
|
|
||||||
function Jane.hsv(h, s, v)
|
|
||||||
if s <= 0 then
|
|
||||||
return v, v, v
|
|
||||||
end
|
|
||||||
|
|
||||||
h = h * 6
|
|
||||||
local c = v * s
|
|
||||||
local x = (1 - math.abs((h % 2) - 1)) * c
|
|
||||||
local m, r, g, b = (v - c), 0, 0, 0
|
|
||||||
|
|
||||||
if h < 1 then
|
|
||||||
r, g, b = c, x, 0
|
|
||||||
elseif h < 2 then
|
|
||||||
r, g, b = x, c, 0
|
|
||||||
elseif h < 3 then
|
|
||||||
r, g, b = 0, c, x
|
|
||||||
elseif h < 4 then
|
|
||||||
r, g, b = 0, x, c
|
|
||||||
elseif h < 5 then
|
|
||||||
r, g, b = x, 0, c
|
|
||||||
else
|
|
||||||
r, g, b = c, 0, x
|
|
||||||
end
|
|
||||||
|
|
||||||
return r + m, g + m, b + m
|
|
||||||
end
|
|
||||||
|
|
||||||
function Jane.is_end_of_ante(context, card)
|
function Jane.is_end_of_ante(context, card)
|
||||||
return not context.individual and not
|
return not context.individual and not
|
||||||
context.repetition and not
|
context.repetition and not
|
||||||
|
|
@ -298,17 +271,75 @@ function Game:main_menu(change_context)
|
||||||
orig_menu(self, change_context)
|
orig_menu(self, change_context)
|
||||||
end
|
end
|
||||||
|
|
||||||
local orig_start_run = Game.start_run
|
local orig_update = Game.update
|
||||||
|
|
||||||
function Game:start_run(...)
|
function Game:update(dt)
|
||||||
orig_start_run(self, ...)
|
local function delete_hardbans()
|
||||||
|
if not Jane.config.disable_bans then
|
||||||
if self.GAME.banned_keys then
|
|
||||||
for _, v in pairs(Jane.config.bans) do
|
for _, v in pairs(Jane.config.bans) do
|
||||||
self.GAME.banned_keys[v] = true
|
local e = SMODS.Center:get_obj(v)
|
||||||
|
|
||||||
|
if e then
|
||||||
|
e:delete()
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
end
|
||||||
|
|
||||||
|
local function hsv(h, s, v)
|
||||||
|
if s <= 0 then
|
||||||
|
return v, v, v
|
||||||
|
end
|
||||||
|
|
||||||
|
h = h * 6
|
||||||
|
local c = v * s
|
||||||
|
local x = (1 - math.abs((h % 2) - 1)) * c
|
||||||
|
local m, r, g, b = (v - c), 0, 0, 0
|
||||||
|
|
||||||
|
if h < 1 then
|
||||||
|
r, g, b = c, x, 0
|
||||||
|
elseif h < 2 then
|
||||||
|
r, g, b = x, c, 0
|
||||||
|
elseif h < 3 then
|
||||||
|
r, g, b = 0, c, x
|
||||||
|
elseif h < 4 then
|
||||||
|
r, g, b = 0, x, c
|
||||||
|
elseif h < 5 then
|
||||||
|
r, g, b = x, 0, c
|
||||||
|
else
|
||||||
|
r, g, b = c, 0, x
|
||||||
|
end
|
||||||
|
|
||||||
|
return r + m, g + m, b + m
|
||||||
|
end
|
||||||
|
|
||||||
|
orig_update(self, 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
|
||||||
|
Jane.update_honey()
|
||||||
|
|
||||||
|
if not Jane.bans_done then
|
||||||
|
Jane.bans_done = true
|
||||||
|
delete_hardbans()
|
||||||
|
end
|
||||||
|
|
||||||
|
if (G.GAME or {}).banned_keys then
|
||||||
|
for _, v in pairs(Jane.config.bans) do
|
||||||
|
G.GAME.banned_keys[v] = true
|
||||||
|
end
|
||||||
|
end
|
||||||
|
|
||||||
|
if G.ARGS.LOC_COLOURS then
|
||||||
|
local r, g, b = hsv(self.C.jane_RGB_HUE / 360, .5, 1)
|
||||||
|
self.C.jane_RGB[1] = r
|
||||||
|
self.C.jane_RGB[3] = g
|
||||||
|
self.C.jane_RGB[2] = b
|
||||||
|
self.C.jane_RGB_HUE = (self.C.jane_RGB_HUE + 0.5) % 360
|
||||||
|
G.ARGS.LOC_COLOURS.jane_RGB = self.C.jane_RGB
|
||||||
|
end
|
||||||
|
end
|
||||||
|
|
||||||
local orig_draw_card = draw_card
|
local orig_draw_card = draw_card
|
||||||
|
|
||||||
|
|
@ -319,20 +350,6 @@ function draw_card(a, b, c, d, e, f, ...)
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
|
||||||
local orig_reset_blinds = reset_blinds
|
|
||||||
|
|
||||||
---@diagnostic disable-next-line: lowercase-global
|
|
||||||
function reset_blinds(...)
|
|
||||||
orig_reset_blinds(...)
|
|
||||||
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
|
|
||||||
end
|
|
||||||
|
|
||||||
loc_colour()
|
|
||||||
G.ARGS.LOC_COLOURS.jane_RGB = G.C.jane_RGB
|
|
||||||
|
|
||||||
SMODS.Atlas {
|
SMODS.Atlas {
|
||||||
px = 34,
|
px = 34,
|
||||||
py = 34,
|
py = 34,
|
||||||
|
|
|
||||||
|
|
@ -127,8 +127,6 @@ function Jane.misprintize_val(val, override, big)
|
||||||
end
|
end
|
||||||
|
|
||||||
function Jane.misprintize_tbl(name, ref_tbl, ref_value, clear, override, stack, big)
|
function Jane.misprintize_tbl(name, ref_tbl, ref_value, clear, override, stack, big)
|
||||||
local is_number = _G.is_number or function(x) return type(x) == "number" end
|
|
||||||
|
|
||||||
if name and ref_tbl and ref_value then
|
if name and ref_tbl and ref_value then
|
||||||
local tbl = deep_copy(ref_tbl[ref_value])
|
local tbl = deep_copy(ref_tbl[ref_value])
|
||||||
|
|
||||||
|
|
|
||||||
127
src/slugcat.lua
127
src/slugcat.lua
|
|
@ -63,25 +63,9 @@ local exotic = Jane.cry and "cry_exotic" or 4
|
||||||
|
|
||||||
SMODS.Rarity {
|
SMODS.Rarity {
|
||||||
key = "junk",
|
key = "junk",
|
||||||
default_weight = 0,
|
default_weight = 1e-9,
|
||||||
pools = {Joker = true},
|
|
||||||
loc_txt = {name = "Junk"},
|
loc_txt = {name = "Junk"},
|
||||||
badge_colour = G.C.JOKER_GREY,
|
badge_colour = G.C.JOKER_GREY,
|
||||||
get_weight = function()
|
|
||||||
local rarity = 0.05
|
|
||||||
|
|
||||||
if next(SMODS.find_card("j_jane_rot")) then
|
|
||||||
return rarity
|
|
||||||
end
|
|
||||||
|
|
||||||
for _, v in pairs(SMODS.find_card("j_jane_honey")) do
|
|
||||||
if tonumber(v.ability.extra.level) == #Jane.rarity_ids - 1 then
|
|
||||||
return rarity
|
|
||||||
end
|
|
||||||
end
|
|
||||||
|
|
||||||
return 0
|
|
||||||
end,
|
|
||||||
}
|
}
|
||||||
|
|
||||||
local monk_limit = 25
|
local monk_limit = 25
|
||||||
|
|
@ -196,7 +180,7 @@ SMODS.Joker {
|
||||||
},
|
},
|
||||||
}
|
}
|
||||||
end,
|
end,
|
||||||
draw = 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
|
||||||
for k, v in ipairs(hunter) do
|
for k, v in ipairs(hunter) do
|
||||||
if card.ability.extra.rounds_left <= v then
|
if card.ability.extra.rounds_left <= v then
|
||||||
|
|
@ -412,13 +396,13 @@ SMODS.Joker {
|
||||||
return not card.debuff and Jane.can_use() and next(G.hand.highlighted)
|
return not card.debuff and Jane.can_use() and next(G.hand.highlighted)
|
||||||
end,
|
end,
|
||||||
Bakery_use_joker = function(_, card)
|
Bakery_use_joker = function(_, card)
|
||||||
local removed = {unpack(G.hand.highlighted)}
|
for _, v in pairs(SMODS.find_card("j_jane_oxy")) do
|
||||||
|
Jane.oxy(v, G.hand.highlighted)
|
||||||
for _, v in pairs(removed) do
|
|
||||||
v:start_dissolve()
|
|
||||||
end
|
end
|
||||||
|
|
||||||
SMODS.calculate_context {remove_playing_cards = true, removed = removed}
|
for _, v in pairs(G.hand.highlighted) do
|
||||||
|
v:start_dissolve()
|
||||||
|
end
|
||||||
|
|
||||||
if Jane.cry then
|
if Jane.cry then
|
||||||
return
|
return
|
||||||
|
|
@ -588,7 +572,7 @@ local orig_debuff = Card.set_debuff
|
||||||
|
|
||||||
function Card:set_debuff(should_debuff)
|
function Card:set_debuff(should_debuff)
|
||||||
if should_debuff and ((self.config or {}).center or {}).debuff_immune then
|
if should_debuff and ((self.config or {}).center or {}).debuff_immune then
|
||||||
Jane.card_status_text(self, "Immune!", nil, 0.05 * self.T.h, G.C.RED, nil, 0.6, nil, nil, "bm", "cancel", 1, 0.9)
|
Jane.card_status_text(self, "Immune", nil, 0.05 * self.T.h, G.C.RED, nil, 0.6, nil, nil, "bm", "cancel", 1, 0.9)
|
||||||
return false
|
return false
|
||||||
else
|
else
|
||||||
orig_debuff(self, should_debuff)
|
orig_debuff(self, should_debuff)
|
||||||
|
|
@ -604,25 +588,24 @@ SMODS.Joker {
|
||||||
"{C:attention}Use {}to toggle itself or",
|
"{C:attention}Use {}to toggle itself or",
|
||||||
"other Jokers to its",
|
"other Jokers to its",
|
||||||
"left's {C:legendary}Eternal{} sticker",
|
"left's {C:legendary}Eternal{} sticker",
|
||||||
"{C:attention}#4#{}#5#{C:spectral}#6#{C:planet}#7#{}#8#",
|
"{C:attention}#4#{}#5#{C:spectral}#6#{}#7#",
|
||||||
"{C:inactive,s:1.25}#9#{C:attention,s:1.25}#10#{C:inactive,s:1.25}#11#",
|
"{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,
|
Jane.cry and "{C:inactive}(Gateway has no downside)" or nil,
|
||||||
},
|
},
|
||||||
},
|
},
|
||||||
config = {extra = {changes_editions = false, jokers = 1, karma = -10}},
|
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,
|
||||||
debuff_immune = true,
|
blueprint_compat = true,
|
||||||
eternal_compat = true,
|
loc_vars = function(_, info_queue, card)
|
||||||
blueprint_compat = false,
|
|
||||||
perishable_compat = true,
|
|
||||||
loc_vars = function(self, info_queue, card)
|
|
||||||
info_queue[#info_queue + 1] = Jane.cry and G.P_CENTERS.c_cry_gateway or nil
|
info_queue[#info_queue + 1] = Jane.cry and G.P_CENTERS.c_cry_gateway or nil
|
||||||
|
|
||||||
local extra = card.ability.extra
|
local extra = card.ability.extra
|
||||||
local attuned = extra.karma >= 0
|
local karma = extra.karma
|
||||||
|
local max_karma = extra.max_karma
|
||||||
|
local attuned = karma >= max_karma
|
||||||
|
|
||||||
return {
|
return {
|
||||||
vars = {
|
vars = {
|
||||||
|
|
@ -632,30 +615,25 @@ SMODS.Joker {
|
||||||
attuned and "" or "Attune ",
|
attuned and "" or "Attune ",
|
||||||
attuned and "" or "at ",
|
attuned and "" or "at ",
|
||||||
attuned and (Jane.cry and "Gateways " or "Spectrals ") or
|
attuned and (Jane.cry and "Gateways " or "Spectrals ") or
|
||||||
(Jane.cry and -self.config.extra.karma .. " Gateways" or ""),
|
max_karma .. (Jane.cry and " Gateways" or " Spectrals"),
|
||||||
(attuned or Jane.cry) and "" or -self.config.extra.karma .. " Planets",
|
|
||||||
attuned and "add Joker slots" or "",
|
attuned and "add Joker slots" or "",
|
||||||
attuned and "[Currently " or "[",
|
attuned and "[Currently " or "[",
|
||||||
attuned and "+" .. extra.karma or extra.karma - self.config.extra.karma,
|
attuned and "+" .. karma or karma,
|
||||||
attuned and "]" or " / " .. -self.config.extra.karma .. "]",
|
attuned and "]" or " / " .. max_karma .. "]",
|
||||||
},
|
},
|
||||||
}
|
}
|
||||||
end,
|
end,
|
||||||
draw = function(_, card)
|
update = function(_, card, _)
|
||||||
local rgb = G.C.jane_RGB
|
|
||||||
rgb[1], rgb[2], rgb[3] = Jane.hsv(1 - (G.TIMERS.REAL / 3 % 1), math.sin(G.TIMERS.REAL) / 10 + 0.6, 1)
|
|
||||||
|
|
||||||
local _ = card and
|
|
||||||
card.children.floating_sprite and
|
|
||||||
card.children.floating_sprite:set_sprite_pos({x = card.ability.extra.is_attuned and 2 or 1, y = 0})
|
|
||||||
end,
|
|
||||||
calculate = function(self, card, context)
|
|
||||||
if card.edition and card.edition.Roland_frozen then
|
if card.edition and card.edition.Roland_frozen then
|
||||||
card:set_edition("e_base", true)
|
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})
|
||||||
end
|
end
|
||||||
|
end,
|
||||||
|
calculate = function(_, card, context)
|
||||||
local extra = card.ability.extra
|
local extra = card.ability.extra
|
||||||
extra.is_attuned = extra.is_attuned and extra.karma >= 0
|
local max_karma = extra.max_karma
|
||||||
|
extra.is_attuned = extra.is_attuned and extra.karma >= max_karma
|
||||||
|
|
||||||
local function ascend()
|
local function ascend()
|
||||||
if extra.is_attuning then
|
if extra.is_attuning then
|
||||||
|
|
@ -689,15 +667,10 @@ SMODS.Joker {
|
||||||
play_sound("card1")
|
play_sound("card1")
|
||||||
extra.is_attuned = true
|
extra.is_attuned = true
|
||||||
end, 1)
|
end, 1)
|
||||||
|
|
||||||
Jane.q(function()
|
|
||||||
extra.karma = Jane.cry and extra.karma + extra.jokers or extra.jokers
|
|
||||||
G.jokers:change_size(extra.jokers)
|
|
||||||
end, 1)
|
|
||||||
end
|
end
|
||||||
|
|
||||||
if extra.karma >= 0 then
|
if extra.karma >= max_karma then
|
||||||
local karma = extra.is_attuning and 0 or (extra.is_attuned and 1 or extra.karma)
|
local karma = (extra.is_attuning or extra.is_attuned) and 0 or extra.karma
|
||||||
G.jokers:change_size(karma * extra.jokers)
|
G.jokers:change_size(karma * extra.jokers)
|
||||||
ascend()
|
ascend()
|
||||||
end
|
end
|
||||||
|
|
@ -711,8 +684,7 @@ SMODS.Joker {
|
||||||
|
|
||||||
local gc = context.consumeable:gc()
|
local gc = context.consumeable:gc()
|
||||||
|
|
||||||
if Jane.cry and gc.key ~= "c_cry_gateway" or
|
if Jane.cry and gc.key ~= "c_cry_gateway" or not Jane.cry and gc.set ~= "Spectral" then
|
||||||
not Jane.cry and gc.set ~= (extra.karma > 0 and "Spectral" or "Planet") then
|
|
||||||
return
|
return
|
||||||
end
|
end
|
||||||
|
|
||||||
|
|
@ -728,41 +700,22 @@ SMODS.Joker {
|
||||||
{message = "+" .. quota .. " Karma", colour = G.C.PALE_GREEN}
|
{message = "+" .. quota .. " Karma", colour = G.C.PALE_GREEN}
|
||||||
)
|
)
|
||||||
|
|
||||||
local _ = extra.karma <= 0 and card_eval_status_text(
|
local _ = extra.karma <= max_karma and card_eval_status_text(
|
||||||
card,
|
card,
|
||||||
"extra",
|
"extra",
|
||||||
nil,
|
nil,
|
||||||
nil,
|
nil,
|
||||||
nil,
|
nil,
|
||||||
{
|
{message = extra.karma .. " / " .. max_karma, colour = G.C.GREEN}
|
||||||
message = (extra.karma - self.config.extra.karma) ..
|
|
||||||
" / " ..
|
|
||||||
-self.config.extra.karma,
|
|
||||||
colour = G.C.GREEN,
|
|
||||||
}
|
|
||||||
)
|
)
|
||||||
|
|
||||||
if extra.karma < 0 then
|
if extra.karma < max_karma then
|
||||||
return
|
return
|
||||||
end
|
end
|
||||||
|
|
||||||
G.jokers:change_size((extra.is_attuned and quota or (Jane.cry and extra.karma or 0)) * extra.jokers)
|
G.jokers:change_size((extra.is_attuned and quota or extra.karma) * extra.jokers)
|
||||||
ascend()
|
ascend()
|
||||||
end,
|
end,
|
||||||
add_to_deck = function(_, card)
|
|
||||||
local extra = card.ability.extra
|
|
||||||
|
|
||||||
local _ = extra.karma > 0 and
|
|
||||||
(extra.is_attuning or extra.is_attuned) and
|
|
||||||
G.jokers:change_size(extra.karma * extra.jokers)
|
|
||||||
end,
|
|
||||||
remove_from_deck = function(_, card)
|
|
||||||
local extra = card.ability.extra
|
|
||||||
|
|
||||||
local _ = extra.karma > 0 and
|
|
||||||
(extra.is_attuning or extra.is_attuned) and
|
|
||||||
G.jokers:change_size(-extra.karma * extra.jokers)
|
|
||||||
end,
|
|
||||||
Bakery_can_use = function(_, card)
|
Bakery_can_use = function(_, card)
|
||||||
return Jane.can_use() and not card.debuff
|
return Jane.can_use() and not card.debuff
|
||||||
end,
|
end,
|
||||||
|
|
@ -818,10 +771,16 @@ SMODS.Joker {
|
||||||
pos = {x = 0, y = 0},
|
pos = {x = 0, y = 0},
|
||||||
soul_pos = {x = 1, y = 0},
|
soul_pos = {x = 1, y = 0},
|
||||||
blueprint_compat = true,
|
blueprint_compat = true,
|
||||||
cost = 2,
|
cost = 1,
|
||||||
rarity = "jane_junk",
|
rarity = "jane_junk",
|
||||||
in_pool = function()
|
in_pool = function(_, _)
|
||||||
return true, {allow_duplicates = true}
|
for _, v in pairs(SMODS.find_card("j_jane_honey")) do
|
||||||
|
if tonumber(v.ability.extra.level) == #Jane.rarity_ids - 1 then
|
||||||
|
return true
|
||||||
|
end
|
||||||
|
end
|
||||||
|
|
||||||
|
return not not next(SMODS.find_card("j_jane_rot"))
|
||||||
end,
|
end,
|
||||||
calculate = Jane.cry and function(_, card, context)
|
calculate = Jane.cry and function(_, card, context)
|
||||||
local function has_room()
|
local function has_room()
|
||||||
|
|
|
||||||
Loading…
Add table
Reference in a new issue