Compare commits
78 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 | |||
| 3b39632c17 | |||
| 96c8732deb | |||
| 218de7ce6b | |||
| f3381d1046 | |||
| d3629c857e | |||
| ec4dd25b36 | |||
| 956bab043d | |||
| de3e416e84 | |||
| 4d656e9fc7 | |||
| 597dc5eaf0 | |||
| 795f6dc3fe | |||
| 54fe6e96dc | |||
| 71b2029f47 | |||
| fa1b398c08 | |||
| 87e5be7ba7 | |||
| d2349ec498 | |||
| 74b185e090 | |||
| 196a9efa9d | |||
| e3e5b574d8 | |||
| bb7f3d7b81 | |||
| 73a7fa0db3 | |||
| 3b50fb132b | |||
| 2e1c67a49e | |||
| b9b1cedb79 | |||
| fd6f25b913 | |||
| 940058d18d | |||
| 2d7cf24aa6 | |||
| 9574b532dc | |||
| 7403424764 | |||
| 0fdef846cb | |||
| e26b590128 | |||
| e902d8b72e | |||
| 2baf0c9d4a | |||
| 1f9b29fda9 | |||
| 2ec2177b69 | |||
| 7ea64afb09 | |||
| 43f0599995 |
24 changed files with 858 additions and 379 deletions
BIN
assets/1x/default/j_jane_escapey.png
Normal file
BIN
assets/1x/default/j_jane_escapey.png
Normal file
Binary file not shown.
|
After Width: | Height: | Size: 2.2 KiB |
BIN
assets/1x/default/v_jane_token_voucher_plus.png
Normal file
BIN
assets/1x/default/v_jane_token_voucher_plus.png
Normal file
Binary file not shown.
|
After Width: | Height: | Size: 2.8 KiB |
Binary file not shown.
|
Before Width: | Height: | Size: 64 KiB |
BIN
assets/2x/default/j_jane_escapey.png
Normal file
BIN
assets/2x/default/j_jane_escapey.png
Normal file
Binary file not shown.
|
After Width: | Height: | Size: 3.2 KiB |
BIN
assets/2x/default/v_jane_token_voucher_plus.png
Normal file
BIN
assets/2x/default/v_jane_token_voucher_plus.png
Normal file
Binary file not shown.
|
After Width: | Height: | Size: 3.6 KiB |
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.
131
lovely.toml
131
lovely.toml
|
|
@ -42,13 +42,44 @@ match_indent = true
|
|||
target = "functions/misc_functions.lua"
|
||||
pattern = "local AC = G.SETTINGS.ambient_control"
|
||||
position = "before"
|
||||
payload = '''if Jane and (type(G.ARGS.score_intensity.required_score) == "table" and G.ARGS.score_intensity.required_score:to_number() or G.ARGS.score_intensity.required_score) ~= 0 then
|
||||
payload = '''if Jane and
|
||||
(type(G.ARGS.score_intensity.required_score) == "table" and
|
||||
G.ARGS.score_intensity.required_score:to_number() or
|
||||
G.ARGS.score_intensity.required_score) ~= 0 then
|
||||
local break_infinity = ((Talisman or {}).config_file or {}).break_infinity
|
||||
local big = (break_infinity == "" or break_infinity == nil) and function (x) return x end or to_big
|
||||
local base = Cryptid and 10 or G.ARGS.score_intensity.required_score
|
||||
local expo = Cryptid and G.ARGS.score_intensity.required_score or 10
|
||||
Jane.sinister = (G.ARGS.score_intensity.earned_score / (big(base) ^ big(expo))):to_number() > 1
|
||||
G.escapey_sinister = Jane.sinister
|
||||
local base = Cryptid and 2 or G.ARGS.score_intensity.required_score
|
||||
local expo = Cryptid and G.ARGS.score_intensity.required_score or 2
|
||||
local ratio = (G.ARGS.score_intensity.earned_score / (big(base) ^ big(expo))):to_number()
|
||||
Jane.sinister = ratio > 1
|
||||
|
||||
G.ARGS.score_intensity.ambientSurreal4 =
|
||||
(break_infinity and
|
||||
SMODS.Mods.Amulet and
|
||||
G.ARGS.score_intensity.earned_score >= Bakery_API.parse_hyper_e("e10#10##10000")) and 1 or 0
|
||||
|
||||
G.ARGS.score_intensity.ambientSurreal3 =
|
||||
(G.ARGS.score_intensity.ambientSurreal4 == 0 and
|
||||
number_format(G.ARGS.score_intensity.earned_score):find("#")) and 1 or 0
|
||||
|
||||
G.ARGS.score_intensity.ambientSurreal2 =
|
||||
(G.ARGS.score_intensity.ambientSurreal3 == 0 and
|
||||
G.ARGS.score_intensity.ambientSurreal4 == 0 and
|
||||
(G.ARGS.score_intensity.earned_score /
|
||||
(Cryptid and
|
||||
big(G.ARGS.score_intensity.required_score) ^
|
||||
big(G.ARGS.score_intensity.required_score) ^
|
||||
big(G.ARGS.score_intensity.required_score) or
|
||||
big(2) ^ big(G.ARGS.score_intensity.required_score)
|
||||
)
|
||||
):to_number() > 1
|
||||
) and 1 or 0
|
||||
|
||||
G.ARGS.score_intensity.ambientSurreal1 =
|
||||
(Jane.sinister and
|
||||
G.ARGS.score_intensity.ambientSurreal2 == 0 and
|
||||
G.ARGS.score_intensity.ambientSurreal3 == 0 and
|
||||
G.ARGS.score_intensity.ambientSurreal4 == 0) and 1 or 0
|
||||
end'''
|
||||
match_indent = true
|
||||
|
||||
|
|
@ -58,7 +89,7 @@ target = "functions/state_events.lua"
|
|||
pattern = "for _, v in ipairs(SMODS.get_card_areas('playing_cards')) do"
|
||||
position = "after"
|
||||
payload = '''if v == G.hand and not (G.GAME.blind and G.GAME.blind.name == "The Card" and not G.GAME.blind.disabled) and next(SMODS.find_card("j_jane_survivor")) then
|
||||
if Cryptid then
|
||||
if Jane.cry then
|
||||
for _, v in ipairs(G.hand.cards) do
|
||||
local area = {cards = {v}}
|
||||
SMODS.calculate_main_scoring({cardarea = area, full_hand = area.cards, scoring_hand = area.cards, scoring_name = text, poker_hands = poker_hands}, area.cards)
|
||||
|
|
@ -152,3 +183,91 @@ pattern = "function SMODS.has_enhancement(card, key)"
|
|||
position = "after"
|
||||
payload = "if not card.config then return false end"
|
||||
match_indent = true
|
||||
|
||||
[[patches]]
|
||||
[patches.pattern]
|
||||
target = "game.lua"
|
||||
pattern = '''self.consumeables = CardArea('''
|
||||
position = "before"
|
||||
payload = '''if not G.GAME.modifiers.jane_spacious then'''
|
||||
match_indent = true
|
||||
|
||||
[[patches]]
|
||||
[patches.pattern]
|
||||
target = "game.lua"
|
||||
pattern = '''self.discard = CardArea('''
|
||||
position = "before"
|
||||
payload = '''else
|
||||
self.jokers = CardArea(
|
||||
0, 0,
|
||||
CAI.joker_W+CAI.consumeable_W,
|
||||
CAI.joker_H,
|
||||
{card_limit = (self.GAME.starting_params.joker_slots +
|
||||
self.GAME.starting_params.consumable_slots -
|
||||
(G.GAME.modifiers.jane_spacious_omega and 0 or 1)) *
|
||||
(G.GAME.modifiers.alt_jane_spacious and 2 or 1),
|
||||
type = 'joker',
|
||||
highlight_limit = 1e100
|
||||
}
|
||||
)
|
||||
|
||||
self.consumeables = self.jokers
|
||||
end'''
|
||||
match_indent = true
|
||||
|
||||
[[patches]]
|
||||
[patches.pattern]
|
||||
target = "functions/common_events.lua"
|
||||
pattern = '''G.consumeables.T.y = 0'''
|
||||
position = "after"
|
||||
payload = '''G.jokers.T.x = G.hand.T.x - 0.1
|
||||
G.jokers.T.y = 0'''
|
||||
match_indent = true
|
||||
|
||||
[[patches]]
|
||||
[patches.pattern]
|
||||
target = "card.lua"
|
||||
pattern = '''if G.consumeables.cards[1] then'''
|
||||
position = "at"
|
||||
payload = '''local eligible = {}
|
||||
|
||||
for i = 1, #G.consumeables.cards do
|
||||
if G.consumeables.cards[i].ability.consumeable then
|
||||
eligible[#eligible + 1] = G.consumeables.cards[i]
|
||||
end
|
||||
end
|
||||
|
||||
if #eligible > 0 then'''
|
||||
match_indent = true
|
||||
|
||||
[[patches]]
|
||||
[patches.pattern]
|
||||
target = "card.lua"
|
||||
pattern = '''local card = copy_card(pseudorandom_element(G.consumeables.cards, pseudoseed('perkeo')), nil)'''
|
||||
position = "at"
|
||||
payload = '''local card = copy_card(pseudorandom_element(eligible, pseudoseed('perkeo')), nil)'''
|
||||
match_indent = true
|
||||
|
||||
[[patches]]
|
||||
[patches.pattern]
|
||||
target = '''=[SMODS _ "src/utils.lua"]'''
|
||||
pattern = '''-- TARGET: add your own CardAreas for joker evaluation'''
|
||||
position = "after"
|
||||
payload = '''
|
||||
if G.GAME.modifiers.jane_spacious then
|
||||
t = {G.jokers, G.vouchers}
|
||||
end'''
|
||||
match_indent = true
|
||||
|
||||
[[patches]]
|
||||
[patches.pattern]
|
||||
target = "functions/misc_functions.lua"
|
||||
pattern = "ambientOrgan1 = {volfunc = function(_prev_volume) return _prev_volume*(1 - dt) + dt*0.6*(G.SETTINGS.SOUND.music_volume + 100)/200*(G.ARGS.score_intensity.organ) end},"
|
||||
position = "after"
|
||||
payload = '''
|
||||
jane_ambientSurreal1 = {volfunc = function(_prev_volume) return _prev_volume*(1 - dt) + dt*0.6*(G.SETTINGS.SOUND.music_volume + 80)/200*((G.ARGS.score_intensity.ambientSurreal1 or 0) * 1.4) end},
|
||||
jane_ambientSurreal2 = {volfunc = function(_prev_volume) return _prev_volume*(1 - dt) + dt*0.6*(G.SETTINGS.SOUND.music_volume + 90)/200*((G.ARGS.score_intensity.ambientSurreal2 or 0) * 1.6) end},
|
||||
jane_ambientSurreal3 = {volfunc = function(_prev_volume) return _prev_volume*(1 - dt) + dt*0.6*(G.SETTINGS.SOUND.music_volume + 100)/200*((G.ARGS.score_intensity.ambientSurreal3 or 0) * 1.8) end},
|
||||
jane_ambientSurreal4 = {volfunc = function(_prev_volume) return _prev_volume*(1 - dt) + dt*0.6*(G.SETTINGS.SOUND.music_volume + 110)/200*((G.ARGS.score_intensity.ambientSurreal4 or 0) * 2) end},
|
||||
'''
|
||||
match_indent = true
|
||||
|
|
|
|||
|
|
@ -5,17 +5,18 @@
|
|||
"jenwalter666",
|
||||
"Emik"
|
||||
],
|
||||
"description": "Fork of Jen's almanac that rebalances the mod by heavily toning down on the power creep and cutting out anything deemed not essential. Made out of genuine love for the original mod.",
|
||||
"description": "Demake of POLTERWORX (formerly Jen's Almanac) that strips down the mod to my favorite components, alongside arbitrary mechanics that I reworked and arbitrary balance changes. Made out of genuine love for the original mod.",
|
||||
"prefix": "jane",
|
||||
"main_file": "src/main.lua",
|
||||
"badge_colour": "3c3cff",
|
||||
"priority": 114,
|
||||
"dependencies": [
|
||||
"Steamodded (>=1.0.0~ALPHA-1304a)",
|
||||
"Bakery (>=0.1.26~*)"
|
||||
"Steamodded (>=1.0.0~BETA-1606b)",
|
||||
"Lovely (>=0.6)",
|
||||
"Bakery (>=3.2.0~*)"
|
||||
],
|
||||
"conflicts": [
|
||||
"Jen"
|
||||
],
|
||||
"version": "1.5.38"
|
||||
"version": "1.11.0"
|
||||
}
|
||||
63
src/back.lua
63
src/back.lua
|
|
@ -102,35 +102,35 @@ back {
|
|||
loc_txt = {
|
||||
name = "Acceleration Deck",
|
||||
text = {
|
||||
Cryptid and "" or "{C:attention}Ante increases twice{} as strong",
|
||||
Jane.cry and "" or "{C:attention}Ante increases twice{} as strong",
|
||||
"After defeating the {C:attention}Boss Blind{},",
|
||||
Cryptid and "set {C:attention}ante {}to the {C:attention}next" or "",
|
||||
Cryptid and "{C:attention}triangle number {}and create" or "",
|
||||
Cryptid and "an {C:spectral,E:1}Empowered Tag" or "create a {C:dark_edition}Negative {C:spectral,E:1}Soul",
|
||||
Jane.cry and "set {C:attention}ante {}to the {C:attention}next" or "",
|
||||
Jane.cry and "{C:attention}triangle number {}and create" or "",
|
||||
Jane.cry and "an {C:spectral,E:1}Empowered Tag" or "create a {C:dark_edition}Negative {C:spectral,E:1}Soul",
|
||||
},
|
||||
},
|
||||
alt_loc_txt = {
|
||||
name = "Jolt Sleeve",
|
||||
text = {
|
||||
Cryptid and "{C:attention}Ante number {}scales with {C:attention}square numbers" or "{C:attention}Ante increases twice{} as strong",
|
||||
Jane.cry and "{C:attention}Ante number {}scales with {C:attention}square numbers" or "{C:attention}Ante increases twice{} as strong",
|
||||
"After defeating the {C:attention}Small {}or {C:attention}Big Blind{},",
|
||||
Cryptid and "create a {C:spectral,E:1}Empowered Tag" or "create a {C:dark_edition}Negative {C:spectral,E:1}Soul",
|
||||
Jane.cry and "create a {C:spectral,E:1}Empowered Tag" or "create a {C:dark_edition}Negative {C:spectral,E:1}Soul",
|
||||
},
|
||||
},
|
||||
loc_vars = function(_, info_queue, _)
|
||||
if info_queue then
|
||||
info_queue[#info_queue + 1] = Cryptid and G.P_TAGS.tag_cry_empowered or G.P_CENTERS.c_soul
|
||||
info_queue[#info_queue + 1] = Jane.cry and G.P_TAGS.tag_cry_empowered or G.P_CENTERS.c_soul
|
||||
end
|
||||
|
||||
return {vars = {}}
|
||||
end,
|
||||
alt_apply = function(_)
|
||||
G.GAME.win_ante = Cryptid and G.GAME.win_ante * G.GAME.win_ante or G.GAME.win_ante * 4 - 1
|
||||
G.GAME.win_ante = Jane.cry and G.GAME.win_ante * G.GAME.win_ante or G.GAME.win_ante * 4 - 1
|
||||
G.GAME.alt_nitro = true
|
||||
G.GAME.nitro = true
|
||||
end,
|
||||
apply = function(_)
|
||||
G.GAME.win_ante = Cryptid and G.GAME.win_ante * (G.GAME.win_ante + 1) / 2 or G.GAME.win_ante * 2 - 1
|
||||
G.GAME.win_ante = Jane.cry and G.GAME.win_ante * (G.GAME.win_ante + 1) / 2 or G.GAME.win_ante * 2 - 1
|
||||
G.GAME.nitro = true
|
||||
end,
|
||||
alt_calculate = function(_, _, context)
|
||||
|
|
@ -152,9 +152,8 @@ back {
|
|||
local rain_world_jokers = {
|
||||
"j_jane_monk",
|
||||
"j_jane_survivor",
|
||||
"j_jane_artificer",
|
||||
"j_jane_spearmaster",
|
||||
"j_jane_rivulet",
|
||||
"j_jane_gourmand",
|
||||
"j_jane_saint",
|
||||
}
|
||||
|
||||
|
|
@ -213,7 +212,7 @@ back {
|
|||
end,
|
||||
}
|
||||
|
||||
if Cryptid then
|
||||
if Jane.cry then
|
||||
back {
|
||||
key = "mysterious",
|
||||
atlas = "janedecks",
|
||||
|
|
@ -431,14 +430,14 @@ back {
|
|||
name = "Orrery Deck",
|
||||
text = {
|
||||
"{C:attention}Hand stats {}are",
|
||||
"always " .. (Cryptid and "{C:cry_ascendant}" or "{C:attention}") .. "equalized",
|
||||
"always " .. (Jane.cry and "{C:cry_ascendant}" or "{C:attention}") .. "equalized",
|
||||
},
|
||||
},
|
||||
alt_loc_txt = {
|
||||
name = "Ephemeris Sleeve",
|
||||
text = {
|
||||
"{C:blue}Hands{}, {C:red}discards{}, and {C:money}money",
|
||||
"are always " .. (Cryptid and "{C:cry_ascendant}" or "{C:attention}") .. "equalized",
|
||||
"are always " .. (Jane.cry and "{C:cry_ascendant}" or "{C:attention}") .. "equalized",
|
||||
},
|
||||
},
|
||||
alt_apply = function(_)
|
||||
|
|
@ -563,7 +562,7 @@ local function two(x)
|
|||
end
|
||||
end
|
||||
|
||||
local eternal_text = Cryptid and "Absolute" or "Eternal"
|
||||
local eternal_text = Jane.cry and "Absolute" or "Eternal"
|
||||
|
||||
back {
|
||||
key = "weeck",
|
||||
|
|
@ -571,7 +570,7 @@ back {
|
|||
pos = {x = 4, y = 1},
|
||||
loc_txt = {
|
||||
name = "Weeck",
|
||||
text = Cryptid and {
|
||||
text = Jane.cry and {
|
||||
"Start with an {C:purple,E:1}" .. eternal_text,
|
||||
"{C:attention}Wee Joker {}and a deck",
|
||||
"containing {C:attention}2 {C:purple,E:1}" .. eternal_text,
|
||||
|
|
@ -623,6 +622,31 @@ back {
|
|||
end,
|
||||
}
|
||||
|
||||
back {
|
||||
key = "spacious",
|
||||
atlas = "janedecks",
|
||||
pos = {x = 4, y = 0},
|
||||
loc_txt = {
|
||||
name = "Spacious Deck",
|
||||
text = {
|
||||
"{C:attention}Joker {}and {C:attention}Consumable",
|
||||
"slots are {C:attention}combined",
|
||||
"{C:attention}-1 {}Slot",
|
||||
},
|
||||
},
|
||||
alt_loc_txt = {
|
||||
name = "Boundless Sleeve",
|
||||
text = {"Slots are {C:attention}doubled"},
|
||||
},
|
||||
alt_apply = function(_)
|
||||
G.GAME.modifiers.alt_jane_spacious = true
|
||||
G.GAME.modifiers.jane_spacious = true
|
||||
end,
|
||||
apply = function(_)
|
||||
G.GAME.modifiers.jane_spacious = true
|
||||
end,
|
||||
}
|
||||
|
||||
local banned_keys = {
|
||||
sleeve_Seen_Seen = true,
|
||||
sleeve_jane_omega = true,
|
||||
|
|
@ -664,13 +688,15 @@ back {
|
|||
end,
|
||||
apply = function(_)
|
||||
apply_orrery()
|
||||
G.GAME.modifiers.jane_spacious = true
|
||||
G.GAME.used_vouchers.v_omen_globe = true
|
||||
G.GAME.modifiers.jane_spacious_omega = true
|
||||
G.GAME.starting_voucher_count = (G.GAME.starting_voucher_count or 0) + 1
|
||||
|
||||
Jane.q(function()
|
||||
add_rain_world_joker()
|
||||
local wee = create_card("Joker", G.jokers, nil, nil, nil, nil, "j_wee", "weeck")
|
||||
G.jokers:emplace(wee)
|
||||
add_rain_world_joker()
|
||||
G.GAME.tortoise = true
|
||||
G.GAME.obsidian = true
|
||||
G.GAME.mysterious = true
|
||||
|
|
@ -689,6 +715,7 @@ back {
|
|||
end
|
||||
end,
|
||||
calculate = function(_, _, context)
|
||||
rebalance_orrery()
|
||||
G.GAME.mysterious = nil
|
||||
|
||||
if Jane.is_end_of_ante(context) then
|
||||
|
|
@ -730,7 +757,7 @@ function ease_ante(mod)
|
|||
end
|
||||
|
||||
if G.GAME.nitro then
|
||||
mod = Cryptid and
|
||||
mod = Jane.cry and
|
||||
(G.GAME.round_resets.ante < 0 and -G.GAME.round_resets.ante or
|
||||
math.ceil(next_number(G.GAME.round_resets.ante) - G.GAME.round_resets.ante)) or
|
||||
(mod > 0 and mod * 2 or mod)
|
||||
|
|
|
|||
|
|
@ -36,9 +36,9 @@ SMODS.Blind {
|
|||
atlas = "janeblinds",
|
||||
pos = {x = 0, y = 0},
|
||||
vars = {},
|
||||
dollars = 6,
|
||||
dollars = Jane.cry and 7 or 5,
|
||||
defeat = function(_)
|
||||
if not Cryptid then
|
||||
if not Jane.cry then
|
||||
offset_operator(2 - Jane.get_operator())
|
||||
elseif not G.GAME.blind.disabled then
|
||||
offset_operator(1)
|
||||
|
|
@ -62,7 +62,7 @@ SMODS.Blind {
|
|||
end,
|
||||
}
|
||||
|
||||
if Cryptid then
|
||||
if Jane.cry then
|
||||
SMODS.Blind {
|
||||
loc_txt = {
|
||||
name = "The Insignia",
|
||||
|
|
@ -98,7 +98,7 @@ end
|
|||
SMODS.Blind {
|
||||
loc_txt = {
|
||||
name = "The Wee",
|
||||
text = {"Only 2s can be played"},
|
||||
text = {"All non-2s are debuffed", "and cannot be played"},
|
||||
},
|
||||
key = "wee",
|
||||
config = {},
|
||||
|
|
@ -107,7 +107,7 @@ SMODS.Blind {
|
|||
atlas = "janeblinds",
|
||||
pos = {x = 0, y = 3},
|
||||
vars = {},
|
||||
dollars = 2,
|
||||
dollars = Jane.cry and 2 or 5,
|
||||
disable = function(self)
|
||||
self.disabled = true
|
||||
end,
|
||||
|
|
@ -123,7 +123,7 @@ SMODS.Blind {
|
|||
end
|
||||
end,
|
||||
get_loc_debuff_text = function(_)
|
||||
return "Hand must contain only 2s"
|
||||
return "Hand must strictly contain only 2s"
|
||||
end,
|
||||
recalc_debuff = function(self, card, _)
|
||||
return not self.disabled and
|
||||
|
|
|
|||
|
|
@ -5,7 +5,7 @@ SMODS.Atlas {
|
|||
path = Jane.config.texture_pack .. "/p_jane_boosters.png",
|
||||
}
|
||||
|
||||
if Cryptid then
|
||||
if Jane.cry then
|
||||
for i = 1, 2 do
|
||||
SMODS.Booster {
|
||||
key = "ministandard" .. i,
|
||||
|
|
|
|||
|
|
@ -10,26 +10,38 @@ local rain_world_jokers = {
|
|||
"j_jane_rot",
|
||||
}
|
||||
|
||||
local is_rain_world_joker = {}
|
||||
local is_rain_world_joker, survival = {}, {}
|
||||
|
||||
for _, v in pairs(rain_world_jokers) do
|
||||
is_rain_world_joker[v] = true
|
||||
end
|
||||
|
||||
Jane.q(function()
|
||||
for gk, g in pairs(G.localization.descriptions) do
|
||||
for ck, c in pairs((type(g) == "table" and not ({Back = true, Sleeve = true})[gk]) and g or {}) do
|
||||
for _, text in pairs((type(c) == "table" and type(c.text) == "table" and G.P_CENTERS[ck]) and c.text or {}) do
|
||||
if type(text) == "string" and (text:find("discard") or text:find("Discard")) then
|
||||
survival[#survival + 1] = {id = ck}
|
||||
break
|
||||
end
|
||||
end
|
||||
end
|
||||
end
|
||||
end, nil, nil, nil, nil, false, true)
|
||||
|
||||
SMODS.Challenge {
|
||||
key = "survival",
|
||||
loc_txt = {name = "Survival"},
|
||||
jokers = {{id = "j_jane_survivor"}},
|
||||
rules = {modifiers = {{id = "discards", value = 0}}},
|
||||
restrictions = {banned_cards = survival},
|
||||
}
|
||||
|
||||
SMODS.Challenge {
|
||||
key = "downpour",
|
||||
loc_txt = {
|
||||
name = "Downpour",
|
||||
},
|
||||
rules = {custom = {
|
||||
{id = "jane_downpour1"},
|
||||
{id = "jane_downpour2"},
|
||||
{id = "jane_downpour3"},
|
||||
{id = "jane_downpour4"},
|
||||
}},
|
||||
loc_txt = {name = "Downpour"},
|
||||
rules = {custom = {{id = "jane_downpour1"}, {id = "jane_downpour2"}, {id = "jane_downpour3"}}},
|
||||
apply = function(_)
|
||||
G.GAME.win_ante = 16
|
||||
|
||||
for _, v in ipairs(rain_world_jokers) do
|
||||
Jane.q(function()
|
||||
local card = create_card("Joker", G.jokers, nil, nil, nil, nil, v, "karma_deck_next")
|
||||
|
|
@ -81,6 +93,3 @@ G.localization.misc.v_text.ch_c_jane_downpour2 =
|
|||
|
||||
G.localization.misc.v_text.ch_c_jane_downpour3 =
|
||||
{"{C:attention}Boss Blind {}is defeated, or {C:red}lose"}
|
||||
|
||||
G.localization.misc.v_text.ch_c_jane_downpour4 =
|
||||
{"Win on {C:attention}Ante 16"}
|
||||
|
|
|
|||
|
|
@ -5,10 +5,6 @@ SMODS.Sound({key = "e_moire", path = "e_moire.ogg"})
|
|||
SMODS.Sound({key = "e_polygloss", path = "e_polygloss.ogg"})
|
||||
|
||||
local function allow_moire()
|
||||
if Cryptid then
|
||||
return true
|
||||
end
|
||||
|
||||
for _, v in pairs(SMODS.find_card("j_jane_saint")) do
|
||||
if v.ability.extra.is_attuned then
|
||||
return true
|
||||
|
|
@ -22,16 +18,12 @@ local function get_weight(self)
|
|||
return G.GAME.edition_rate * self.weight
|
||||
end
|
||||
|
||||
local function is_playing_card(card)
|
||||
return ({Default = true, Enhanced = true})[((card.config or {}).center or {}).set]
|
||||
end
|
||||
|
||||
SMODS.Edition({
|
||||
key = "polygloss",
|
||||
loc_txt = {
|
||||
name = "Polygloss",
|
||||
label = "Polygloss",
|
||||
text = Cryptid and {
|
||||
text = Jane.cry and {
|
||||
"{C:chips}+#1#{} Chips",
|
||||
"{C:mult}+#2#{}, {X:mult,C:white}X#3#{}, & {X:mult,C:dark_edition}^#4#{} Mult",
|
||||
"{C:money}$#5# {}when scored",
|
||||
|
|
@ -46,7 +38,7 @@ SMODS.Edition({
|
|||
chips = 12,
|
||||
x_mult = 1.2,
|
||||
p_dollars = 1,
|
||||
e_mult = Cryptid and 1.02 or nil,
|
||||
e_mult = Jane.cry and 1.02 or nil,
|
||||
},
|
||||
sound = {sound = "jane_e_polygloss", per = 1.2, vol = 0.4},
|
||||
weight = 10,
|
||||
|
|
@ -95,9 +87,9 @@ function Sprite:draw_shader(_shader, ...)
|
|||
end
|
||||
end
|
||||
|
||||
local jumbo_modifier = Cryptid and 100 or 2
|
||||
local jumbo_modifier = Jane.cry and 100 or 2
|
||||
|
||||
SMODS.Edition({
|
||||
local jumbo = SMODS.Edition({
|
||||
key = "jumbo",
|
||||
loc_txt = {
|
||||
name = "Jumbo",
|
||||
|
|
@ -106,22 +98,19 @@ SMODS.Edition({
|
|||
"All card values are",
|
||||
"{C:attention}multiplied{} by {C:attention}up to " .. jumbo_modifier,
|
||||
"{C:inactive}(If possible)",
|
||||
"{C:inactive,E:1,s:0.7}Whoa, it's huge!!{}",
|
||||
"{C:inactive,E:1,s:0.75}Whoa, it's huge!!{}",
|
||||
},
|
||||
},
|
||||
on_apply = function(card)
|
||||
if not Cryptid and is_playing_card(card) then
|
||||
if card.Jane_jumbo then
|
||||
return
|
||||
end
|
||||
|
||||
Jane.q(function()
|
||||
Jane.resize(card, Jane.config.wee_sizemod)
|
||||
end, nil, nil, nil, false, false)
|
||||
|
||||
card.Jane_jumbo = true
|
||||
local obj = card:gc()
|
||||
|
||||
if obj.set == "Booster" or obj.jumbo_mod then
|
||||
jumbo_modifier = obj.jumbo_mod or 10
|
||||
jumbo_modifier = obj.jumbo_mod or 2
|
||||
end
|
||||
|
||||
if card.added_to_deck then
|
||||
|
|
@ -130,19 +119,25 @@ 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 Cryptid and is_playing_card(card) then
|
||||
if not card.Jane_jumbo then
|
||||
return
|
||||
end
|
||||
|
||||
Jane.q(function()
|
||||
Jane.resize(card, 1 / Jane.config.wee_sizemod)
|
||||
end, nil, nil, nil, false, false)
|
||||
|
||||
card.Jane_jumbo = nil
|
||||
local was_added = card.added_to_deck
|
||||
|
||||
if was_added then
|
||||
|
|
@ -151,19 +146,51 @@ 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
|
||||
|
||||
Jane.resize(card)
|
||||
end,
|
||||
sound = {sound = "jane_e_jumbo", per = 1, vol = 0.5},
|
||||
weight = 5,
|
||||
extra_cost = 5,
|
||||
extra_cost = 2,
|
||||
in_shop = true,
|
||||
shader = false,
|
||||
apply_to_float = false,
|
||||
get_weight = get_weight,
|
||||
})
|
||||
|
||||
local orig_set_ability = Card.set_ability
|
||||
|
||||
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
|
||||
end
|
||||
|
||||
SMODS.Edition({
|
||||
key = "moire",
|
||||
loc_txt = {
|
||||
|
|
@ -174,16 +201,15 @@ SMODS.Edition({
|
|||
"{X:mult,C:dark_edition}^#2#{C:mult} Mult",
|
||||
},
|
||||
},
|
||||
config = {e_chips = Cryptid and 0.8 or 0.9, e_mult = Cryptid 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},
|
||||
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}}
|
||||
|
|
|
|||
233
src/joker.lua
233
src/joker.lua
|
|
@ -1,4 +1,4 @@
|
|||
for _, v in pairs({"7granddad", "betmma", "honey", "oxy", "maxie", "peppino"}) do
|
||||
for _, v in pairs({"7granddad", "betmma", "escapey", "honey", "oxy", "maxie", Jane.cry and "peppino" or nil}) do
|
||||
SMODS.Atlas {
|
||||
px = 71,
|
||||
py = 95,
|
||||
|
|
@ -15,7 +15,7 @@ SMODS.Sound({key = "corrupt_milestone", path = "corrupt_milestone.ogg"})
|
|||
SMODS.Sound({key = "corrupt_untick", path = "corrupt_untick.ogg"})
|
||||
SMODS.Sound({key = "corrupt_tick", path = "corrupt_tick.ogg"})
|
||||
|
||||
local exotic = Cryptid and "cry_exotic" or 4
|
||||
local exotic = Jane.cry and "cry_exotic" or 4
|
||||
|
||||
local food = {
|
||||
"j_gros_michel",
|
||||
|
|
@ -48,6 +48,10 @@ local granddad_palette = {
|
|||
HEX("6c0700"),
|
||||
}
|
||||
|
||||
local function destructible(card)
|
||||
return card.ability.consumeable and not card.highlighted and not (card.ability or {}).eternal
|
||||
end
|
||||
|
||||
local function food_jokers_count()
|
||||
if not G.jokers or not next(G.jokers.cards) then
|
||||
return 0
|
||||
|
|
@ -116,6 +120,154 @@ local function voucher_count()
|
|||
return count
|
||||
end
|
||||
|
||||
local escapey_quotes = {
|
||||
marble = {"there is no escape..."},
|
||||
normal = {
|
||||
{"", "I can't wait to work with you!"},
|
||||
{"", "Did you need something from me?"},
|
||||
{"", "Oh! I'm just so happy to see you!"},
|
||||
{"Can I say something irrelevant?", "I promise it won't be long."},
|
||||
{"Tell me about your buddies!", "Assuming you have them, anyway."},
|
||||
},
|
||||
scared = {
|
||||
"What am I going to do?!",
|
||||
"I'm not scared, you are!",
|
||||
"Tell me when this is over...",
|
||||
"I can't keep looking at this!",
|
||||
"Let me go hide in this corner... Okay?",
|
||||
},
|
||||
}
|
||||
|
||||
local function escapey_button_text(card)
|
||||
if card.debuff then
|
||||
return "DEBUFFED"
|
||||
end
|
||||
|
||||
for _, v in ipairs(G.consumeables.cards) do
|
||||
if destructible(v) then
|
||||
return "CONSUME"
|
||||
end
|
||||
end
|
||||
|
||||
return "ESCAPE"
|
||||
end
|
||||
|
||||
local esc = SMODS.Joker {
|
||||
key = "escapey",
|
||||
atlas = "janeescapey",
|
||||
pronouns = "they_them",
|
||||
loc_txt = {
|
||||
name = "Escapey",
|
||||
text = {
|
||||
"{s:1.25}Use to sell {C:attention,s:1.25}tags",
|
||||
"{s:1.25}for {X:money,C:white,s:1.25}$#1#X{s:1.25} each",
|
||||
"If any {C:attention}consumables",
|
||||
"are unselected, sell",
|
||||
"those for {C:money}$#3# {}instead",
|
||||
"{C:inactive,s:0.75,E:1}#4#",
|
||||
"{C:inactive,s:0.75,E:1}#5#{C:red,s:1.5,E:1}#6#",
|
||||
},
|
||||
},
|
||||
config = {extra = {money = 2, xmoney = 2, max = 200, escape_label = "ESCAPE"}},
|
||||
attributes = {"destroy_card", "economy", "tag"},
|
||||
pos = {x = 0, y = 0},
|
||||
sinis = {x = 2, y = 0},
|
||||
soul_pos = {x = 1, y = 0},
|
||||
cost = 4,
|
||||
rarity = 2,
|
||||
eternal_compat = true,
|
||||
blueprint_compat = false,
|
||||
perishable_compat = true,
|
||||
loc_vars = function(_, _, card)
|
||||
local extra = card.ability.extra
|
||||
|
||||
local normal = Jane.sinister and "" or
|
||||
pseudorandom_element(escapey_quotes.normal, pseudoseed "EscapeyQuotes") or ""
|
||||
|
||||
local scared = not Jane.sinister and "" or
|
||||
pseudorandom_element(escapey_quotes.scared, pseudoseed "EscapeyQuotes") or ""
|
||||
|
||||
return {vars = {extra.xmoney, number_format(extra.max), extra.money, normal[1], normal[2], scared}}
|
||||
end,
|
||||
calculate = function(_, card)
|
||||
local extra = card.ability.extra
|
||||
local label = extra.escape_label
|
||||
extra.escape_label = escapey_button_text(card)
|
||||
local _ = label ~= extra.escape_label and Bakery_API.rehighlight(card)
|
||||
end,
|
||||
Bakery_can_use = function(_, card)
|
||||
if not Jane.can_use() or card.debuff then
|
||||
return false
|
||||
end
|
||||
|
||||
if next(G.GAME.tags) then
|
||||
return true
|
||||
end
|
||||
|
||||
for _, v in ipairs(G.consumeables.cards) do
|
||||
if destructible(v) then
|
||||
return true
|
||||
end
|
||||
end
|
||||
|
||||
return false
|
||||
end,
|
||||
Bakery_use_button_text = function(_, card)
|
||||
return card.ability.extra.escape_label
|
||||
end,
|
||||
Bakery_use_joker = function(self, card)
|
||||
if card.debuff then
|
||||
return
|
||||
end
|
||||
|
||||
local times, xtimes = 0, 0
|
||||
local extra = card.ability.extra
|
||||
|
||||
for _, v in ipairs(G.consumeables.cards) do
|
||||
if destructible(v) then
|
||||
v:start_dissolve({HEX "57ecabff"}, nil, 1.6)
|
||||
times = times + 1
|
||||
end
|
||||
end
|
||||
|
||||
if times == 0 then
|
||||
local delay = #G.GAME.tags >= self.tag_threshold and 0 or 1 / #G.GAME.tags
|
||||
local trigger = delay == 0 and "immediate" or "before"
|
||||
|
||||
for _, v in ipairs(G.GAME.tags) do
|
||||
Jane.q(function()
|
||||
attention_text {
|
||||
scale = 0.7,
|
||||
align = "cm",
|
||||
text = "ESC",
|
||||
cover = v.HUD_tag,
|
||||
colour = G.C.WHITE,
|
||||
cover_colour = G.C.BLACK,
|
||||
hold = 0.3 / G.SETTINGS.GAMESPEED,
|
||||
}
|
||||
|
||||
play_sound("cancel", 1.66, 0.5)
|
||||
v.HUD_tag.states.visible = false
|
||||
v:remove()
|
||||
end, delay, nil, trigger, nil, delay ~= 0)
|
||||
|
||||
xtimes = xtimes + 1
|
||||
end
|
||||
end
|
||||
|
||||
local tag_money = Jane.cry and G.GAME.dollars or math.min(G.GAME.dollars, extra.max)
|
||||
local tag_times = Jane.cry and math.pow(extra.xmoney, xtimes) - 1 or xtimes
|
||||
ease_dollars(math.ceil(times * extra.money + tag_money * tag_times))
|
||||
end,
|
||||
tag_threshold = 30,
|
||||
}
|
||||
|
||||
local _ = Jane.cry or table.insert(
|
||||
esc.loc_txt.text,
|
||||
3,
|
||||
"{C:inactive,s:1.25}(Max of {C:money,s:1.25}$#2#{C:inactive,s:1.25})"
|
||||
)
|
||||
|
||||
local maxie_quotes = {
|
||||
normal = {
|
||||
"Hey! I hope we can become great friends together!",
|
||||
|
|
@ -144,7 +296,7 @@ SMODS.Joker {
|
|||
"{C:inactive,s:0.75,E:1}#3#{C:red,s:1.5,E:1}#4#",
|
||||
},
|
||||
},
|
||||
config = {extra = {choices = Cryptid and 2 or 1}},
|
||||
config = {extra = {choices = Jane.cry and 2 or 1}},
|
||||
pos = {x = 0, y = 0},
|
||||
sinis = {x = 2, y = 0},
|
||||
soul_pos = {x = 1, y = 0},
|
||||
|
|
@ -161,14 +313,19 @@ SMODS.Joker {
|
|||
},
|
||||
}
|
||||
end,
|
||||
calculate = function(_, card, context)
|
||||
calculate = function(self, card, context)
|
||||
local _ = context.starting_shop and self:add_to_deck(card, false)
|
||||
end,
|
||||
add_to_deck = function(_, card, from_debuff)
|
||||
if from_debuff then
|
||||
return
|
||||
end
|
||||
|
||||
local min = math.min(card.ability.extra.choices, maxie_limit)
|
||||
card.ability.extra.choices = min
|
||||
|
||||
if context.starting_shop then
|
||||
for _ = 1, min do
|
||||
SMODS.add_booster_to_shop()
|
||||
end
|
||||
for _ = 1, min do
|
||||
SMODS.add_booster_to_shop()
|
||||
end
|
||||
end,
|
||||
}
|
||||
|
|
@ -246,7 +403,7 @@ SMODS.Joker {
|
|||
cost = 8,
|
||||
rarity = 3,
|
||||
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 acc = ""
|
||||
|
|
@ -290,12 +447,12 @@ SMODS.Joker {
|
|||
update = function(_, card, _)
|
||||
if card.added_to_deck and card.children.center and card.children.floating_sprite then
|
||||
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.floating_sprite:set_sprite_pos({x = Jane.sinister and 2 or 1, y = y})
|
||||
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
|
||||
card:juice_up(0, math.random() * (level - 2) / #Jane.rarity_ids)
|
||||
|
|
@ -303,7 +460,7 @@ SMODS.Joker {
|
|||
end,
|
||||
}
|
||||
|
||||
if Cryptid then
|
||||
if Cryptid and Cryptid.aliases then
|
||||
Cryptid.aliases["honey"] = "j_jane_honey"
|
||||
end
|
||||
|
||||
|
|
@ -313,7 +470,7 @@ function SMODS.poll_rarity(_pool_key, _rand_key)
|
|||
local max = 0
|
||||
|
||||
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
|
||||
|
||||
local rarity = orig_rarity(_pool_key, _rand_key)
|
||||
|
|
@ -385,7 +542,7 @@ SMODS.Joker {
|
|||
"{C:inactive,s:0.75,E:1}#11#{C:red,s:1.5,E:1}#12#",
|
||||
},
|
||||
},
|
||||
config = {extra = {corrupted_steel = Cryptid and 20 or 5, is_corrupted = false, milestone = 3, progress = 0}},
|
||||
config = {extra = {corrupted_steel = Jane.cry and 20 or 5, is_corrupted = false, milestone = 3, progress = 0}},
|
||||
pos = {x = 0, y = 0},
|
||||
sinis = {x = 2, y = 0},
|
||||
soul_pos = {x = 1, y = 0},
|
||||
|
|
@ -484,12 +641,12 @@ SMODS.Joker {
|
|||
end,
|
||||
}
|
||||
|
||||
if Cryptid then
|
||||
if Cryptid and Cryptid.aliases then
|
||||
Cryptid.aliases["oxy"] = "j_jane_oxy"
|
||||
end
|
||||
|
||||
local operator = Cryptid and "^" or "X"
|
||||
local operator_prefix = Cryptid and "{X:dark_edition,C:mult}" or "{X:mult,C:white}"
|
||||
local operator = Jane.cry and "^" or "X"
|
||||
local operator_prefix = Jane.cry and "{X:dark_edition,C:mult}" or "{X:mult,C:white}"
|
||||
|
||||
SMODS.Joker {
|
||||
key = "betmma",
|
||||
|
|
@ -498,16 +655,16 @@ SMODS.Joker {
|
|||
name = "Betmma",
|
||||
text = {
|
||||
operator_prefix .. "+" .. operator .. "#1#{C:mult} Mult{} for every",
|
||||
"{C:attention}unique Voucher redeemed",
|
||||
"{C:attention}" .. (Jane.cry and "Unique " or "") .. "Voucher{} redeemed",
|
||||
"{C:inactive}(Currently " .. operator_prefix .. operator .. "#2#{C:inactive})",
|
||||
},
|
||||
},
|
||||
config = {extra = {tet = Cryptid and 0.25 or 0.5}},
|
||||
config = {extra = {tet = Jane.cry and 0.25 or 0.5}},
|
||||
pos = {x = 0, y = 0},
|
||||
soul_pos = {x = 1, y = 0},
|
||||
blueprint_compat = true,
|
||||
cost = Cryptid and 20 or 8,
|
||||
rarity = Cryptid and 4 or 3,
|
||||
cost = Jane.cry and 20 or 8,
|
||||
rarity = Jane.cry and 4 or 3,
|
||||
loc_vars = function(_, _, center)
|
||||
return {vars = {center.ability.extra.tet, 1 + (voucher_count() * center.ability.extra.tet)}}
|
||||
end,
|
||||
|
|
@ -523,14 +680,18 @@ SMODS.Joker {
|
|||
|
||||
return {
|
||||
card = card,
|
||||
colour = Cryptid and G.C.jane_RGB or nil,
|
||||
message = Cryptid and (operator .. number_format(num)) or nil,
|
||||
[Cryptid and "e_mult" or "x_mult"] = num,
|
||||
colour = Jane.cry and G.C.jane_RGB or nil,
|
||||
message = Jane.cry and (operator .. number_format(num)) or nil,
|
||||
[Jane.cry and "e_mult" or "x_mult"] = num,
|
||||
}, true
|
||||
end
|
||||
end,
|
||||
}
|
||||
|
||||
if not Jane.cry then
|
||||
return
|
||||
end
|
||||
|
||||
SMODS.Joker {
|
||||
key = "7granddad",
|
||||
loc_txt = {
|
||||
|
|
@ -545,8 +706,8 @@ SMODS.Joker {
|
|||
soul_pos = {x = 1, y = 0},
|
||||
atlas = "jane7granddad",
|
||||
blueprint_compat = true,
|
||||
cost = Cryptid and 49 or 7,
|
||||
rarity = Cryptid and exotic or 3,
|
||||
cost = Jane.cry and 49 or 7,
|
||||
rarity = Jane.cry and exotic or 3,
|
||||
loc_vars = function(_, _, center)
|
||||
return {vars = {center.ability.shopslots}}
|
||||
end,
|
||||
|
|
@ -565,19 +726,19 @@ SMODS.Joker {
|
|||
if context.other_card and context.other_card:get_id() == 7 and scj(context) then
|
||||
grand_dad(card)
|
||||
local palette = granddad_palette[math.random(#granddad_palette)]
|
||||
local rnd = pseudorandom(pseudoseed("granddad"), 1, Cryptid and 5 or 4)
|
||||
local rnd = pseudorandom(pseudoseed("granddad"), 1, Jane.cry and 5 or 4)
|
||||
|
||||
if rnd == 1 then
|
||||
return {
|
||||
message = Cryptid and "+777" or "+77",
|
||||
chips = Cryptid and 777 or 77,
|
||||
message = Jane.cry and "+777" or "+77",
|
||||
chips = Jane.cry and 777 or 77,
|
||||
colour = palette,
|
||||
card = card,
|
||||
}, true
|
||||
elseif rnd == 2 then
|
||||
return {
|
||||
message = Cryptid and "+777 Mult" or "+77 Mult",
|
||||
mult = Cryptid and 777 or 77,
|
||||
message = Jane.cry and "+777 Mult" or "+77 Mult",
|
||||
mult = Jane.cry and 777 or 77,
|
||||
colour = palette,
|
||||
card = card,
|
||||
}, true
|
||||
|
|
@ -590,8 +751,8 @@ SMODS.Joker {
|
|||
}, true
|
||||
elseif rnd == 4 then
|
||||
return {
|
||||
message = Cryptid and "X7 Mult" or "X1.77 Mult",
|
||||
x_mult = Cryptid and 7 or 1.77,
|
||||
message = Jane.cry and "X7 Mult" or "X1.77 Mult",
|
||||
x_mult = Jane.cry and 7 or 1.77,
|
||||
colour = palette,
|
||||
card = card,
|
||||
}, true
|
||||
|
|
@ -621,8 +782,8 @@ SMODS.Joker {
|
|||
pos = {x = 0, y = 0},
|
||||
soul_pos = {x = 1, y = 0},
|
||||
config = {extra = {base = 2}},
|
||||
rarity = 3,
|
||||
cost = 8,
|
||||
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()}}
|
||||
|
|
@ -631,7 +792,7 @@ SMODS.Joker {
|
|||
local count = food_jokers_count()
|
||||
|
||||
if context.joker_main and count > 0 then
|
||||
return {[Cryptid and "e_mult" or "x_mult"] = card.ability.extra.base ^ count}
|
||||
return {[Jane.cry and "e_mult" or "x_mult"] = card.ability.extra.base ^ count}
|
||||
end
|
||||
end,
|
||||
}
|
||||
|
|
|
|||
87
src/main.lua
87
src/main.lua
|
|
@ -1,17 +1,15 @@
|
|||
Jane = {
|
||||
cry = not not G.P_CENTERS.j_cry_m,
|
||||
config = {
|
||||
wee_sizemod = 1.25,
|
||||
texture_pack = "default",
|
||||
wee_sizemod = math.sqrt(2),
|
||||
bans = {"j_cry_crustulum", "c_cry_hammerspace"},
|
||||
},
|
||||
}
|
||||
|
||||
Jane.misprintize = (Cryptid or {}).misprintize
|
||||
Jane.misprintize_tbl = (Cryptid or {}).misprintize_tbl
|
||||
Jane.misprinitze_val = (Cryptid or {}).misprintize_val
|
||||
Jane.rarity_ids = Cryptid and {1, 2, 3, "cry_epic", 4, "cry_exotic", "jane_junk"} or {1, 2, 3, 4, "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 = Cryptid 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"}
|
||||
|
||||
if not Jane.misprintize then
|
||||
|
|
@ -115,7 +113,7 @@ function Jane.card_status_text(
|
|||
end
|
||||
|
||||
function Jane.empowered()
|
||||
if Cryptid then
|
||||
if Jane.cry then
|
||||
add_tag(Tag("tag_cry_empowered"))
|
||||
return
|
||||
end
|
||||
|
|
@ -173,15 +171,24 @@ function Jane.play_sound(sound, per, vol)
|
|||
end)
|
||||
end
|
||||
|
||||
function Jane.resize(card, mod, force_save)
|
||||
if force_save or not card.origsize then
|
||||
function Jane.resize(card, mod)
|
||||
if not card.origsize then
|
||||
card.origsize = {w = card.T.w, h = card.T.h}
|
||||
end
|
||||
|
||||
card:hard_set_T(card.T.x, card.T.y, card.T.w * mod, card.T.h * mod)
|
||||
card:hard_set_T(
|
||||
card.T.x,
|
||||
card.T.y,
|
||||
mod and mod * card.T.w or card.origsize.w,
|
||||
mod and mod * card.T.h or card.origsize.h
|
||||
)
|
||||
|
||||
if not mod then
|
||||
card.origsize = nil
|
||||
end
|
||||
|
||||
remove_all(card.children)
|
||||
card.children = {}
|
||||
card.children.shadow = Moveable(0, 0, 0, 0)
|
||||
card.children = {shadow = Moveable(0, 0, 0, 0)}
|
||||
card:set_sprites(card.config.center, card.base.id and card.config.card)
|
||||
|
||||
if card.area and
|
||||
|
|
@ -192,13 +199,14 @@ function Jane.resize(card, mod, force_save)
|
|||
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({
|
||||
delay = delay,
|
||||
timer = timer,
|
||||
trigger = (delay and not trigger) and "after" or trigger,
|
||||
blocking = blocking,
|
||||
blockable = blockable,
|
||||
no_delete = no_delete,
|
||||
func = function(...)
|
||||
local ret = func(...)
|
||||
return ret == nil and true or ret
|
||||
|
|
@ -206,6 +214,44 @@ function Jane.q(func, delay, timer, trigger, blockable, blocking)
|
|||
}))
|
||||
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(...)
|
||||
if self ~= G.consumeables then
|
||||
return orig_can_highlight(self, ...)
|
||||
end
|
||||
|
||||
local has_escapey = next(SMODS.find_card("j_jane_escapey"))
|
||||
local config = self.config
|
||||
config.old_limit = config.highlighted_limit == 1 / 0 and config.old_limit or config.highlighted_limit
|
||||
config.highlighted_limit = has_escapey and 1 / 0 or config.old_limit
|
||||
return has_escapey and true or orig_can_highlight(self, ...)
|
||||
end
|
||||
|
||||
local orig_highlight = Card.highlight
|
||||
|
||||
function Card:highlight(is_highlighted, ...)
|
||||
self.highlighted = is_highlighted
|
||||
|
||||
if not G.CONTROLLER.HID.controller then
|
||||
return orig_highlight(self, is_highlighted, ...)
|
||||
end
|
||||
end
|
||||
|
||||
function Card:gc()
|
||||
return (self.config or {}).center or {}
|
||||
end
|
||||
|
|
@ -271,7 +317,7 @@ function Game:update(dt)
|
|||
local ante = G.GAME.round_resets.ante
|
||||
local blind = get_blind_amount((ante >= 1 and ante <= 8) and math.floor(ante) or ante)
|
||||
G.P_BLINDS["bl_jane_wee"].mult = 22 / blind
|
||||
G.P_BLINDS["bl_jane_descending"].mult = math.floor(8 * math.sqrt(blind)) / blind
|
||||
G.P_BLINDS["bl_jane_descending"].mult = math.ceil(8 * math.sqrt(blind)) / blind
|
||||
Jane.update_honey()
|
||||
|
||||
if not Jane.bans_done then
|
||||
|
|
@ -295,6 +341,15 @@ function Game:update(dt)
|
|||
end
|
||||
end
|
||||
|
||||
local orig_draw_card = draw_card
|
||||
|
||||
---@diagnostic disable-next-line: lowercase-global
|
||||
function draw_card(a, b, c, d, e, f, ...)
|
||||
if type(f) ~= "table" or (not f.shattered and not f.destroyed) then
|
||||
return orig_draw_card(a, b, c, d, e, f, ...)
|
||||
end
|
||||
end
|
||||
|
||||
SMODS.Atlas {
|
||||
px = 34,
|
||||
py = 34,
|
||||
|
|
@ -309,6 +364,10 @@ SMODS.Atlas {
|
|||
path = Jane.config.texture_pack .. "/c_jane_acc.png",
|
||||
}
|
||||
|
||||
for i = 1, 4 do
|
||||
SMODS.Sound({key = "ambientSurreal" .. i, path = "ambient_surreal" .. i .. ".ogg"})
|
||||
end
|
||||
|
||||
for _, v in ipairs({
|
||||
"back",
|
||||
"blind",
|
||||
|
|
|
|||
|
|
@ -133,8 +133,11 @@ function Jane.misprintize_tbl(name, ref_tbl, ref_value, clear, override, stack,
|
|||
for k, v in pairs(tbl) do
|
||||
if (type(tbl[k]) ~= "table") or is_number(tbl[k]) then
|
||||
if is_number(tbl[k]) and not
|
||||
(k == "x_chips" and not Jane.cry) and not
|
||||
(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
|
||||
|
|
|
|||
496
src/slugcat.lua
496
src/slugcat.lua
|
|
@ -12,7 +12,7 @@ SMODS.Sound({
|
|||
select_music_track = function()
|
||||
for _, v in pairs(SMODS.find_card("j_jane_saint")) do
|
||||
if v.ability.extra.is_attuned then
|
||||
return Jane.sinister and -1 / 0 or 10
|
||||
return 201
|
||||
end
|
||||
end
|
||||
|
||||
|
|
@ -25,9 +25,13 @@ SMODS.Sound({
|
|||
path = "music_attuned_sinister.ogg",
|
||||
volume = 1,
|
||||
select_music_track = function()
|
||||
if not Jane.sinister then
|
||||
return -1 / 0
|
||||
end
|
||||
|
||||
for _, v in pairs(SMODS.find_card("j_jane_saint")) do
|
||||
if v.ability.extra.is_attuned then
|
||||
return Jane.sinister and 10 or -1 / 0
|
||||
return 202
|
||||
end
|
||||
end
|
||||
|
||||
|
|
@ -54,8 +58,8 @@ for _, v in pairs({
|
|||
}
|
||||
end
|
||||
|
||||
local epic = Cryptid and "cry_epic" or 3
|
||||
local exotic = Cryptid and "cry_exotic" or 4
|
||||
local epic = Jane.cry and "cry_epic" or 3
|
||||
local exotic = Jane.cry and "cry_exotic" or 4
|
||||
|
||||
SMODS.Rarity {
|
||||
key = "junk",
|
||||
|
|
@ -124,10 +128,10 @@ SMODS.Joker {
|
|||
loc_txt = {
|
||||
name = "The Survivor",
|
||||
text = {
|
||||
"All cards held in hand",
|
||||
"{C:attention}contribute to scoring" .. (Cryptid and " {}and" or ""),
|
||||
Cryptid and "are all considered as" or nil,
|
||||
Cryptid and "the {C:attention}first played card" or nil,
|
||||
"All cards held in",
|
||||
"hand also {C:attention}score" .. (Jane.cry and " {}and" or ""),
|
||||
Jane.cry and "considered as the" or nil,
|
||||
Jane.cry and "{C:attention}first {}played card" or nil,
|
||||
},
|
||||
},
|
||||
pos = {x = 0, y = 0},
|
||||
|
|
@ -144,11 +148,9 @@ SMODS.Joker {
|
|||
loc_txt = {
|
||||
name = "The Hunter",
|
||||
text = {
|
||||
"{C:blue}Provides infinite hands",
|
||||
"{C:red,s,E:1}Succumbs to the Rot {}and creates",
|
||||
(Cryptid and "an {C:spectral}Empowered Tag" or "a {C:dark_edition}Negative {C:spectral}Soul") .. " {}after #1#",
|
||||
"When {C:attention}sold#2#{}, turns#3#",
|
||||
"#4#{C:red}The Rot{} without rewards",
|
||||
"{E:1}Succumbs to the {X:black,C:white,E:1}Rot{},",
|
||||
(Jane.cry and "creating an {C:spectral}Empowered" or "creating a {C:dark_edition}Negative"),
|
||||
(Jane.cry and "{C:spectral}Tag" or "{C:spectral}Soul") .. " {}after #1#",
|
||||
},
|
||||
},
|
||||
config = {extra = {rounds_left = hunter[1]}},
|
||||
|
|
@ -157,14 +159,15 @@ SMODS.Joker {
|
|||
blueprint_compat = false,
|
||||
perishable_compat = false,
|
||||
soul_pos = {x = 1, y = 0},
|
||||
cost = Cryptid and 15 or 8,
|
||||
rarity = Cryptid and epic or 3,
|
||||
cost = Jane.cry and 15 or 8,
|
||||
rarity = Jane.cry and epic or 3,
|
||||
loc_vars = function(_, info_queue, card)
|
||||
local function rounds(amount)
|
||||
return " round" .. ((math.abs(amount) > 1 or math.abs(amount) == 0) and "s" or "")
|
||||
end
|
||||
|
||||
info_queue[#info_queue + 1] = Cryptid and G.P_CENTERS.c_cry_empowered or G.P_CENTERS.c_soul
|
||||
info_queue[#info_queue + 1] = G.P_CENTERS.j_jane_rot
|
||||
info_queue[#info_queue + 1] = Jane.cry and G.P_CENTERS.c_cry_empowered or G.P_CENTERS.c_soul
|
||||
local rounds_left = card.ability.extra.rounds_left
|
||||
local sold = rounds_left - hunter[5]
|
||||
|
||||
|
|
@ -218,72 +221,51 @@ SMODS.Joker {
|
|||
spawn_rot()
|
||||
end
|
||||
|
||||
if context.blueprint then
|
||||
if context.blueprint or
|
||||
context.individual or
|
||||
context.repetition or
|
||||
context.retrigger_joker or
|
||||
not context.end_of_round then
|
||||
return
|
||||
end
|
||||
|
||||
if context.selling_self and card.ability.extra.rounds_left <= hunter[5] then
|
||||
spawn_rot()
|
||||
elseif not context.individual and not context.repetition and not context.retrigger_joker then
|
||||
if G.GAME.round_resets.hands <= 0 then
|
||||
G.GAME.round_resets.hands = 1
|
||||
card.ability.extra.rounds_left = card.ability.extra.rounds_left - 1
|
||||
local rl = card.ability.extra.rounds_left
|
||||
Jane.card_status_text(card, tostring(card.ability.extra.rounds_left), nil, nil, G.C.RED, nil, nil, nil, nil,
|
||||
nil, "generic1")
|
||||
|
||||
if rl > hunter[2] then
|
||||
card:juice_up(0.6, 0.1)
|
||||
elseif rl > hunter[3] then
|
||||
if rl == hunter[2] then
|
||||
Jane.play_sound("jane_gore1")
|
||||
end
|
||||
|
||||
if not card.hunter_prep then
|
||||
card.hunter_prep = true
|
||||
|
||||
Jane.q(function()
|
||||
card.hunter_prep = nil
|
||||
|
||||
if G.GAME.current_round.hands_left < G.GAME.round_resets.hands then
|
||||
ease_hands_played(G.GAME.round_resets.hands - G.GAME.current_round.hands_left)
|
||||
end
|
||||
end)
|
||||
card:juice_up(0.6, 0.1)
|
||||
elseif rl > hunter[4] then
|
||||
if rl == hunter[3] then
|
||||
Jane.play_sound("jane_gore3")
|
||||
end
|
||||
|
||||
if not context.end_of_round then
|
||||
return
|
||||
card:juice_up(0.6, 0.1)
|
||||
elseif rl > hunter[5] then
|
||||
if rl == hunter[4] then
|
||||
Jane.play_sound("jane_gore8")
|
||||
end
|
||||
|
||||
card.hunter_prep = nil
|
||||
card.ability.extra.rounds_left = card.ability.extra.rounds_left - 1
|
||||
local rl = card.ability.extra.rounds_left
|
||||
Jane.card_status_text(card, tostring(card.ability.extra.rounds_left), nil, nil, G.C.RED, nil, nil, nil, nil,
|
||||
nil, "generic1")
|
||||
|
||||
if rl > hunter[2] then
|
||||
card:juice_up(0.6, 0.1)
|
||||
elseif rl > hunter[3] then
|
||||
if rl == hunter[2] then
|
||||
Jane.play_sound("jane_gore1")
|
||||
end
|
||||
|
||||
card:juice_up(0.6, 0.1)
|
||||
elseif rl > hunter[4] then
|
||||
if rl == hunter[3] then
|
||||
Jane.play_sound("jane_gore3")
|
||||
end
|
||||
|
||||
card:juice_up(0.6, 0.1)
|
||||
elseif rl > hunter[5] then
|
||||
if rl == hunter[4] then
|
||||
Jane.play_sound("jane_gore8")
|
||||
end
|
||||
|
||||
card:juice_up(0.6, 0.1)
|
||||
Jane.play_sound("jane_warning_heartbeat")
|
||||
elseif rl > 0 then
|
||||
if rl == hunter[5] then
|
||||
Jane.play_sound("jane_gore4")
|
||||
end
|
||||
|
||||
card:juice_up(1.8, 0.3)
|
||||
Jane.play_sound("jane_warning_heartbeat")
|
||||
else
|
||||
card:juice_up(2, 0.8)
|
||||
Jane.play_sound("jane_warning_heartbeat")
|
||||
Jane.q(die, 0)
|
||||
card:juice_up(0.6, 0.1)
|
||||
Jane.play_sound("jane_warning_heartbeat")
|
||||
elseif rl > 0 then
|
||||
if rl == hunter[5] then
|
||||
Jane.play_sound("jane_gore4")
|
||||
end
|
||||
|
||||
card:juice_up(1.8, 0.3)
|
||||
Jane.play_sound("jane_warning_heartbeat")
|
||||
else
|
||||
card:juice_up(2, 0.8)
|
||||
Jane.play_sound("jane_warning_heartbeat")
|
||||
Jane.q(die, 0)
|
||||
end
|
||||
end,
|
||||
}
|
||||
|
|
@ -293,41 +275,90 @@ SMODS.Joker {
|
|||
atlas = "janegourmand",
|
||||
loc_txt = {
|
||||
name = "The Gourmand",
|
||||
text = {
|
||||
"Values on {C:attention}consumables",
|
||||
"are {C:attention}multiplied{} by {C:attention}#1#",
|
||||
"when they are created",
|
||||
"{C:inactive}(If possible)",
|
||||
},
|
||||
text = {"All cards are {C:dark_edition}Jumbo"},
|
||||
},
|
||||
loc_vars = function(_, _, center)
|
||||
return {vars = {center.ability.modifier}}
|
||||
end,
|
||||
config = {modifier = 2},
|
||||
pos = {x = 0, y = 0},
|
||||
soul_pos = {x = 1, y = 0},
|
||||
blueprint_compat = false,
|
||||
cost = 8,
|
||||
rarity = 3,
|
||||
cost = 20,
|
||||
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 f = SMODS.Mods.Roland.qol[1]
|
||||
|
||||
local function new(v)
|
||||
return type(v) == "number" and v + n or type(v) == "table" and f(v):map(new):table() or v
|
||||
end
|
||||
|
||||
---@param card Card
|
||||
return function(card)
|
||||
local ability = card.ability or {}
|
||||
|
||||
local function go(key)
|
||||
---@type { [string]: number }|number
|
||||
local value = ability[key]
|
||||
--print(key)
|
||||
if not value then
|
||||
return
|
||||
end
|
||||
|
||||
if type(value) == "number" then
|
||||
ability[key] = value + n
|
||||
return
|
||||
end
|
||||
|
||||
if type(value) ~= "table" then
|
||||
return
|
||||
end
|
||||
|
||||
local new_value = f(value):map(new):table()
|
||||
|
||||
f(new_value):each(function(v, k)
|
||||
ability[k] = v
|
||||
end)
|
||||
|
||||
ability[key] = new_value
|
||||
end
|
||||
|
||||
local center_key = (card.config or {}).center_key
|
||||
|
||||
if center_key and center_key:sub(1, 2) == "c_" then
|
||||
f {"extra", "consumeable"}:each(go)
|
||||
end
|
||||
end
|
||||
end
|
||||
|
||||
local orig_set_ability = Card.set_ability
|
||||
|
||||
---@diagnostic disable-next-line: duplicate-set-field
|
||||
function Card:set_ability(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().key ~= "c_base" and
|
||||
string.sub(self:gc().key, 1, 2) == "c_" then
|
||||
local mod = 1
|
||||
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_gourmand")) do
|
||||
mod = mod * v.ability.modifier
|
||||
for _, v in pairs(SMODS.find_card("j_jane_rivulet")) do
|
||||
mod = mod * v.ability.modifier
|
||||
end
|
||||
|
||||
Jane.misprintize(self, {min = mod, max = mod}, nil, true)
|
||||
else
|
||||
local mod = 0
|
||||
|
||||
for _, v in pairs(SMODS.find_card("j_jane_rivulet")) do
|
||||
mod = mod + v.ability.modifier
|
||||
end
|
||||
|
||||
add_to_consumable_ability_by(mod)(self)
|
||||
end
|
||||
|
||||
Jane.misprintize(self, {min = mod, max = mod}, nil, true)
|
||||
end
|
||||
end
|
||||
|
||||
|
|
@ -337,20 +368,31 @@ SMODS.Joker {
|
|||
loc_txt = {
|
||||
name = "The Artificer",
|
||||
text = {
|
||||
"Grants the {C:green}ability{} to {C:red}destroy",
|
||||
"Use to {C:red}destroy",
|
||||
"selected {C:attention}playing cards",
|
||||
not Jane.cry and "{C:red,E:1}Self-destructs" or nil,
|
||||
not Jane.cry and "after {C:attention}#1# #2#" or nil,
|
||||
},
|
||||
},
|
||||
pos = {x = 0, y = 0},
|
||||
soul_pos = {x = 1, y = 0},
|
||||
config = {extra = {uses = 2}},
|
||||
eternal_compat = false,
|
||||
blueprint_compat = false,
|
||||
cost = Cryptid and 50 or 20,
|
||||
rarity = exotic,
|
||||
cost = Jane.cry and 50 or 7,
|
||||
rarity = Jane.cry and exotic or 3,
|
||||
loc_vars = function(_, _, card)
|
||||
card.ability = card.ability or {}
|
||||
card.ability.extra = card.ability.extra or {}
|
||||
card.ability.extra.uses = card.ability.extra.uses or 2
|
||||
local uses = card.ability.extra.uses
|
||||
return {vars = {uses, uses == 1 and "use" or "uses"}}
|
||||
end,
|
||||
Bakery_use_button_text = function(_, _) return "DESTROY" end,
|
||||
Bakery_can_use = function(_, card)
|
||||
return not card.debuff and Jane.can_use() and next(G.hand.highlighted)
|
||||
end,
|
||||
Bakery_use_joker = function(_, _)
|
||||
Bakery_use_joker = function(_, card)
|
||||
for _, v in pairs(SMODS.find_card("j_jane_oxy")) do
|
||||
Jane.oxy(v, G.hand.highlighted)
|
||||
end
|
||||
|
|
@ -358,6 +400,17 @@ SMODS.Joker {
|
|||
for _, v in pairs(G.hand.highlighted) do
|
||||
v:start_dissolve()
|
||||
end
|
||||
|
||||
if Jane.cry then
|
||||
return
|
||||
end
|
||||
|
||||
card.ability.extra.uses = card.ability.extra.uses - 1
|
||||
local _ = card.ability.extra.uses <= 0 and card:start_dissolve()
|
||||
|
||||
local _ = card.ability.extra.uses == 1 and juice_card_until(card, function()
|
||||
return card.area == G.jokers
|
||||
end, true)
|
||||
end,
|
||||
}
|
||||
|
||||
|
|
@ -369,9 +422,11 @@ SMODS.Joker {
|
|||
loc_txt = {
|
||||
name = "The Spearmaster",
|
||||
text = {
|
||||
"You can choose {C:attention}any number of cards",
|
||||
"after opening {C:attention}any Booster Pack",
|
||||
"{C:attention}Booster Packs{} have {C:green}+#1#{} additional cards",
|
||||
"You can choose {C:attention}any",
|
||||
"number of cards",
|
||||
"in {C:attention}Booster Packs",
|
||||
"{C:attention}Booster Packs{} have",
|
||||
"{C:green}+#1#{} additional cards",
|
||||
},
|
||||
},
|
||||
config = {extra = {choices = 1}},
|
||||
|
|
@ -384,8 +439,50 @@ SMODS.Joker {
|
|||
pos = {x = 0, y = 0},
|
||||
soul_pos = {x = 1, y = 0},
|
||||
blueprint_compat = false,
|
||||
cost = Cryptid and 12 or 20,
|
||||
rarity = Cryptid and epic or 4,
|
||||
cost = Jane.cry and 12 or 20,
|
||||
rarity = Jane.cry and epic or 4,
|
||||
Bakery_can_use = function(_, card)
|
||||
if card.debuff or not
|
||||
Jane.can_use() or not
|
||||
((G.pack_cards or {}).cards or {})[1] then
|
||||
return false
|
||||
end
|
||||
|
||||
local ret = false
|
||||
|
||||
for _, v in pairs(G.pack_cards.cards) do
|
||||
if v.jane_spearmaster then
|
||||
return false
|
||||
elseif ((v.ability or {}).consumeable or {}).hand_type then
|
||||
ret = true
|
||||
end
|
||||
end
|
||||
|
||||
return ret
|
||||
end,
|
||||
Bakery_use_button_text = function() return "USE ALL" end,
|
||||
Bakery_use_joker = function(self, card)
|
||||
if not self:Bakery_can_use(card) then
|
||||
return
|
||||
end
|
||||
|
||||
local c = G.pack_cards.cards
|
||||
|
||||
for i = #c, 1, -1 do
|
||||
if ((c[i].ability or {}).consumeable or {}).hand_type then
|
||||
c[i].jane_spearmaster = true
|
||||
c[i]:use_consumeable()
|
||||
SMODS.calculate_context {using_consumeable = true, consumeable = c[i], area = c[i].from_area}
|
||||
local normal = c[i].area ~= G.pack_cards
|
||||
c[i]:start_dissolve()
|
||||
|
||||
if not normal then
|
||||
G.GAME.pack_choices = G.GAME.pack_choices - 1
|
||||
local _ = G.GAME.pack_choices <= 0 and G.FUNCS.end_consumeable()
|
||||
end
|
||||
end
|
||||
end
|
||||
end,
|
||||
}
|
||||
|
||||
local orig_open = Card.open
|
||||
|
|
@ -419,15 +516,21 @@ SMODS.Joker {
|
|||
loc_txt = {
|
||||
name = "The Rivulet",
|
||||
text = {
|
||||
"Non-{C:dark_edition}editioned{} cards are",
|
||||
"{C:attention}given a random {C:dark_edition}Edition",
|
||||
"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)",
|
||||
},
|
||||
},
|
||||
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,
|
||||
cost = 8,
|
||||
rarity = 3,
|
||||
loc_vars = function(_, _, center)
|
||||
return {vars = {center.ability.modifier}}
|
||||
end,
|
||||
}
|
||||
|
||||
local orig_draw = Card.draw
|
||||
|
|
@ -452,11 +555,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_rivulet")) then
|
||||
self:set_edition(poll_edition("rivulet_edition", nil, nil, true))
|
||||
next(SMODS.find_card("j_jane_gourmand")) then
|
||||
self:set_edition("e_jane_jumbo", true, true)
|
||||
end
|
||||
|
||||
orig_draw(self, layer)
|
||||
|
|
@ -473,44 +576,28 @@ function Card:set_debuff(should_debuff)
|
|||
end
|
||||
end
|
||||
|
||||
local function attunement()
|
||||
return (G.GAME or {}).weeckweeck and 2 or (Cryptid and 1.002 or 1.25)
|
||||
end
|
||||
|
||||
SMODS.Joker {
|
||||
key = "saint",
|
||||
atlas = "janesaint",
|
||||
loc_txt = {
|
||||
name = "The Saint{C:jane_RGB}#1#",
|
||||
text = Cryptid 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 {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,
|
||||
},
|
||||
},
|
||||
config = {extra = {karma = 0, max_karma = Cryptid 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},
|
||||
soul_pos = {x = 1, y = 0},
|
||||
cost = 20,
|
||||
rarity = 4,
|
||||
blueprint_compat = true,
|
||||
loc_vars = function(_, info_queue, card)
|
||||
if Cryptid then
|
||||
info_queue[#info_queue + 1] = G.P_CENTERS.c_cry_analog
|
||||
end
|
||||
|
||||
info_queue[#info_queue + 1] = Cryptid and G.P_CENTERS.c_ankh or nil
|
||||
info_queue[#info_queue + 1] = Cryptid and G.P_CENTERS.c_cry_gateway or G.P_CENTERS.c_soul
|
||||
|
||||
if Cryptid 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 nil
|
||||
|
||||
local extra = card.ability.extra
|
||||
local karma = extra.karma
|
||||
|
|
@ -518,36 +605,26 @@ SMODS.Joker {
|
|||
local attuned = karma >= max_karma
|
||||
|
||||
return {
|
||||
vars = Cryptid 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 "" 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 "" 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 .. "]",
|
||||
},
|
||||
}
|
||||
end,
|
||||
update = function(_, card, _)
|
||||
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})
|
||||
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})
|
||||
end
|
||||
end,
|
||||
calculate = function(_, card, context)
|
||||
|
|
@ -589,49 +666,9 @@ SMODS.Joker {
|
|||
end, 1)
|
||||
end
|
||||
|
||||
if extra.is_attuned then
|
||||
card.debuff = false
|
||||
|
||||
if card.ability then
|
||||
card.ability.perishable = false
|
||||
card.ability.perish_tally = 1e9
|
||||
end
|
||||
|
||||
if Cryptid and not context.joker_main then
|
||||
return
|
||||
end
|
||||
|
||||
if not Cryptid 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 = Cryptid and attune or nil,
|
||||
[Cryptid and "EEmult_mod" or "Emult_mod"] = attune,
|
||||
message = (Cryptid and "^^" or "^") .. attune .. (Cryptid and " Chips & Mult" or ""),
|
||||
},
|
||||
})[Cryptid 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
|
||||
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)
|
||||
ascend()
|
||||
end
|
||||
|
||||
|
|
@ -642,9 +679,9 @@ SMODS.Joker {
|
|||
return
|
||||
end
|
||||
|
||||
local key = context.consumeable:gc().key
|
||||
local gc = context.consumeable:gc()
|
||||
|
||||
if Cryptid and key ~= "c_cry_gateway" or not Cryptid 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
|
||||
end
|
||||
|
||||
|
|
@ -660,7 +697,7 @@ SMODS.Joker {
|
|||
{message = "+" .. quota .. " Karma", colour = G.C.PALE_GREEN}
|
||||
)
|
||||
|
||||
card_eval_status_text(
|
||||
local _ = extra.karma <= max_karma and card_eval_status_text(
|
||||
card,
|
||||
"extra",
|
||||
nil,
|
||||
|
|
@ -673,33 +710,49 @@ 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 not card.debuff and Jane.can_use()
|
||||
return Jane.can_use() and not card.debuff
|
||||
end,
|
||||
Bakery_use_joker = function(_, card)
|
||||
if card.debuff then
|
||||
return
|
||||
end
|
||||
for joker_index = 1, math.max(card.rank - 1, 1) do
|
||||
local joker = G.jokers.cards[joker_index]
|
||||
joker:set_eternal(not joker.ability.eternal)
|
||||
|
||||
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 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
|
||||
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 then
|
||||
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 {
|
||||
|
|
@ -708,9 +761,8 @@ SMODS.Joker {
|
|||
loc_txt = {
|
||||
name = "The Rot",
|
||||
text = {
|
||||
not Cryptid and "{C:inactive,E:1}Does nothing" or nil,
|
||||
Cryptid and "{C:attention}Duplicates itself{} at the" or nil,
|
||||
Cryptid and "end of {C:attention}every ante" or nil,
|
||||
Jane.cry and "{C:attention}Duplicates itself{} at the" or "{C:inactive,E:1}Does nothing",
|
||||
Jane.cry and "end of {C:attention}every ante" or nil,
|
||||
},
|
||||
},
|
||||
pos = {x = 0, y = 0},
|
||||
|
|
@ -727,7 +779,7 @@ SMODS.Joker {
|
|||
|
||||
return not not next(SMODS.find_card("j_jane_rot"))
|
||||
end,
|
||||
calculate = Cryptid and function(_, card, context)
|
||||
calculate = Jane.cry and function(_, card, context)
|
||||
local function has_room()
|
||||
return G.jokers.config.card_count < G.jokers.config.card_limit
|
||||
end
|
||||
|
|
|
|||
|
|
@ -1,10 +1,3 @@
|
|||
SMODS.Atlas {
|
||||
key = "janertarots",
|
||||
px = 71,
|
||||
py = 95,
|
||||
path = Jane.config.texture_pack .. "/c_jane_reversetarots.png",
|
||||
}
|
||||
|
||||
SMODS.Sound({key = "draw", path = "draw.ogg"})
|
||||
|
||||
local function conjure(card, number)
|
||||
|
|
@ -190,8 +183,8 @@ SMODS.Consumable {
|
|||
loc_txt = {
|
||||
name = "Shadows",
|
||||
text = {
|
||||
"Create {C:attention}#1#{} {C:green}random {C:dark_edition}Negative",
|
||||
"{C:attention}Perishable {C:attention}Jokers{}, set {C:money}sell",
|
||||
"Create {C:attention}#1#{} random {C:dark_edition}Negative",
|
||||
"{C:attention}Perishable Jokers{}, set {C:money}sell",
|
||||
"{C:money}value {}of {C:attention}all Jokers {}to {C:money}$0",
|
||||
},
|
||||
},
|
||||
|
|
@ -256,13 +249,13 @@ SMODS.Consumable {
|
|||
key = "obfuscation",
|
||||
atlas = "janeacc",
|
||||
set = "Spectral",
|
||||
hidden = not Cryptid,
|
||||
soul_rate = not Cryptid and 0.003 or nil,
|
||||
soul_set = not Cryptid and "Spectral" or nil,
|
||||
hidden = not Jane.cry,
|
||||
soul_rate = not Jane.cry and 0.003 or nil,
|
||||
soul_set = not Jane.cry and "Spectral" or nil,
|
||||
loc_txt = {
|
||||
name = "Obfuscation",
|
||||
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}enhancement, and suit)",
|
||||
},
|
||||
|
|
@ -287,14 +280,14 @@ SMODS.Consumable {
|
|||
key = "rift",
|
||||
atlas = "janeacc",
|
||||
set = "Spectral",
|
||||
hidden = not Cryptid,
|
||||
soul_rate = not Cryptid and 0.003 or nil,
|
||||
soul_set = not Cryptid and "Spectral" or nil,
|
||||
hidden = not Jane.cry,
|
||||
soul_rate = not Jane.cry and 0.003 or nil,
|
||||
soul_set = not Jane.cry and "Spectral" or nil,
|
||||
loc_txt = {
|
||||
name = "Rift",
|
||||
text = {
|
||||
"{C:attention}Reset {}your deck to a",
|
||||
"{C:attention}standard 52-card deck",
|
||||
"{C:red}Reset {}your deck to a",
|
||||
"standard 52-card deck",
|
||||
},
|
||||
},
|
||||
pos = {x = 4, y = 4},
|
||||
|
|
|
|||
|
|
@ -1,4 +1,4 @@
|
|||
if not Cryptid then
|
||||
if not Jane.cry then
|
||||
return
|
||||
end
|
||||
|
||||
|
|
@ -97,7 +97,7 @@ SMODS.Consumable {
|
|||
end,
|
||||
}
|
||||
|
||||
if Cryptid then
|
||||
if Cryptid and Cryptid.aliases then
|
||||
Cryptid.aliases["joker in a tarot"] = "c_jane_jokerinatarot"
|
||||
Cryptid.aliases["joker-in-a-tarot"] = "c_jane_jokerinatarot"
|
||||
Cryptid.aliases["jolly in a tarot"] = "c_jane_jokerinatarot"
|
||||
|
|
|
|||
|
|
@ -38,6 +38,9 @@ local function on_token_use(id)
|
|||
add_tag(t)
|
||||
end
|
||||
|
||||
local gourmand = G.P_TAGS.j_cry_gourmand and "j_cry_gourmand" or
|
||||
(G.P_TAGS.j_cry_gourmond and "j_cry_gourmond" or nil)
|
||||
|
||||
local vowels = {A = true, E = true, I = true, O = true, U = true}
|
||||
|
||||
for _, v in pairs({
|
||||
|
|
@ -52,7 +55,7 @@ for _, v in pairs({
|
|||
{"tag_uncommon", "Uncommon", 2, 1, 3},
|
||||
{"tag_rare", "Rare", 3, 1, 5},
|
||||
{"tag_cry_epic", "Epic", 4, 1, 8},
|
||||
{"tag_cry_gourmond", "Gourmond", 5, 1, 4},
|
||||
{gourmand, "Gourmand", 5, 1, 4},
|
||||
{"tag_double", "Double", 0, 2, 6},
|
||||
{"tag_cry_triple", "Triple", 1, 2, 8},
|
||||
{"tag_cry_quadruple", "Quadruple", 2, 2, 10},
|
||||
|
|
@ -90,14 +93,17 @@ for _, v in pairs({
|
|||
{"tag_cry_scope", "Scope", 5, 7, 3},
|
||||
{"tag_cry_banana", "Banana", 0, 8, 4},
|
||||
}) do
|
||||
if Cryptid or v[1]:sub(1, 7) ~= "tag_cry" then
|
||||
if v[1] and (Jane.cry or v[1]:sub(1, 7) ~= "tag_cry") then
|
||||
SMODS.Consumable {
|
||||
key = "token_" .. v[1],
|
||||
set = "jane_tokens",
|
||||
atlas = "janetokens",
|
||||
loc_txt = {
|
||||
name = v[2] .. " Token",
|
||||
text = {"Creates a" .. (vowels[v[2]:sub(1, 1)] and "n" or "") .. " {C:attention}" .. v[2] .. " Tag"},
|
||||
text = {
|
||||
"Creates a" .. (vowels[v[2]:sub(1, 1)] and "n" or ""),
|
||||
"{C:attention}" .. v[2] .. " Tag",
|
||||
},
|
||||
},
|
||||
loc_vars = function(_, info_queue, _)
|
||||
info_queue[#info_queue + 1] = v[1] ~= "tag_cry_cat" and G.P_TAGS[v[1]] or nil
|
||||
|
|
@ -109,7 +115,9 @@ 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.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,
|
||||
use = function(_, _, _, _)
|
||||
play_sound("jane_e_gilded", 1.25, 0.4)
|
||||
|
|
|
|||
|
|
@ -12,7 +12,14 @@ SMODS.Atlas {
|
|||
path = Jane.config.texture_pack .. "/v_jane_token_voucher.png",
|
||||
}
|
||||
|
||||
if Cryptid then
|
||||
SMODS.Atlas {
|
||||
key = "janetokenvoucherplus",
|
||||
px = 71,
|
||||
py = 95,
|
||||
path = Jane.config.texture_pack .. "/v_jane_token_voucher_plus.png",
|
||||
}
|
||||
|
||||
if Jane.cry then
|
||||
SMODS.Voucher {
|
||||
key = "jolly_voucher",
|
||||
atlas = "janejollyvoucher",
|
||||
|
|
@ -35,12 +42,26 @@ SMODS.Voucher {
|
|||
atlas = "janetokenvoucher",
|
||||
loc_txt = {
|
||||
name = "Token Voucher",
|
||||
text = {"{C:attention}Tokens {}can appear", "in the shop", SMODS.Mods.Roland and "{C:inactive}(Permanently disables Escapey)"},
|
||||
text = {"{C:attention}Tokens {}can appear", "in the shop"},
|
||||
},
|
||||
pos = {x = 0, y = 0},
|
||||
cost = 10,
|
||||
redeem = function(_, _)
|
||||
G.GAME.jane_tokens_rate = 1.5
|
||||
G.GAME.modifiers.Roland_debuff_escapey = true
|
||||
G.GAME.jane_tokens_rate = 1
|
||||
end,
|
||||
}
|
||||
|
||||
SMODS.Voucher {
|
||||
key = "token_voucher_plus",
|
||||
atlas = "janetokenvoucherplus",
|
||||
loc_txt = {
|
||||
name = "Token Voucher+",
|
||||
text = {"{C:attention}Tokens {}appear {C:attention}3X", "more frequently", "in the shop"},
|
||||
},
|
||||
requires = {"v_jane_token_voucher"},
|
||||
pos = {x = 0, y = 0},
|
||||
cost = 10,
|
||||
redeem = function(_, _)
|
||||
G.GAME.jane_tokens_rate = (G.GAME.jane_tokens_rate or 1) * 3
|
||||
end,
|
||||
}
|
||||
|
|
|
|||
Loading…
Add table
Reference in a new issue