Fix The Rot cloning indefinitely, reformat

This commit is contained in:
Emik 2025-04-04 22:06:36 +02:00
parent bafb18d0c9
commit e069cd8f68
Signed by untrusted user who does not match committer: emik
GPG key ID: 09CDFF9E5703688D
14 changed files with 610 additions and 350 deletions

171
.editorconfig Normal file
View file

@ -0,0 +1,171 @@
# see https://github.com/CppCXY/EmmyLuaCodeStyle
[*.lua]
# [basic]
# optional space/tab
indent_style = space
# if indent_style is space, this is valid
indent_size = 4
# if indent_style is tab, this is valid
tab_width = 4
# none/single/double
quote_style = double
continuation_indent = 4
## extend option
# continuation_indent.before_block = 4
# continuation_indent.in_expr = 4
# continuation_indent.in_table = 4
# this mean utf8 length , if this is 'unset' then the line width is no longer checked
# this option decides when to chopdown the code
max_line_length = lf
# optional crlf/lf/cr/auto, if it is 'auto', in windows it is crlf other platforms are lf
# in neovim the value 'auto' is not a valid option, please use 'unset'
end_of_line = auto
# none/ comma / semicolon / only_kv_colon
table_separator_style = none
#optional keep/never/always/smart
trailing_table_separator = smart
# keep/remove/remove_table_only/remove_string_only
call_arg_parentheses = keep
detect_end_of_line = false
# this will check text end with new line
insert_final_newline = true
# [space]
space_around_table_field_list = false
space_before_attribute = false
space_before_function_open_parenthesis = false
space_before_function_call_open_parenthesis = false
space_before_closure_open_parenthesis = false
# optional always/only_string/only_table/none
# or true/false
space_before_function_call_single_arg = always
## extend option
## always/keep/none
# space_before_function_call_single_arg.table = always
## always/keep/none
# space_before_function_call_single_arg.string = always
space_before_open_square_bracket = false
space_inside_function_call_parentheses = false
space_inside_function_param_list_parentheses = false
space_inside_square_brackets = false
# like t[#t+1] = 1
space_around_table_append_operator = false
ignore_spaces_inside_function_call = false
# detail number or 'keep'
space_before_inline_comment = 1
# convert '---' to '--- ' or '--' to '-- '
space_after_comment_dash = false
# [operator space]
space_around_math_operator = true
# space_around_math_operator.exponent = false
space_after_comma = true
space_after_comma_in_for_statement = true
# true/false or none/always/no_space_asym
space_around_concat_operator = true
space_around_logical_operator = true
# true/false or none/always/no_space_asym
space_around_assign_operator = true
# [align]
align_call_args = false
align_function_params = true
# true/false or always
align_continuous_assign_statement = true
align_continuous_rect_table_field = true
align_continuous_line_space = 2
align_if_branch = false
# option none / always / contain_curly/
align_array_table = true
align_continuous_similar_call_args = false
align_continuous_inline_comment = true
# option none / always / only_call_stmt
align_chain_expr = none
# [indent]
never_indent_before_if_condition = false
never_indent_comment_on_if_branch = false
keep_indents_on_empty_lines = false
allow_non_indented_comments = false
# [line space]
# The following configuration supports four expressions
# keep
# fixed(n)
# min(n)
# max(n)
# for eg. min(2)
line_space_after_if_statement = fixed(2)
line_space_after_do_statement = fixed(2)
line_space_after_while_statement = fixed(2)
line_space_after_repeat_statement = fixed(2)
line_space_after_for_statement = fixed(2)
line_space_after_local_or_assign_statement = max(2)
line_space_after_function_statement = fixed(2)
line_space_after_expression_statement = max(2)
line_space_after_comment = fixed(1)
line_space_around_block = fixed(1)
# [line break]
break_all_list_when_line_exceed = false
auto_collapse_lines = false
break_before_braces = false
# [preference]
ignore_space_after_colon = false
remove_call_expression_list_finish_comma = true
# keep / always / same_line / replace_with_newline / never
end_statement_with_semicolon = replace_with_newline

View file

@ -1,16 +1,21 @@
{ {
"id": "jane", "id": "jane",
"name": "Almighty", "name": "Almighty",
"author": ["jenwalter666", "Emik"], "author": [
"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": "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.",
"prefix": "jane", "prefix": "jane",
"main_file": "src/main.lua", "main_file": "src/main.lua",
"badge_colour": "3c3cff", "badge_colour": "3c3cff",
"priority": 114, "priority": 114,
"dependencies": [ "dependencies": [
"Steamodded (>=1.0.0~ALPHA-1304a)", "Steamodded (>=1.0.0~ALPHA-1304a)",
"Bakery (>=0.1.26~*)" "Bakery (>=0.1.26~*)"
], ],
"conflicts": ["Jen"], "conflicts": [
"version": "1.0.0" "Jen"
],
"version": "1.0.1"
} }

View file

@ -2,7 +2,7 @@ SMODS.Atlas {
px = 71, px = 71,
py = 95, py = 95,
key = "janedecks", key = "janedecks",
path = Jane.config.texture_pack .. "/b_jane_decks.png" path = Jane.config.texture_pack .. "/b_jane_decks.png",
} }
local eternal_text = Cryptid and "Absolute" or "Eternal" local eternal_text = Cryptid and "Absolute" or "Eternal"
@ -19,7 +19,7 @@ SMODS.Back {
Cryptid and "set {C:attention}ante {}to the {C:attention}next" or "", Cryptid and "set {C:attention}ante {}to the {C:attention}next" or "",
Cryptid and "{C:attention}triangle number {}and create" 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", Cryptid and "an {C:spectral,E:1}Empowered Tag" or "create a {C:dark_edition}Negative {C:spectral,E:1}Soul",
} },
}, },
apply = function(_) 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 = Cryptid and G.GAME.win_ante * (G.GAME.win_ante + 1) / 2 or G.GAME.win_ante * 2 - 1
@ -32,7 +32,7 @@ SMODS.Back {
return true return true
end) end)
end end
end end,
} }
local function add_rain_world_joker() local function add_rain_world_joker()
@ -77,8 +77,8 @@ SMODS.Back {
text = { text = {
"Start with a {C:legendary}Rain World Joker", "Start with a {C:legendary}Rain World Joker",
"Create another when", "Create another when",
"{C:attention}Boss Blind {}is defeated" "{C:attention}Boss Blind {}is defeated",
} },
}, },
apply = function(_) apply = function(_)
G.E_MANAGER:add_event(Event({func = add_rain_world_joker})) G.E_MANAGER:add_event(Event({func = add_rain_world_joker}))
@ -101,7 +101,7 @@ SMODS.Back {
"playing cards are {C:green,E:1}randomized", "playing cards are {C:green,E:1}randomized",
"when they are added", "when they are added",
"to your possession", "to your possession",
} },
}, },
apply = function(_) apply = function(_)
G.GAME.mysterious = true G.GAME.mysterious = true
@ -110,7 +110,7 @@ SMODS.Back {
save_run() save_run()
return true return true
end) end)
end end,
} }
SMODS.Back { SMODS.Back {
@ -122,11 +122,11 @@ SMODS.Back {
text = { text = {
"{C:attention}Hidden{} cards {C:inactive}(ex. {C:spectral}The Soul{C:inactive})", "{C:attention}Hidden{} cards {C:inactive}(ex. {C:spectral}The Soul{C:inactive})",
"can {C:attention}appear normally{}", "can {C:attention}appear normally{}",
} },
}, },
apply = function(_) apply = function(_)
G.GAME.obsidian = true G.GAME.obsidian = true
end end,
} }
local function apply_orrery() local function apply_orrery()
@ -154,11 +154,11 @@ SMODS.Back {
text = { text = {
"{C:attention}Hand stats {}are", "{C:attention}Hand stats {}are",
"always " .. (Cryptid and "{C:cry_ascendant}" or "{C:attention}") .. "equalized", "always " .. (Cryptid and "{C:cry_ascendant}" or "{C:attention}") .. "equalized",
} },
}, },
apply = function(_) apply = function(_)
apply_orrery() apply_orrery()
end end,
} }
SMODS.Back { SMODS.Back {
@ -170,11 +170,11 @@ SMODS.Back {
text = { text = {
"{C:attention}Ante increases", "{C:attention}Ante increases",
"{C:attention}half{} as strong", "{C:attention}half{} as strong",
} },
}, },
apply = function(_) apply = function(_)
G.GAME.tortoise = true G.GAME.tortoise = true
end end,
} }
local function apply_weeck() local function apply_weeck()
@ -222,11 +222,11 @@ SMODS.Back {
"{C:attention}Wee Joker {}and a deck", "{C:attention}Wee Joker {}and a deck",
"containing {C:attention}2 {C:purple,E:1}" .. eternal_text, "containing {C:attention}2 {C:purple,E:1}" .. eternal_text,
"{C:attention}2's {}of {C:attention}each suit", "{C:attention}2's {}of {C:attention}each suit",
} },
}, },
apply = function(_) apply = function(_)
apply_weeck() apply_weeck()
end end,
} }
SMODS.Back { SMODS.Back {
@ -238,21 +238,23 @@ SMODS.Back {
text = { text = {
"Applies the {C:legendary,E:1}upsides", "Applies the {C:legendary,E:1}upsides",
"of {C:attention}every Jane deck", "of {C:attention}every Jane deck",
} },
}, },
apply = function(_) apply = function(_)
apply_orrery() apply_orrery()
G.E_MANAGER:add_event(Event({func = function() G.E_MANAGER:add_event(Event({
local wee = create_card("Joker", G.jokers, nil, nil, nil, nil, "j_wee", "weeck") func = function()
G.jokers:emplace(wee) local wee = create_card("Joker", G.jokers, nil, nil, nil, nil, "j_wee", "weeck")
add_rain_world_joker() G.jokers:emplace(wee)
G.GAME.mysterious = true add_rain_world_joker()
G.GAME.tortoise = true G.GAME.mysterious = true
G.GAME.obsidian = true G.GAME.tortoise = true
save_run() G.GAME.obsidian = true
return true save_run()
end})) return true
end,
}))
end, end,
trigger_effect = function(_, args) trigger_effect = function(_, args)
G.GAME.mysterious = nil G.GAME.mysterious = nil
@ -280,7 +282,7 @@ function ease_ante(mod)
if G.GAME.nitro then if G.GAME.nitro then
mod = Cryptid and mod = Cryptid and
(G.GAME.round_resets.ante < 0 and -G.GAME.round_resets.ante or (G.GAME.round_resets.ante < 0 and -G.GAME.round_resets.ante or
math.ceil(next_triangle_number(G.GAME.round_resets.ante) - G.GAME.round_resets.ante)) or math.ceil(next_triangle_number(G.GAME.round_resets.ante) - G.GAME.round_resets.ante)) or
(mod > 0 and mod * 2 or mod) (mod > 0 and mod * 2 or mod)
end end
@ -307,7 +309,7 @@ function CardArea:emplace(card, location, stay_flipped)
local c = targets[i] local c = targets[i]
c:set_base(pseudorandom_element(G.P_CARDS)) c:set_base(pseudorandom_element(G.P_CARDS))
if pseudorandom(pseudoseed("chancetime")) > 1 / (#G.P_CENTER_POOLS["Enhanced"]+1) then if pseudorandom(pseudoseed("chancetime")) > 1 / (#G.P_CENTER_POOLS["Enhanced"] + 1) then
c:set_ability(pseudorandom_element(G.P_CENTER_POOLS["Enhanced"], pseudoseed("spectral_chance"))) c:set_ability(pseudorandom_element(G.P_CENTER_POOLS["Enhanced"], pseudoseed("spectral_chance")))
else else
c:set_ability(G.P_CENTERS["c_base"]) c:set_ability(G.P_CENTERS["c_base"])
@ -360,7 +362,7 @@ function CardArea:emplace(card, location, stay_flipped)
play_sound("card1", 1.15 - (i - 0.999) / (#G.hand.cards - 0.998) * 0.3) play_sound("card1", 1.15 - (i - 0.999) / (#G.hand.cards - 0.998) * 0.3)
targets[i]:juice_up(0.3, 0.3) targets[i]:juice_up(0.3, 0.3)
return true return true
end end,
})) }))
end end
@ -370,7 +372,7 @@ function CardArea:emplace(card, location, stay_flipped)
G.E_MANAGER:add_event(Event({ G.E_MANAGER:add_event(Event({
trigger = "after", trigger = "after",
delay = 0.1, delay = 0.1,
func = go(i) func = go(i),
})) }))
end end
end end
@ -396,7 +398,9 @@ function CardArea:emplace(card, location, stay_flipped)
passes = 0 passes = 0
pooling = false pooling = false
tries = tries - 1 tries = tries - 1
selection = G.P_CENTERS[pseudorandom_element(pool or G.P_CENTER_POOLS.Consumeables, pseudoseed(seed or "jane_rnd_mysterious")).key]
selection = G.P_CENTERS
[pseudorandom_element(pool or G.P_CENTER_POOLS.Consumeables, pseudoseed(seed or "jane_rnd_mysterious")).key]
if ignore_pooling then if ignore_pooling then
pooling = true pooling = true
@ -438,10 +442,12 @@ function CardArea:emplace(card, location, stay_flipped)
card:remove_from_deck() card:remove_from_deck()
card.added_to_deck = nil card.added_to_deck = nil
end end
card:flip() card:flip()
card:juice_up(0.3, 0.3) card:juice_up(0.3, 0.3)
play_sound("card1", 1, 0.6) play_sound("card1", 1, 0.6)
end end
return true return true
end, 0.75) end, 0.75)
@ -458,6 +464,7 @@ function CardArea:emplace(card, location, stay_flipped)
card:add_to_deck() card:add_to_deck()
end end
end end
return true return true
end, 0.75) end, 0.75)
elseif self == G.consumeables then elseif self == G.consumeables then
@ -472,6 +479,7 @@ function CardArea:emplace(card, location, stay_flipped)
card:juice_up(0.3, 0.3) card:juice_up(0.3, 0.3)
play_sound("card1", 1, 0.6) play_sound("card1", 1, 0.6)
end end
return true return true
end, 0.75) end, 0.75)
@ -482,7 +490,10 @@ function CardArea:emplace(card, location, stay_flipped)
card:flip() card:flip()
card:juice_up(0.3, 0.3) card:juice_up(0.3, 0.3)
play_sound("card3", 1, 0.6) play_sound("card3", 1, 0.6)
card:set_ability(rnd("mysterious_deck_consumable", cen.hidden and {} or {"hidden"}, G.P_CENTER_POOLS[cen.set]))
card:set_ability(
rnd("mysterious_deck_consumable", cen.hidden and {} or {"hidden"}, G.P_CENTER_POOLS[cen.set])
)
if not card.added_to_deck then if not card.added_to_deck then
card:add_to_deck() card:add_to_deck()

View file

@ -4,7 +4,7 @@ SMODS.Atlas {
frames = 21, frames = 21,
key = "janeblinds", key = "janeblinds",
atlas_table = "ANIMATION_ATLAS", atlas_table = "ANIMATION_ATLAS",
path = Jane.config.texture_pack .. "/bl_jane_blinds.png" path = Jane.config.texture_pack .. "/bl_jane_blinds.png",
} }
local final_operations = { local final_operations = {
@ -35,7 +35,7 @@ local function offset_operator(by)
if type(inner) == "table" and if type(inner) == "table" and
type(inner.config) == "table" and type(inner.config) == "table" and
(inner.config.text == final_operations[previous][1] or (inner.config.text == final_operations[previous][1] or
inner.config.text == final_operations[2][1]) and inner.config.text == final_operations[2][1]) and
inner.config.text_drawable then inner.config.text_drawable then
if inner.config.text ~= txt then if inner.config.text ~= txt then
changed_text = true changed_text = true
@ -62,10 +62,10 @@ local function to_number(x)
return type(x) == "table" and x:to_number() or x return type(x) == "table" and x:to_number() or x
end end
SMODS.Blind { SMODS.Blind {
loc_txt = { loc_txt = {
name = "The Descending", name = "The Descending",
text = {"Decrease Chip-Mult", "operator by 1 level"} text = {"Decrease Chip-Mult", "operator by 1 level"},
}, },
key = "descending", key = "descending",
config = {}, config = {},
@ -100,10 +100,10 @@ SMODS.Blind {
end, end,
} }
SMODS.Blind { SMODS.Blind {
loc_txt = { loc_txt = {
name = "The Insignia", name = "The Insignia",
text = {"Hand must contain", "only one suit"} text = {"Hand must contain", "only one suit"},
}, },
key = "insignia", key = "insignia",
config = {}, config = {},
@ -131,10 +131,10 @@ SMODS.Blind {
end, end,
} }
SMODS.Blind { SMODS.Blind {
loc_txt = { loc_txt = {
name = "The Wee", name = "The Wee",
text = {"Only 2s can be played"} text = {"Only 2s can be played"},
}, },
key = "wee", key = "wee",
config = {}, config = {},

View file

@ -2,7 +2,7 @@ SMODS.Atlas {
px = 71, px = 71,
py = 95, py = 95,
key = "janebooster", key = "janebooster",
path = Jane.config.texture_pack .. "/p_jane_boosters.png" path = Jane.config.texture_pack .. "/p_jane_boosters.png",
} }
for i = 1, 2 do for i = 1, 2 do
@ -14,7 +14,7 @@ for i = 1, 2 do
"Choose {C:attention}#1#{} of up to", "Choose {C:attention}#1#{} of up to",
"{C:attention}#2# playing cards{} to", "{C:attention}#2# playing cards{} to",
"add to your deck", "add to your deck",
} },
}, },
atlas = "janebooster", atlas = "janebooster",
pos = {x = 6, y = i - 1}, pos = {x = 6, y = i - 1},
@ -35,7 +35,7 @@ for i = 1, 2 do
area = G.pack_cards, area = G.pack_cards,
skip_materialize = true, skip_materialize = true,
soulable = true, soulable = true,
key_append = "sta" key_append = "sta",
} }
end, end,
create_UIBox = function(_) create_UIBox = function(_)
@ -45,7 +45,7 @@ for i = 1, 2 do
ease_background_colour_blind(G.STATES.STANDARD_PACK) ease_background_colour_blind(G.STATES.STANDARD_PACK)
end, end,
particles = function(_) particles = function(_)
G.booster_pack_sparkles = Particles(1, 1, 0,0, { G.booster_pack_sparkles = Particles(1, 1, 0, 0, {
timer = 0.015, timer = 0.015,
scale = 0.3, scale = 0.3,
initialize = true, initialize = true,
@ -54,7 +54,7 @@ for i = 1, 2 do
padding = -1, padding = -1,
attach = G.ROOM_ATTACH, attach = G.ROOM_ATTACH,
colours = {G.C.BLACK, G.C.RED}, colours = {G.C.BLACK, G.C.RED},
fill = true fill = true,
}) })
G.booster_pack_sparkles.fade_alpha = 1 G.booster_pack_sparkles.fade_alpha = 1
@ -72,7 +72,7 @@ for i = 1, 2 do
"Choose {C:attention}#1#{} of up to", "Choose {C:attention}#1#{} of up to",
"{C:attention}#2# {C:tarot}Tarot{} cards to", "{C:attention}#2# {C:tarot}Tarot{} cards to",
"be used immediately", "be used immediately",
} },
}, },
atlas = "janebooster", atlas = "janebooster",
pos = {x = 3 + i, y = 1}, pos = {x = 3 + i, y = 1},
@ -109,7 +109,7 @@ for i = 1, 2 do
ease_background_colour_blind(G.STATES.TAROT_PACK) ease_background_colour_blind(G.STATES.TAROT_PACK)
end, end,
particles = function(_) particles = function(_)
G.booster_pack_sparkles = Particles(1, 1, 0,0, { G.booster_pack_sparkles = Particles(1, 1, 0, 0, {
timer = 0.015, timer = 0.015,
scale = 0.2, scale = 0.2,
initialize = true, initialize = true,
@ -118,7 +118,7 @@ for i = 1, 2 do
padding = -1, padding = -1,
attach = G.ROOM_ATTACH, attach = G.ROOM_ATTACH,
colours = {G.C.WHITE, lighten(G.C.PURPLE, 0.4), lighten(G.C.PURPLE, 0.2), lighten(G.C.GOLD, 0.2)}, colours = {G.C.WHITE, lighten(G.C.PURPLE, 0.4), lighten(G.C.PURPLE, 0.2), lighten(G.C.GOLD, 0.2)},
fill = true fill = true,
}) })
G.booster_pack_sparkles.fade_alpha = 1 G.booster_pack_sparkles.fade_alpha = 1
@ -137,7 +137,7 @@ for i = 1, 2 do
"Choose {C:attention}#1#{} of up to", "Choose {C:attention}#1#{} of up to",
"{C:attention}#2# {C:planet}Planet{} cards to", "{C:attention}#2# {C:planet}Planet{} cards to",
"be used immediately", "be used immediately",
} },
}, },
config = {extra = 2, choose = 1}, config = {extra = 2, choose = 1},
pos = {x = 3 + i, y = 0}, pos = {x = 3 + i, y = 0},
@ -153,7 +153,7 @@ for i = 1, 2 do
area = G.pack_cards, area = G.pack_cards,
skip_materialize = true, skip_materialize = true,
soulable = true, soulable = true,
key_append = "pl1" key_append = "pl1",
} }
end end
@ -190,7 +190,7 @@ for i = 1, 2 do
ease_background_colour_blind(G.STATES.PLANET_PACK) ease_background_colour_blind(G.STATES.PLANET_PACK)
end, end,
particles = function(_) particles = function(_)
G.booster_pack_stars = Particles(1, 1, 0,0, { G.booster_pack_stars = Particles(1, 1, 0, 0, {
fill = true, fill = true,
scale = 0.1, scale = 0.1,
speed = 0.1, speed = 0.1,
@ -202,7 +202,7 @@ for i = 1, 2 do
colours = {G.C.WHITE, HEX("a7d6e0"), HEX("fddca0")}, colours = {G.C.WHITE, HEX("a7d6e0"), HEX("fddca0")},
}) })
G.booster_pack_meteors = Particles(1, 1, 0,0, { G.booster_pack_meteors = Particles(1, 1, 0, 0, {
speed = 4, speed = 4,
timer = 2, timer = 2,
fill = true, fill = true,
@ -212,7 +212,7 @@ for i = 1, 2 do
colours = {G.C.WHITE}, colours = {G.C.WHITE},
}) })
end, end,
set_ability = function (_, card, _, _) set_ability = function(_, card, _, _)
card.ability = card.ability or {} card.ability = card.ability or {}
card.ability.set = "Booster" card.ability.set = "Booster"
card.ability.name = "Mini Celestial Pack" card.ability.name = "Mini Celestial Pack"
@ -230,7 +230,7 @@ for i = 1, 2 do
"Choose {C:attention}#1#{} of up to", "Choose {C:attention}#1#{} of up to",
"{C:attention}#2# {C:spectral}Spectral{} cards to", "{C:attention}#2# {C:spectral}Spectral{} cards to",
"be used immediately", "be used immediately",
} },
}, },
config = {extra = 1, choose = 1}, config = {extra = 1, choose = 1},
pos = {x = 3 + i, y = 2}, pos = {x = 3 + i, y = 2},
@ -256,7 +256,7 @@ for i = 1, 2 do
ease_background_colour_blind(G.STATES.SPECTRAL_PACK) ease_background_colour_blind(G.STATES.SPECTRAL_PACK)
end, end,
particles = function(_) particles = function(_)
G.booster_pack_sparkles = Particles(1, 1, 0,0, { G.booster_pack_sparkles = Particles(1, 1, 0, 0, {
scale = 0.1, scale = 0.1,
fill = true, fill = true,
speed = 0.2, speed = 0.2,
@ -284,7 +284,7 @@ if Cryptid then
"Choose {C:attention}#1#{} of up to", "Choose {C:attention}#1#{} of up to",
"{C:attention}#2# {C:green}Code{} cards to", "{C:attention}#2# {C:green}Code{} cards to",
"be used immediately", "be used immediately",
} },
}, },
pos = {x = 6, y = 2}, pos = {x = 6, y = 2},
config = {extra = 2, choose = 1}, config = {extra = 2, choose = 1},
@ -319,7 +319,7 @@ if Cryptid then
end end
for i = 1, 2 do for i = 1, 2 do
SMODS.Booster{ SMODS.Booster {
key = "minitoken" .. i, key = "minitoken" .. i,
atlas = "janebooster", atlas = "janebooster",
loc_txt = { loc_txt = {
@ -328,7 +328,7 @@ for i = 1, 2 do
"Choose {C:attention}#1#{} of up to", "Choose {C:attention}#1#{} of up to",
"{C:attention}#2# Token {}cards to", "{C:attention}#2# Token {}cards to",
"be used immediately", "be used immediately",
} },
}, },
pos = {x = i - 1, y = 5}, pos = {x = i - 1, y = 5},
config = {extra = 2, choose = 1}, config = {extra = 2, choose = 1},
@ -350,35 +350,83 @@ for i = 1, 2 do
{card_limit = size, highlight_limit = 1, type = "consumeable"} {card_limit = size, highlight_limit = 1, type = "consumeable"}
) )
local t = {n = G.UIT.ROOT, config = {align = "tm", r = 0.15, colour = G.C.CLEAR, padding = 0.15}, nodes = { local t = {
{n = G.UIT.R, config = {align = "cl", colour = G.C.CLEAR, r = 0.15, padding = 0.1, minh = 2, shadow = true}, nodes = { n = G.UIT.ROOT,
{n = G.UIT.R, config = {align = "cm"}, nodes = { config = {align = "tm", r = 0.15, colour = G.C.CLEAR, padding = 0.15},
{n = G.UIT.C, config = {align = "cm", padding = 0.1}, nodes = { nodes = {
{n = G.UIT.C, config = {align = "cm", r = 0.2, colour = G.C.CLEAR, shadow = true}, nodes = { {
{n = G.UIT.O, config = {object = G.pack_cards}}}}}}}}, n = G.UIT.R,
{n = G.UIT.R, config = {align = "cm"}, nodes = {}}, config = {align = "cl", colour = G.C.CLEAR, r = 0.15, padding = 0.1, minh = 2, shadow = true},
{n = G.UIT.R, config = {align = "tm"}, nodes = { nodes = {
{n = G.UIT.C,config = {align = "tm", padding = 0.05, minw = 2.4}, nodes = {}}, {
{n = G.UIT.C,config = {align = "tm", padding = 0.05}, nodes = { n = G.UIT.R,
UIBox_dyn_container({ config = {align = "cm"},
{n = G.UIT.C, config = {align = "cm", padding = 0.05, minw = 4}, nodes = { nodes = {
{n = G.UIT.R,config = {align = "bm", padding = 0.05}, nodes = { {
{n = G.UIT.O, config = {object = DynaText({string = {"Token Pack"}, colours = {G.C.WHITE},shadow = true, rotate = true, bump = true, spacing = 2, scale = 0.7, maxw = 4, pop_in = 0.5})}}}}, n = G.UIT.C,
{n = G.UIT.R,config = {align = "bm", padding = 0.05}, nodes = { config = {align = "cm", padding = 0.1},
{n = G.UIT.O, config = {object = DynaText({string = {localize("k_choose") .. " "}, colours = {G.C.WHITE},shadow = true, rotate = true, bump = true, spacing = 2, scale = 0.5, pop_in = 0.7})}}, nodes = {
{n = G.UIT.O, config = {object = DynaText({string = {{ref_table = G.GAME, ref_value = "pack_choices"}}, colours = {G.C.WHITE},shadow = true, rotate = true, bump = true, spacing = 2, scale = 0.5, pop_in = 0.7})}}}}}} {
})}}, n = G.UIT.C,
{n = G.UIT.C,config = {align = "tm", padding = 0.05, minw = 2.4}, nodes = { config = {align = "cm", r = 0.2, colour = G.C.CLEAR, shadow = true},
{n = G.UIT.R,config = {minh = 0.2}, nodes = {}}, nodes = {
{n = G.UIT.R,config = {align = "tm",padding = 0.2, minh = 1.2, minw = 1.8, r = 0.15,colour = G.C.GREY, one_press = true, button = "skip_booster", hover = true,shadow = true, func = "can_skip_booster"}, nodes = { {n = G.UIT.O, config = {object = G.pack_cards}}},
{n = G.UIT.T, config = {text = localize("b_skip"), scale = 0.5, colour = G.C.WHITE, shadow = true, focus_args = {button = "y", orientation = "bm"}, func = "set_button_pip"}}}}}}}}}}}} }},
}},
},
{n = G.UIT.R, config = {align = "cm"}, nodes = {}},
{
n = G.UIT.R,
config = {align = "tm"},
nodes = {
{n = G.UIT.C, config = {align = "tm", padding = 0.05, minw = 2.4}, nodes = {}},
{
n = G.UIT.C,
config = {align = "tm", padding = 0.05},
nodes = {
UIBox_dyn_container({
{
n = G.UIT.C,
config = {align = "cm", padding = 0.05, minw = 4},
nodes = {
{
n = G.UIT.R,
config = {align = "bm", padding = 0.05},
nodes = {
{n = G.UIT.O, config = {object = DynaText({string = {"Token Pack"}, colours = {G.C.WHITE}, shadow = true, rotate = true, bump = true, spacing = 2, scale = 0.7, maxw = 4, pop_in = 0.5})}}},
},
{
n = G.UIT.R,
config = {align = "bm", padding = 0.05},
nodes = {
{n = G.UIT.O, config = {object = DynaText({string = {localize("k_choose") .. " "}, colours = {G.C.WHITE}, shadow = true, rotate = true, bump = true, spacing = 2, scale = 0.5, pop_in = 0.7})}},
{n = G.UIT.O, config = {object = DynaText({string = {{ref_table = G.GAME, ref_value = "pack_choices"}}, colours = {G.C.WHITE}, shadow = true, rotate = true, bump = true, spacing = 2, scale = 0.5, pop_in = 0.7})}}},
}},
},
})},
},
{
n = G.UIT.C,
config = {align = "tm", padding = 0.05, minw = 2.4},
nodes = {
{n = G.UIT.R, config = {minh = 0.2}, nodes = {}},
{
n = G.UIT.R,
config = {align = "tm", padding = 0.2, minh = 1.2, minw = 1.8, r = 0.15, colour = G.C.GREY, one_press = true, button = "skip_booster", hover = true, shadow = true, func = "can_skip_booster"},
nodes = {
{n = G.UIT.T, config = {text = localize("b_skip"), scale = 0.5, colour = G.C.WHITE, shadow = true, focus_args = {button = "y", orientation = "bm"}, func = "set_button_pip"}}},
}},
}},
}},
}},
}
return t return t
end, end,
ease_background_colour = function(_) ease_background_colour = function(_)
ease_background_colour{new_colour = HEX(i == 1 and "F0C197" or "FD5F55"), special_colour = HEX("000000"), contrast = 5} ease_background_colour {new_colour = HEX(i == 1 and "F0C197" or "FD5F55"), special_colour = HEX("000000"), contrast = 5}
end, end,
in_pool = function (_, _) in_pool = function(_, _)
return G.GAME.used_vouchers.v_jane_token_voucher return G.GAME.used_vouchers.v_jane_token_voucher
end, end,
} }

View file

@ -11,13 +11,13 @@ SMODS.Edition({
"{C:chips}+#1#{}, {X:chips,C:white}x#2#{} & {X:chips,C:dark_edition}^#3#{} Chips", "{C:chips}+#1#{}, {X:chips,C:white}x#2#{} & {X:chips,C:dark_edition}^#3#{} Chips",
"{C:mult}+#4#{}, {X:mult,C:white}x#5#{} & {X:mult,C:dark_edition}^#6#{} Mult", "{C:mult}+#4#{}, {X:mult,C:white}x#5#{} & {X:mult,C:dark_edition}^#6#{} Mult",
"Generates {C:money}+$#7#", "Generates {C:money}+$#7#",
} },
}, },
config = {chips = 1, mult = 1, x_chips = 1.1, x_mult = 1.1, e_chips = 1.01, e_mult = 1.01, p_dollars = 1}, config = {chips = 1, mult = 1, x_chips = 1.1, x_mult = 1.1, e_chips = 1.01, e_mult = 1.01, p_dollars = 1},
sound = { sound = {
sound = "jane_e_polygloss", sound = "jane_e_polygloss",
per = 1.2, per = 1.2,
vol = 0.4 vol = 0.4,
}, },
weight = 8, weight = 8,
extra_cost = 2, extra_cost = 2,
@ -25,15 +25,17 @@ SMODS.Edition({
shader = "polygloss", shader = "polygloss",
apply_to_float = false, apply_to_float = false,
loc_vars = function(self) loc_vars = function(self)
return {vars = { return {
self.config.chips, vars = {
self.config.x_chips, self.config.chips,
self.config.e_chips, self.config.x_chips,
self.config.mult, self.config.e_chips,
self.config.x_mult, self.config.mult,
self.config.e_mult, self.config.x_mult,
self.config.p_dollars self.config.e_mult,
}} self.config.p_dollars,
},
}
end, end,
calculate = function(_, card, context) calculate = function(_, card, context)
if context.pre_joker then if context.pre_joker then
@ -74,8 +76,8 @@ SMODS.Edition({
"All card values are", "All card values are",
"{C:attention}multiplied{} by {C:attention}up to " .. jumbo_modifier, "{C:attention}multiplied{} by {C:attention}up to " .. jumbo_modifier,
"{C:inactive}(If possible)", "{C:inactive}(If possible)",
"{C:inactive,E:1,s:0.7}Whoa, it's huge!!{}" "{C:inactive,E:1,s:0.7}Whoa, it's huge!!{}",
} },
}, },
on_apply = function(card) on_apply = function(card)
G.E_MANAGER:add_event(Event({ G.E_MANAGER:add_event(Event({
@ -84,7 +86,7 @@ SMODS.Edition({
func = function() func = function()
Jane.resize(card, Jane.config.wee_sizemod) Jane.resize(card, Jane.config.wee_sizemod)
return true return true
end end,
})) }))
local obj = card:gc() local obj = card:gc()
@ -110,7 +112,7 @@ SMODS.Edition({
func = function() func = function()
Jane.resize(card, 1 / Jane.config.wee_sizemod) Jane.resize(card, 1 / Jane.config.wee_sizemod)
return true return true
end end,
})) }))
local was_added = card.added_to_deck local was_added = card.added_to_deck
@ -129,7 +131,7 @@ SMODS.Edition({
sound = { sound = {
sound = "jane_e_jumbo", sound = "jane_e_jumbo",
per = 1, per = 1,
vol = 0.5 vol = 0.5,
}, },
weight = 0.8, weight = 0.8,
in_shop = true, in_shop = true,

View file

@ -46,7 +46,7 @@ local granddad_palette = {
HEX("155fd9"), HEX("155fd9"),
HEX("ff8170"), HEX("ff8170"),
HEX("ffffff"), HEX("ffffff"),
HEX("6c0700") HEX("6c0700"),
} }
local function food_jokers_count() local function food_jokers_count()
@ -136,7 +136,7 @@ SMODS.Joker {
text = { text = {
"{C:attention}+#1# {}booster pack slot#2#", "{C:attention}+#1# {}booster pack slot#2#",
"{C:inactive,s:0.75,E:1}#3#{C:red,s:1.5,E:1}#4#", "{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 = Cryptid and 2 or 1}},
pos = {x = 0, y = 0}, pos = {x = 0, y = 0},
@ -145,12 +145,14 @@ SMODS.Joker {
cost = 6, cost = 6,
rarity = 2, rarity = 2,
loc_vars = function(_, _, card) loc_vars = function(_, _, card)
return {vars = { return {
card.ability.extra.choices, vars = {
card.ability.extra.choices == 1 and "" or "s", card.ability.extra.choices,
Jane.sinister and "" or pseudorandom_element(maxie_quotes.normal, pseudoseed("MaxieQuotes")), card.ability.extra.choices == 1 and "" or "s",
Jane.sinister and pseudorandom_element(maxie_quotes.scared, pseudoseed("MaxieQuotes")) or "", Jane.sinister and "" or pseudorandom_element(maxie_quotes.normal, pseudoseed("MaxieQuotes")),
}} Jane.sinister and pseudorandom_element(maxie_quotes.scared, pseudoseed("MaxieQuotes")) or "",
},
}
end, end,
calculate = function(_, card, context) calculate = function(_, card, context)
if context.starting_shop then if context.starting_shop then
@ -158,7 +160,7 @@ SMODS.Joker {
SMODS.add_booster_to_shop() SMODS.add_booster_to_shop()
end end
end end
end end,
} }
function Jane.update_honey() function Jane.update_honey()
@ -223,7 +225,7 @@ SMODS.Joker {
"#5#{C:attention}#6#", "#5#{C:attention}#6#",
"{C:dark_edition}#7#{}#8#{C:inactive,s:0.75,E:1}#9#", "{C:dark_edition}#7#{}#8#{C:inactive,s:0.75,E:1}#9#",
"{C:inactive,s:0.75,E:1}#10#{C:red,s:1.5,E:1}#11#", "{C:inactive,s:0.75,E:1}#10#{C:red,s:1.5,E:1}#11#",
} },
}, },
config = {extra = {level = "1"}}, -- Strings do not get mutated by other mods config = {extra = {level = "1"}}, -- Strings do not get mutated by other mods
pos = {x = 0, y = 0}, pos = {x = 0, y = 0},
@ -257,19 +259,22 @@ SMODS.Joker {
end end
end end
return {vars = { return {
is_corrupted and " (" .. level_name(level - 2) .. ")" or "", vars = {
(exclusions or ""):sub(#separator), is_corrupted and " (" .. level_name(level - 2) .. ")" or "",
is_corrupted and "" or " jokers", (exclusions or ""):sub(#separator),
is_corrupted and "jokers " or "", is_corrupted and "" or " jokers",
is_corrupted and (level >= #Jane.rarity_names - 1 and "Cannot be upgraded." or "") or "Getting another ", is_corrupted and "jokers " or "",
is_corrupted and "" or "Honey", is_corrupted and (level >= #Jane.rarity_names - 1 and "Cannot be upgraded." or "") or "Getting another ",
is_corrupted and "" or "corrupts ", is_corrupted and "" or "Honey",
is_corrupted and "" or "this Joker", is_corrupted and "" or "corrupts ",
Jane.sinister and "" or (is_corrupted and "*Her eyes are looking around," or ""), is_corrupted and "" or "this Joker",
Jane.sinister and "" or (is_corrupted and "as if she wants to say something...*" or "Buzzzzz! I'll do my best!"), Jane.sinister and "" or (is_corrupted and "*Her eyes are looking around," or ""),
Jane.sinister and (is_corrupted and "..." or "S-STOP THAT!! YOU'RE FREAKING ME OOOUT!!!") or "", Jane.sinister and "" or
}} (is_corrupted and "as if she wants to say something...*" or "Buzzzzz! I'll do my best!"),
Jane.sinister and (is_corrupted and "..." or "S-STOP THAT!! YOU'RE FREAKING ME OOOUT!!!") or "",
},
}
end, end,
update = function(_, card, _) update = function(_, card, _)
if card.added_to_deck and card.children.center and card.children.floating_sprite then if card.added_to_deck and card.children.center and card.children.floating_sprite then
@ -322,7 +327,7 @@ local oxy_quotes = {
"...H-how are you doing t-that...?", "...H-how are you doing t-that...?",
"This is... unsettling...", "This is... unsettling...",
"S-... So much power...", "S-... So much power...",
} },
} }
function Jane.oxy(card, removed) function Jane.oxy(card, removed)
@ -347,7 +352,7 @@ function Jane.oxy(card, removed)
nil, nil,
{ {
message = (extra.is_corrupted and "+" or "-") .. destroyed_steel, message = (extra.is_corrupted and "+" or "-") .. destroyed_steel,
colour = extra.is_corrupted and G.C.PURPLE or G.C.GREY colour = extra.is_corrupted and G.C.PURPLE or G.C.GREY,
} }
) )
end end
@ -367,7 +372,7 @@ SMODS.Joker {
"{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#",
"{C:inactive,s:0.75,E:1}#11#{C:red,s:1.5,E:1}#12#", "{C:inactive,s:0.75,E:1}#11#{C:red,s:1.5,E:1}#12#",
} },
}, },
config = {extra = {corrupted_steel = 2.5, is_corrupted = false, milestone = 3, progress = 0}}, config = {extra = {corrupted_steel = 2.5, is_corrupted = false, milestone = 3, progress = 0}},
pos = {x = 0, y = 0}, pos = {x = 0, y = 0},
@ -385,20 +390,25 @@ SMODS.Joker {
local effective = is_corrupted and progress or milestone - progress local effective = is_corrupted and progress or milestone - progress
local plural = effective == 1 and "" or "s" local plural = effective == 1 and "" or "s"
return {vars = { return {
is_corrupted and " (Corrupted)" or "", vars = {
amount, is_corrupted and " (Corrupted)" or "",
is_corrupted and "Purifies " or "", amount,
is_corrupted and "in " or "", is_corrupted and "Purifies " or "",
is_corrupted and "" or "Destroying ", is_corrupted and "in " or "",
effective .. (is_corrupted and " round" or " steel card") .. plural, is_corrupted and "" or "Destroying ",
is_corrupted and "" or "corrupts ", effective .. (is_corrupted and " round" or " steel card") .. plural,
is_corrupted and "Destroying steel cards" or "this Joker", is_corrupted and "" or "corrupts ",
is_corrupted and "prolongs the " or "", is_corrupted and "Destroying steel cards" or "this Joker",
is_corrupted and "corruption" or "", is_corrupted and "prolongs the " or "",
Jane.sinister and "" or (is_corrupted and pseudorandom_element(oxy_quotes.normal, pseudoseed("OxyQuotes")) or "We all cut close..."), is_corrupted and "corruption" or "",
Jane.sinister and (is_corrupted and pseudorandom_element(oxy_quotes.scared, pseudoseed("OxyQuotes")) or "WHAT ARE YOU DOING DOWN THERE?!?") or "", Jane.sinister and "" or
}} (is_corrupted and pseudorandom_element(oxy_quotes.normal, pseudoseed("OxyQuotes")) or "We all cut close..."),
Jane.sinister and
(is_corrupted and pseudorandom_element(oxy_quotes.scared, pseudoseed("OxyQuotes")) or "WHAT ARE YOU DOING DOWN THERE?!?") or
"",
},
}
end, end,
update = function(_, card, _) update = function(_, card, _)
if card.added_to_deck and card.children.center and card.children.floating_sprite then if card.added_to_deck and card.children.center and card.children.floating_sprite then
@ -428,14 +438,14 @@ SMODS.Joker {
nil, nil,
{ {
message = extra.is_corrupted and "-1" or "+1", message = extra.is_corrupted and "-1" or "+1",
colour = extra.is_corrupted and G.C.PURPLE or G.C.GREY colour = extra.is_corrupted and G.C.PURPLE or G.C.GREY,
} }
) )
end end
if not extra.is_corrupting and if not extra.is_corrupting and
((extra.progress >= extra.milestone and not extra.is_corrupted) or ((extra.progress >= extra.milestone and not extra.is_corrupted) or
(extra.progress <= 0 and extra.is_corrupted)) then (extra.progress <= 0 and extra.is_corrupted)) then
extra.is_corrupting = true extra.is_corrupting = true
G.E_MANAGER:add_event(Event({ G.E_MANAGER:add_event(Event({
@ -444,7 +454,7 @@ SMODS.Joker {
card:flip() card:flip()
play_sound("card1") play_sound("card1")
return true return true
end end,
})) }))
G.E_MANAGER:add_event(Event({ G.E_MANAGER:add_event(Event({
@ -457,7 +467,7 @@ SMODS.Joker {
extra.is_corrupted = not extra.is_corrupted extra.is_corrupted = not extra.is_corrupted
extra.is_corrupting = nil extra.is_corrupting = nil
return true return true
end end,
})) }))
end end
@ -467,7 +477,7 @@ SMODS.Joker {
local amount = extra.is_corrupted and extra.corrupted_steel or extra.steel local amount = extra.is_corrupted and extra.corrupted_steel or extra.steel
return {x_chips = amount, x_mult = amount, colour = G.C.PURPLE, card = card}, true return {x_chips = amount, x_mult = amount, colour = G.C.PURPLE, card = card}, true
end end
end end,
} }
if Cryptid then if Cryptid then
@ -485,7 +495,7 @@ SMODS.Joker {
"{X:dark_edition,C:chips}+" .. operator .. "#1#{C:chips} Chips{} for every", "{X:dark_edition,C:chips}+" .. operator .. "#1#{C:chips} Chips{} for every",
"{C:attention}unique Voucher redeemed", "{C:attention}unique Voucher redeemed",
"{C:inactive}(Currently {X:dark_edition,C:chips}" .. operator .. "#2#{C:inactive})", "{C:inactive}(Currently {X:dark_edition,C:chips}" .. operator .. "#2#{C:inactive})",
} },
}, },
config = {big_num_scaler = true, extra = {tet = Cryptid and 0.1 or 0.5}}, config = {big_num_scaler = true, extra = {tet = Cryptid and 0.1 or 0.5}},
pos = {x = 0, y = 0}, pos = {x = 0, y = 0},
@ -513,7 +523,7 @@ SMODS.Joker {
[Cryptid and "e_chips" or "x_chips"] = num, [Cryptid and "e_chips" or "x_chips"] = num,
}, true }, true
end end
end end,
} }
SMODS.Joker { SMODS.Joker {
@ -523,7 +533,7 @@ SMODS.Joker {
text = { text = {
"This Joker has a {C:jane_RGB,E:1}strange", "This Joker has a {C:jane_RGB,E:1}strange",
"{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 = {}, config = {},
pos = {x = 0, y = 0}, pos = {x = 0, y = 0},
@ -557,54 +567,54 @@ SMODS.Joker {
message = Cryptid and "+777" or "+77", message = Cryptid and "+777" or "+77",
chips = Cryptid and 777 or 77, chips = Cryptid and 777 or 77,
colour = palette, colour = palette,
card = card card = card,
}, true }, true
elseif rnd == 2 then elseif rnd == 2 then
return { return {
message = Cryptid and "+777 Mult" or "+77 Mult", message = Cryptid and "+777 Mult" or "+77 Mult",
mult = Cryptid and 777 or 77, mult = Cryptid and 777 or 77,
colour = palette, colour = palette,
card = card card = card,
}, true }, true
elseif rnd == 3 then elseif rnd == 3 then
return { return {
message = "+$7", message = "+$7",
dollars = 7, dollars = 7,
colour = palette, colour = palette,
card = card card = card,
}, true }, true
elseif rnd == 4 then elseif rnd == 4 then
return { return {
message = Cryptid and "x7" or "x1.77", message = Cryptid and "x7" or "x1.77",
x_chips = Cryptid and 7 or 1.77, x_chips = Cryptid and 7 or 1.77,
colour = palette, colour = palette,
card = card card = card,
}, true }, true
elseif rnd == 5 then elseif rnd == 5 then
return { return {
message = Cryptid and "x7 Mult" or "x1.77 Mult", message = Cryptid and "x7 Mult" or "x1.77 Mult",
x_mult = Cryptid and 7 or 1.77, x_mult = Cryptid and 7 or 1.77,
colour = palette, colour = palette,
card = card card = card,
}, true }, true
elseif rnd == 6 then elseif rnd == 6 then
return { return {
message = "^1.77", message = "^1.77",
e_chips = 1.77, e_chips = 1.77,
colour = palette, colour = palette,
card = card card = card,
}, true }, true
else else
return { return {
message = "^1.77 Mult", message = "^1.77 Mult",
e_mult = 1.77, e_mult = 1.77,
colour = palette, colour = palette,
card = card card = card,
}, true }, true
end end
end end
end end
end end,
} }
SMODS.Joker { SMODS.Joker {
@ -617,7 +627,7 @@ SMODS.Joker {
"{C:attention}food or Peppino Joker", "{C:attention}food or Peppino Joker",
"in your possession", "in your possession",
"{C:inactive}(Currently {X:dark_edition,C:red}" .. operator .. "#1#{C:red} Mult{C:inactive})", "{C:inactive}(Currently {X:dark_edition,C:red}" .. operator .. "#1#{C:red} Mult{C:inactive})",
} },
}, },
pos = {x = 0, y = 0}, pos = {x = 0, y = 0},
soul_pos = {x = 1, y = 0}, soul_pos = {x = 1, y = 0},
@ -637,5 +647,5 @@ SMODS.Joker {
[Cryptid and "e_mult" or "x_mult"] = 2 ^ count, [Cryptid and "e_mult" or "x_mult"] = 2 ^ count,
}, true }, true
end end
end end,
} }

View file

@ -2,7 +2,7 @@ Jane = {
config = { config = {
wee_sizemod = 1.25, wee_sizemod = 1.25,
texture_pack = "default", texture_pack = "default",
bans = {"j_cry_crustulum", "c_cry_hammerspace"} bans = {"j_cry_crustulum", "c_cry_hammerspace"},
}, },
} }
@ -20,8 +20,8 @@ end
function Jane.can_use() function Jane.can_use()
return not (((G.play and #G.play.cards > 0) or return not (((G.play and #G.play.cards > 0) or
(G.CONTROLLER.locked) or (G.CONTROLLER.locked) or
(G.GAME.STOP_USE and G.GAME.STOP_USE > 0)) and (G.GAME.STOP_USE and G.GAME.STOP_USE > 0)) and
G.STATE ~= G.STATES.HAND_PLAYED and G.STATE ~= G.STATES.HAND_PLAYED and
G.STATE ~= G.STATES.DRAW_TO_HAND and G.STATE ~= G.STATES.DRAW_TO_HAND and
G.STATE ~= G.STATES.PLAY_TAROT) G.STATE ~= G.STATES.PLAY_TAROT)
@ -56,7 +56,7 @@ function Jane.card_status_text(
backdrop_colour = colour or (G.C.FILTER), backdrop_colour = colour or (G.C.FILTER),
align = align or "bm", align = align or "bm",
major = card, major = card,
offset = {x = xoffset or 0, y = yoffset or (-0.05*G.CARD_H)} offset = {x = xoffset or 0, y = yoffset or (-0.05 * G.CARD_H)},
}) })
if sound then if sound then
@ -90,7 +90,7 @@ function Jane.card_status_text(
backdrop_colour = colour or (G.C.FILTER), backdrop_colour = colour or (G.C.FILTER),
align = align or "bm", align = align or "bm",
major = card, major = card,
offset = {x = xoffset or 0, y = yoffset or (-0.05*G.CARD_H)} offset = {x = xoffset or 0, y = yoffset or (-0.05 * G.CARD_H)},
}) })
if sound then if sound then
@ -110,7 +110,7 @@ function Jane.card_status_text(
end end
return true return true
end end,
})) }))
end end
end end
@ -132,7 +132,7 @@ function Jane.get_chipmult_sum(chips, mult)
mult = mult or 0 mult = mult or 0
local break_infinity = ((Talisman or {}).config_file or {}).break_infinity local break_infinity = ((Talisman or {}).config_file or {}).break_infinity
local big = (break_infinity == "" or break_infinity == nil) and function (x) return x end or to_big local big = (break_infinity == "" or break_infinity == nil) and function(x) return x end or to_big
local op = Jane.get_operator() local op = Jane.get_operator()
if op >= 3 then if op >= 3 then
@ -161,16 +161,16 @@ end
function Jane.hidden(card) function Jane.hidden(card)
return G.GAME and not return G.GAME and not
G.GAME.obsidian and G.GAME.obsidian and
type(card) == 'table' and type(card) == "table" and
(card.name == "Black Hole" or card.name == "The Soul" or card.hidden) (card.name == "Black Hole" or card.name == "The Soul" or card.hidden)
end end
function Jane.play_sound(sound, per, vol) function Jane.play_sound(sound, per, vol)
G.E_MANAGER:add_event(Event({ G.E_MANAGER:add_event(Event({
func = function() func = function()
play_sound(sound,per,vol) play_sound(sound, per, vol)
return true return true
end end,
})) }))
end end
@ -187,8 +187,8 @@ function Jane.resize(card, mod, force_save)
if card.area and if card.area and
((G.shop_jokers and card.area == G.shop_jokers) or ((G.shop_jokers and card.area == G.shop_jokers) or
(G.shop_booster and card.area == G.shop_booster) or (G.shop_booster and card.area == G.shop_booster) or
(G.shop_vouchers and card.area == G.shop_vouchers)) then (G.shop_vouchers and card.area == G.shop_vouchers)) then
create_shop_card_ui(card) create_shop_card_ui(card)
end end
end end
@ -200,7 +200,7 @@ function Jane.q(fc, de, t, tr, bl, ba)
delay = de, delay = de,
blockable = bl, blockable = bl,
blocking = ba, blocking = ba,
func = fc func = fc,
})) }))
end end
@ -287,8 +287,8 @@ function Game:update(dt)
for k, v in pairs(G.GAME.hands) do for k, v in pairs(G.GAME.hands) do
if orrery[k] and if orrery[k] and
(orrery[k].mult ~= v.mult or (orrery[k].mult ~= v.mult or
orrery[k].chips ~= v.chips or orrery[k].chips ~= v.chips or
orrery[k].level ~= v.level) then orrery[k].level ~= v.level) then
inequalities = inequalities + 1 inequalities = inequalities + 1
end end
@ -304,7 +304,7 @@ function Game:update(dt)
end end
pools.chips = pools.chips + inequalities * 150 pools.chips = pools.chips + inequalities * 150
table.sort(hands, function (x, y) return x.order > y.order end) table.sort(hands, function(x, y) return x.order > y.order end)
for i, v in ipairs(hands) do for i, v in ipairs(hands) do
v.mult = math.floor(pools.mult / count) + (small(pools.mult % count) >= i and 1 or 0) v.mult = math.floor(pools.mult / count) + (small(pools.mult % count) >= i and 1 or 0)
@ -316,13 +316,16 @@ function Game:update(dt)
orrery[k] = {chips = v.chips, level = v.level, mult = v.mult} orrery[k] = {chips = v.chips, level = v.level, mult = v.mult}
end end
hand(localize("k_all_hands"), math.floor(pools.chips / count), math.floor(pools.mult / count), math.floor(pools.level / count)) hand(localize("k_all_hands"), math.floor(pools.chips / count), math.floor(pools.mult / count),
math.floor(pools.level / count))
delay(1) delay(1)
update_hand_text({sound = "button", volume = 0.7, pitch = 1.1, delay = 0}, {mult = 0, chips = 0, handname = "", level = ""}) update_hand_text({sound = "button", volume = 0.7, pitch = 1.1, delay = 0},
{mult = 0, chips = 0, handname = "", level = ""})
end end
local function hsv(h, s, v) local function hsv(h, s, v)
if s <= 0 then return v, v, v end if s <= 0 then return v, v, v end
h = h * 6 h = h * 6
local c = v * s local c = v * s
local x = (1 - math.abs((h % 2) - 1)) * c local x = (1 - math.abs((h % 2) - 1)) * c

View file

@ -1,6 +1,5 @@
-- The following code is slightly adapted from -- The following code is slightly adapted from
-- https://github.com/MathIsFun0/Cryptid/blob/main/lib/misprintize.lua -- https://github.com/MathIsFun0/Cryptid/blob/main/lib/misprintize.lua
local base_values = {} local base_values = {}
local big_num_whitelist = { local big_num_whitelist = {
@ -114,7 +113,6 @@ local function log_random(seed, min, max)
end end
function Jane.misprintize_val(val, override, big) function Jane.misprintize_val(val, override, big)
return is_number(val) and check( return is_number(val) and check(
format( format(
val * log_random( val * log_random(
@ -153,30 +151,30 @@ function Jane.misprintize_tbl(name, ref_tbl, ref_value, clear, override, stack,
tbl[k] = check( tbl[k] = check(
clear and base_values[name][k] clear and base_values[name][k]
or format( or format(
(stack and tbl[k] or base_values[name][k]) (stack and tbl[k] or base_values[name][k])
* log_random( * log_random(
pseudoseed("cry_misprint" .. G.GAME.round_resets.ante), pseudoseed("cry_misprint" .. G.GAME.round_resets.ante),
override and override.min or G.GAME.modifiers.cry_misprint_min, override and override.min or G.GAME.modifiers.cry_misprint_min,
override and override.max or G.GAME.modifiers.cry_misprint_max override and override.max or G.GAME.modifiers.cry_misprint_max
),
"%.2g"
), ),
"%.2g"
),
big big
) )
end end
else else
for _k, _ in pairs(tbl[k]) do for _k, _ in pairs(tbl[k]) do
if is_number(tbl[k][_k]) and not if is_number(tbl[k][_k]) and not
(_k == "id") and not (_k == "id") and not
(k == "perish_tally") and not (k == "perish_tally") and not
(k == "colour") and not (k == "colour") and not
(_k == "suit_nominal") and not (_k == "suit_nominal") and not
(_k == "base_nominal") and not (_k == "base_nominal") and not
(_k == "face_nominal") and not (_k == "face_nominal") and not
(_k == "qty") and not (_k == "qty") and not
(k == "x_mult" and v == 1 and not tbl[k].override_x_mult_check) and not (k == "x_mult" and v == 1 and not tbl[k].override_x_mult_check) and not
(_k == "selected_d6_face") then (_k == "selected_d6_face") then
if not base_values[name] then if not base_values[name] then
base_values[name] = {} base_values[name] = {}
end end
@ -191,15 +189,15 @@ function Jane.misprintize_tbl(name, ref_tbl, ref_value, clear, override, stack,
tbl[k][_k] = check( tbl[k][_k] = check(
clear and base_values[name][k][_k] clear and base_values[name][k][_k]
or format( or format(
(stack and tbl[k][_k] or base_values[name][k][_k]) * (stack and tbl[k][_k] or base_values[name][k][_k]) *
log_random( log_random(
pseudoseed("cry_misprint" .. G.GAME.round_resets.ante), pseudoseed("cry_misprint" .. G.GAME.round_resets.ante),
override and override.min or G.GAME.modifiers.cry_misprint_min, override and override.min or G.GAME.modifiers.cry_misprint_min,
override and override.max or G.GAME.modifiers.cry_misprint_max override and override.max or G.GAME.modifiers.cry_misprint_max
),
"%.2g"
), ),
"%.2g"
),
big big
) )
end end
@ -247,10 +245,11 @@ function Jane.misprintize(card, override, force_reset, stack)
end) end)
end end
end end
if (not force_reset or G.GAME.modifiers.cry_jkr_misprint_mod) and if (not force_reset or G.GAME.modifiers.cry_jkr_misprint_mod) and
(G.GAME.modifiers.cry_misprint_min or override or card.ability.set == "Joker") and not (G.GAME.modifiers.cry_misprint_min or override or card.ability.set == "Joker") and not
stack or not stack or not
no(card, "immutable", true) then no(card, "immutable", true) then
if card.ability.name == "Ace Aequilibrium" then if card.ability.name == "Ace Aequilibrium" then
return return
end end

View file

@ -20,7 +20,7 @@ for _, v in pairs({
key = "jane" .. v, key = "jane" .. v,
px = 71, px = 71,
py = 95, py = 95,
path = Jane.config.texture_pack .. "/j_jane_" .. v .. ".png" path = Jane.config.texture_pack .. "/j_jane_" .. v .. ".png",
} }
end end
@ -44,7 +44,7 @@ SMODS.Joker {
"cards {C:attention}#1# time#2# {}if", "cards {C:attention}#1# time#2# {}if",
"hand contains {C:attention}#3#", "hand contains {C:attention}#3#",
"or fewer card#4#", "or fewer card#4#",
} },
}, },
config = {extra = {retriggers = 2, requirement = 4}}, config = {extra = {retriggers = 2, requirement = 4}},
pos = {x = 0, y = 0}, pos = {x = 0, y = 0},
@ -57,12 +57,14 @@ SMODS.Joker {
local retriggers = extra.retriggers local retriggers = extra.retriggers
local requirement = extra.requirement local requirement = extra.requirement
return {vars = { return {
retriggers, vars = {
retriggers == 1 and "" or "s", retriggers,
requirement, retriggers == 1 and "" or "s",
requirement == 1 and "" or "s" requirement,
}} requirement == 1 and "" or "s",
},
}
end, end,
calculate = function(_, card, context) calculate = function(_, card, context)
if not context.repetition or if not context.repetition or
@ -76,9 +78,9 @@ SMODS.Joker {
message = localize("k_again_ex"), message = localize("k_again_ex"),
repetitions = card.ability.extra.retriggers, repetitions = card.ability.extra.retriggers,
colour = G.C.ORANGE, colour = G.C.ORANGE,
card = card card = card,
}, true }, true
end end,
} }
SMODS.Joker { SMODS.Joker {
@ -91,7 +93,7 @@ SMODS.Joker {
"{C:attention}contribute to scoring {}and", "{C:attention}contribute to scoring {}and",
"are all considered as", "are all considered as",
"the {C:attention}first played card", "the {C:attention}first played card",
} },
}, },
pos = {x = 0, y = 0}, pos = {x = 0, y = 0},
soul_pos = {x = 1, y = 0}, soul_pos = {x = 1, y = 0},
@ -112,7 +114,7 @@ SMODS.Joker {
(Cryptid and "an {C:spectral}Empowered Tag" or "a {C:dark_edition}Negative {C:spectral}Soul") .. " {}after #1#", (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#", "When {C:attention}sold#2#{}, turns#3#",
"#4#{C:red}The Rot{} without rewards", "#4#{C:red}The Rot{} without rewards",
} },
}, },
config = {extra = {rounds_left = hunter[1]}}, config = {extra = {rounds_left = hunter[1]}},
pos = {x = 0, y = 0}, pos = {x = 0, y = 0},
@ -129,12 +131,14 @@ SMODS.Joker {
local rounds_left = card.ability.extra.rounds_left local rounds_left = card.ability.extra.rounds_left
local sold = rounds_left - hunter[2] local sold = rounds_left - hunter[2]
return {vars = { return {
rounds_left .. rounds(rounds_left) .. (rounds_left <= 0 and "...?" or ""), vars = {
sold <= 0 and "" or " after " .. sold .. rounds(sold), rounds_left .. rounds(rounds_left) .. (rounds_left <= 0 and "...?" or ""),
sold <= 0 and " into" or "", sold <= 0 and "" or " after " .. sold .. rounds(sold),
sold <= 0 and "" or "into ", sold <= 0 and " into" or "",
}} sold <= 0 and "" or "into ",
},
}
end, end,
update = function(_, card, _) update = function(_, card, _)
if card.added_to_deck and card.children.center and card.children.floating_sprite then if card.added_to_deck and card.children.center and card.children.floating_sprite then
@ -185,7 +189,7 @@ SMODS.Joker {
return return
end end
if context.selling_self and card.ability.extra.rounds_left <= hunter[2] then if context.selling_self and card.ability.extra.rounds_left <= hunter[3] then
spawn_rot() spawn_rot()
elseif not context.individual and not context.repetition and not context.retrigger_joker then elseif not context.individual and not context.repetition and not context.retrigger_joker then
if G.GAME.round_resets.hands <= 0 then if G.GAME.round_resets.hands <= 0 then
@ -215,7 +219,8 @@ SMODS.Joker {
card.hunter_prep = nil card.hunter_prep = nil
card.ability.extra.rounds_left = card.ability.extra.rounds_left - 1 card.ability.extra.rounds_left = card.ability.extra.rounds_left - 1
local rl = card.ability.extra.rounds_left 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") 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 if rl > hunter[2] then
card:juice_up(0.6, 0.1) card:juice_up(0.6, 0.1)
@ -251,7 +256,7 @@ SMODS.Joker {
G.E_MANAGER:add_event(Event({trigger = "after", func = die})) G.E_MANAGER:add_event(Event({trigger = "after", func = die}))
end end
end end
end end,
} }
SMODS.Joker { SMODS.Joker {
@ -264,7 +269,7 @@ SMODS.Joker {
"are {C:attention}multiplied{} by {C:attention}#1#", "are {C:attention}multiplied{} by {C:attention}#1#",
"when they are created", "when they are created",
"{C:inactive}(If possible)", "{C:inactive}(If possible)",
} },
}, },
loc_vars = function(_, _, center) loc_vars = function(_, _, center)
return {vars = {center.ability.modifier}} return {vars = {center.ability.modifier}}
@ -304,7 +309,7 @@ SMODS.Joker {
text = { text = {
"Grants the {C:green}ability{} to {C:red}destroy", "Grants the {C:green}ability{} to {C:red}destroy",
"selected {C:attention}playing cards", "selected {C:attention}playing cards",
} },
}, },
pos = {x = 0, y = 0}, pos = {x = 0, y = 0},
soul_pos = {x = 1, y = 0}, soul_pos = {x = 1, y = 0},
@ -334,7 +339,7 @@ SMODS.Joker {
"You can choose {C:attention}any number of cards", "You can choose {C:attention}any number of cards",
"after opening {C:attention}any Booster Pack", "after opening {C:attention}any Booster Pack",
"{C:attention}Booster Packs{} have {C:green}+#1#{} additional cards", "{C:attention}Booster Packs{} have {C:green}+#1#{} additional cards",
} },
}, },
loc_vars = function(_, _, center) loc_vars = function(_, _, center)
return {vars = {center.ability.extra.extrachoices}} return {vars = {center.ability.extra.extrachoices}}
@ -373,7 +378,7 @@ function Card:open()
end end
return true return true
end end,
})) }))
end end
@ -385,7 +390,7 @@ SMODS.Joker {
text = { text = {
"Non-{C:dark_edition}editioned{} cards are", "Non-{C:dark_edition}editioned{} cards are",
"{C:attention}given a random {C:dark_edition}Edition", "{C:attention}given a random {C:dark_edition}Edition",
} },
}, },
pos = {x = 0, y = 0}, pos = {x = 0, y = 0},
soul_pos = {x = 1, y = 0}, soul_pos = {x = 1, y = 0},
@ -416,7 +421,7 @@ function Card:draw(layer)
self.facing == "front" and self.facing == "front" and
self.config and self.config and
(self.added_to_deck or (self.added_to_deck or
(self.area and self.area == G.hand)) and not (self.area and self.area == G.hand)) and not
self.edition and self.edition and
(self.area == G.consumeables or cen.set ~= "Booster") and (self.area == G.consumeables or cen.set ~= "Booster") and
next(SMODS.find_card("j_jane_rivulet")) then next(SMODS.find_card("j_jane_rivulet")) then
@ -462,7 +467,7 @@ SMODS.Joker {
"{C:inactive,s:1.25}#10#{C:attention,s:1.25}#11#{C:inactive,s:1.25}#12#{C:inactive}#13#{C:jane_RGB}#14#" .. "{C:inactive,s:1.25}#10#{C:attention,s:1.25}#11#{C:inactive,s:1.25}#12#{C:inactive}#13#{C:jane_RGB}#14#" ..
(Cryptid and "{C:inactive}" or "{C:inactive,s:0.75}") .. (Cryptid and "{C:inactive}" or "{C:inactive,s:0.75}") ..
"#15#", "#15#",
} },
}, },
config = {extra = {karma = 0, max_karma = Cryptid and 10 or 3}}, config = {extra = {karma = 0, max_karma = Cryptid and 10 or 3}},
pos = {x = 0, y = 0}, pos = {x = 0, y = 0},
@ -476,23 +481,25 @@ SMODS.Joker {
local max_karma = extra.max_karma local max_karma = extra.max_karma
local attuned = karma >= max_karma local attuned = karma >= max_karma
return {vars = { return {
attuned and " (Attuned)" or "", vars = {
Cryptid and "Ankh and Gateway" or "Ankh", attuned and " (Attuned)" or "",
attuned and "" or "Attune ", Cryptid and "Ankh and Gateway" or "Ankh",
attuned and "" or "after using ", attuned and "" or "Attune ",
attuned and (Cryptid and "^^" or "^") .. attunement() or max_karma, attuned and "" or "after using ",
attuned and "" or (Cryptid and " Gateways" or " Ankh or Soul Cards"), attuned and (Cryptid and "^^" or "^") .. attunement() or max_karma,
attuned and " Chips " or "", attuned and "" or (Cryptid and " Gateways" or " Ankh or Soul Cards"),
attuned and "& " or "", attuned and " Chips " or "",
attuned and "Mult" or "", attuned and "& " or "",
attuned and "" or "[", attuned and "Mult" or "",
attuned and "" or karma, attuned and "" or "[",
attuned and "" or " / " .. max_karma .. "]", attuned and "" or karma,
attuned and "(Cannot be debuffed" .. (Cryptid and "" or ", scales with ") or "", attuned and "" or " / " .. max_karma .. "]",
attuned and (Cryptid and "" or "polygloss") or "", attuned and "(Cannot be debuffed" .. (Cryptid and "" or ", scales with ") or "",
attuned and ")" or "", attuned and (Cryptid and "" or "polygloss") or "",
}} attuned and ")" or "",
},
}
end, end,
update = function(_, card, _) update = function(_, card, _)
if card.added_to_deck and card.children.center and card.children.floating_sprite then if card.added_to_deck and card.children.center and card.children.floating_sprite then
@ -534,9 +541,9 @@ SMODS.Joker {
end end
if not (not context.blueprint and if not (not context.blueprint and
(not context.retrigger_joker_check and not context.retrigger_joker) and (not context.retrigger_joker_check and not context.retrigger_joker) and
context.using_consumeable and context.using_consumeable and
context.consumeable) then context.consumeable) then
return return
end end
@ -592,7 +599,7 @@ SMODS.Joker {
card:flip() card:flip()
play_sound("card1") play_sound("card1")
return true return true
end end,
})) }))
G.E_MANAGER:add_event(Event({ G.E_MANAGER:add_event(Event({
@ -603,9 +610,9 @@ SMODS.Joker {
play_sound("card1") play_sound("card1")
extra.is_attuned = true extra.is_attuned = true
return true return true
end end,
})) }))
end end,
} }
if Cryptid then if Cryptid then
@ -622,13 +629,13 @@ SMODS.Joker {
"Clogs up your Joker slots", "Clogs up your Joker slots",
"{C:attention}Duplicates itself{} at the", "{C:attention}Duplicates itself{} at the",
"end of {C:attention}every ante", "end of {C:attention}every ante",
} },
}, },
pos = {x = 0, y = 0}, pos = {x = 0, y = 0},
soul_pos = {x = 1, y = 0}, soul_pos = {x = 1, y = 0},
cost = 1, cost = 1,
rarity = "jane_junk", rarity = "jane_junk",
in_pool = function (_, _) in_pool = function(_, _)
for _, v in pairs(SMODS.find_card("j_jane_honey")) do for _, v in pairs(SMODS.find_card("j_jane_honey")) do
if tonumber(v.ability.extra.level) == #Jane.rarity_ids - 1 then if tonumber(v.ability.extra.level) == #Jane.rarity_ids - 1 then
return true return true
@ -644,12 +651,12 @@ SMODS.Joker {
local function is_end_of_ante() local function is_end_of_ante()
return not context.individual and not return not context.individual and not
context.repetition and not context.repetition and not
card.debuff and card.debuff and
context.end_of_round and not context.end_of_round and not
context.blueprint and context.blueprint and
G.GAME.blind.boss and not G.GAME.blind.boss and not
(G.GAME.blind.config and G.GAME.blind.config.bonus) (G.GAME.blind.config and G.GAME.blind.config.bonus)
end end
local function spawn() local function spawn()
@ -658,12 +665,16 @@ SMODS.Joker {
rot:add_to_deck() rot:add_to_deck()
G.jokers:emplace(rot) G.jokers:emplace(rot)
Jane.card_status_text(rot, "...", nil, 0.05 * card.T.h, G.C.BLACK, 3, 0, 0, nil, "bm") Jane.card_status_text(rot, "...", nil, 0.05 * card.T.h, G.C.BLACK, 3, 0, 0, nil, "bm")
return true
end end
if has_room() and not card.cloned and is_end_of_ante() then if has_room() and not card.cloned and is_end_of_ante() then
spawn() Jane.q(spawn, 0.5)
else else
card.cloned = false Jane.q(function()
card.cloned = false
return true
end, 5)
end end
end end,
} }

View file

@ -2,7 +2,7 @@ SMODS.Atlas {
key = "janertarots", key = "janertarots",
px = 71, px = 71,
py = 95, py = 95,
path = Jane.config.texture_pack .. "/c_jane_reversetarots.png" path = Jane.config.texture_pack .. "/c_jane_reversetarots.png",
} }
SMODS.Sound({key = "draw", path = "draw.ogg"}) SMODS.Sound({key = "draw", path = "draw.ogg"})
@ -26,7 +26,7 @@ local function conjure(card, number)
G.consumeables:emplace(spectral) G.consumeables:emplace(spectral)
card:juice_up(0.3, 0.5) card:juice_up(0.3, 0.5)
return true return true
end end,
})) }))
end end
end end
@ -65,7 +65,7 @@ local function createfulldeck(enhancement, edition, amount, emplacement)
end end
return true return true
end end,
})) }))
end end
end end
@ -90,7 +90,7 @@ local function randomize(targets, noanim)
end end
if noanim then if noanim then
for i=1, #targets do for i = 1, #targets do
local card = targets[i] local card = targets[i]
card:set_base(pseudorandom_element(G.P_CARDS)) card:set_base(pseudorandom_element(G.P_CARDS))
@ -133,7 +133,7 @@ local function randomize(targets, noanim)
play_sound("card1", percent) play_sound("card1", percent)
targets[i]:juice_up(0.3, 0.3) targets[i]:juice_up(0.3, 0.3)
return true return true
end end,
})) }))
end end
@ -173,7 +173,7 @@ local function randomize(targets, noanim)
play_sound("card3", percent, 0.6) play_sound("card3", percent, 0.6)
card:juice_up(0.3, 0.3) card:juice_up(0.3, 0.3)
return true return true
end end,
})) }))
end end
end end
@ -189,7 +189,7 @@ SMODS.Consumable {
"{C:green,E:1}Randomises{} all cards in hand", "{C:green,E:1}Randomises{} all cards in hand",
"{C:inactive}(Rank, seal, edition,", "{C:inactive}(Rank, seal, edition,",
"{C:inactive}enhancement, and suit)", "{C:inactive}enhancement, and suit)",
} },
}, },
pos = {x = 0, y = 4}, pos = {x = 0, y = 4},
cost = 4, cost = 4,
@ -204,12 +204,12 @@ SMODS.Consumable {
play_sound("tarot1") play_sound("tarot1")
card:juice_up(0.3, 0.5) card:juice_up(0.3, 0.5)
return true return true
end end,
})) }))
randomize(G.hand.cards) randomize(G.hand.cards)
delay(0.5) delay(0.5)
end end,
} }
SMODS.Consumable { SMODS.Consumable {
@ -222,7 +222,7 @@ SMODS.Consumable {
"Creates {C:attention}#1#", "Creates {C:attention}#1#",
"{C:spectral}Spectral{} cards", "{C:spectral}Spectral{} cards",
"{C:inactive}(Must have room)", "{C:inactive}(Must have room)",
} },
}, },
config = {extra = {spectrals = 2}}, config = {extra = {spectrals = 2}},
pos = {x = 2, y = 4}, pos = {x = 2, y = 4},
@ -238,7 +238,7 @@ SMODS.Consumable {
bulk_use = function(_, card, _, _, number) bulk_use = function(_, card, _, _, number)
conjure(card, number) conjure(card, number)
delay(0.6) delay(0.6)
end end,
} }
SMODS.Consumable { SMODS.Consumable {
@ -251,7 +251,7 @@ SMODS.Consumable {
"Create {C:attention}#1#{} {C:green}random {C:dark_edition}Negative", "Create {C:attention}#1#{} {C:green}random {C:dark_edition}Negative",
"{C:attention}Perishable {C:attention}Jokers{}, set {C:money}sell", "{C:attention}Perishable {C:attention}Jokers{}, set {C:money}sell",
"{C:money}value {}of {C:attention}all Jokers {}to {C:money}$0", "{C:money}value {}of {C:attention}all Jokers {}to {C:money}$0",
} },
}, },
config = {extra = {shadows = 2}}, config = {extra = {shadows = 2}},
pos = {x = 3, y = 4}, pos = {x = 3, y = 4},
@ -278,7 +278,8 @@ SMODS.Consumable {
G.jokers.cards[i].extra_cost = 0 G.jokers.cards[i].extra_cost = 0
G.jokers.cards[i].cost = 0 G.jokers.cards[i].cost = 0
G.jokers.cards[i].sell_cost = 0 G.jokers.cards[i].sell_cost = 0
G.jokers.cards[i].sell_cost_label = G.jokers.cards[i].facing == "back" and "?" or G.jokers.cards[i].sell_cost G.jokers.cards[i].sell_cost_label = G.jokers.cards[i].facing == "back" and "?" or G.jokers.cards[i]
.sell_cost
end end
end, end,
bulk_use = function(_, card, _, _, number) bulk_use = function(_, card, _, _, number)
@ -301,12 +302,12 @@ SMODS.Consumable {
G.jokers.cards[i].extra_cost = 0 G.jokers.cards[i].extra_cost = 0
G.jokers.cards[i].cost = 0 G.jokers.cards[i].cost = 0
G.jokers.cards[i].sell_cost = 0 G.jokers.cards[i].sell_cost = 0
G.jokers.cards[i].sell_cost_label = G.jokers.cards[i].facing == "back" and "?" or G.jokers.cards[i].sell_cost G.jokers.cards[i].sell_cost_label = G.jokers.cards[i].facing == "back" and "?" or G.jokers.cards[i]
.sell_cost
end end
end end,
} }
SMODS.Consumable { SMODS.Consumable {
key = "rift", key = "rift",
atlas = "janeacc", atlas = "janeacc",
@ -315,8 +316,8 @@ SMODS.Consumable {
name = "Rift", name = "Rift",
text = { text = {
"{C:attention}Reset{} your deck to a", "{C:attention}Reset{} your deck to a",
"{C:attention}standard 52-card deck" "{C:attention}standard 52-card deck",
} },
}, },
cost = 15, cost = 15,
pos = {x = 4, y = 4}, pos = {x = 4, y = 4},
@ -336,12 +337,12 @@ SMODS.Consumable {
timer = "REAL", timer = "REAL",
delay = time or 1, delay = time or 1,
func = function() func = function()
return true return true
end end,
}), queue) }), queue)
end end
realdelay(1) realdelay(1)
createfulldeck() createfulldeck()
end end,
} }

View file

@ -23,7 +23,6 @@ local blurbs = {
"Juggling is one of my favourite passtimes!", "Juggling is one of my favourite passtimes!",
"I wonder what's the deal with pairs?", "I wonder what's the deal with pairs?",
"You don't need to understand math to enjoy watching the digits climb!", "You don't need to understand math to enjoy watching the digits climb!",
"You should meet my friend Joseph; he's stuck in a Planet card!",
"M!", "M!",
} }
@ -35,8 +34,8 @@ SMODS.Consumable {
name = "Joker-in-a-Tarot", name = "Joker-in-a-Tarot",
text = { text = {
"Create a {C:dark_edition}Negative {C:attention}default Joker", "Create a {C:dark_edition}Negative {C:attention}default Joker",
"{C:inactive,E:1}#1#{}" "{C:inactive,E:1}#1#{}",
} },
}, },
loc_vars = function(_, _, _) loc_vars = function(_, _, _)
return {vars = {blurbs[math.random(#blurbs)]}} return {vars = {blurbs[math.random(#blurbs)]}}
@ -59,5 +58,5 @@ SMODS.Consumable {
for _ = 1, number do for _ = 1, number do
self:use(card, area, copier) self:use(card, area, copier)
end end
end end,
} }

View file

@ -2,7 +2,7 @@ SMODS.Atlas {
key = "janetokens", key = "janetokens",
px = 71, px = 71,
py = 95, py = 95,
path = Jane.config.texture_pack .. "/c_jane_tokens.png" path = Jane.config.texture_pack .. "/c_jane_tokens.png",
} }
SMODS.Sound({key = "e_gilded", path = "e_gilded.ogg"}) SMODS.Sound({key = "e_gilded", path = "e_gilded.ogg"})
@ -12,7 +12,7 @@ SMODS.ConsumableType {
default = "c_jane_token_tag_standard", default = "c_jane_token_tag_standard",
loc_txt = { loc_txt = {
collection = "Tokens", collection = "Tokens",
name = "Token" name = "Token",
}, },
shop_rate = 0, shop_rate = 0,
collection_rows = {5, 6}, collection_rows = {5, 6},
@ -21,62 +21,62 @@ SMODS.ConsumableType {
} }
for _, v in pairs({ for _, v in pairs({
{"tag_standard", "Standard", 0, 0, 3}, {"tag_standard", "Standard", 0, 0, 3},
{"tag_charm", "Charm", 1, 0, 5}, {"tag_charm", "Charm", 1, 0, 5},
{"tag_meteor", "Meteor", 2, 0, 5}, {"tag_meteor", "Meteor", 2, 0, 5},
{"tag_ethereal", "Ethereal", 3, 0, 5}, {"tag_ethereal", "Ethereal", 3, 0, 5},
{"tag_buffoon", "Buffoon", 4, 0, 8}, {"tag_buffoon", "Buffoon", 4, 0, 8},
{"tag_cry_console", "Console", 5, 0, 7}, {"tag_cry_console", "Console", 5, 0, 7},
{"tag_cry_loss", "Loss", 0, 1, 12}, {"tag_cry_loss", "Loss", 0, 1, 12},
{"tag_cry_bundle", "Bundle", 1, 1, 10}, {"tag_cry_bundle", "Bundle", 1, 1, 10},
{"tag_uncommon", "Uncommon", 2, 1, 3}, {"tag_uncommon", "Uncommon", 2, 1, 3},
{"tag_rare", "Rare", 3, 1, 5}, {"tag_rare", "Rare", 3, 1, 5},
{"tag_cry_epic", "Epic", 4, 1, 8}, {"tag_cry_epic", "Epic", 4, 1, 8},
{"tag_cry_gourmond", "Gourmond", 5, 1, 4}, {"tag_cry_gourmond", "Gourmond", 5, 1, 4},
{"tag_double", "Double", 0, 2, 6}, {"tag_double", "Double", 0, 2, 6},
{"tag_cry_triple", "Triple", 1, 2, 8}, {"tag_cry_triple", "Triple", 1, 2, 8},
{"tag_cry_quadruple", "Quadruple", 2, 2, 10}, {"tag_cry_quadruple", "Quadruple", 2, 2, 10},
{"tag_cry_quintuple", "Quintuple", 3, 2, 13}, {"tag_cry_quintuple", "Quintuple", 3, 2, 13},
{"tag_skip", "Speed", 4, 2, 7}, {"tag_skip", "Speed", 4, 2, 7},
{"tag_economy", "Economy", 5, 2, 10}, {"tag_economy", "Economy", 5, 2, 10},
{"tag_investment", "Investment", 0, 3, 8}, {"tag_investment", "Investment", 0, 3, 8},
{"tag_foil", "Foil", 1, 3, 3}, {"tag_foil", "Foil", 1, 3, 3},
{"tag_holo", "Holographic", 2, 3, 4}, {"tag_holo", "Holographic", 2, 3, 4},
{"tag_polychrome", "Polychrome", 3, 3, 5}, {"tag_polychrome", "Polychrome", 3, 3, 5},
{"tag_negative", "Negative", 4, 3, 10}, {"tag_negative", "Negative", 4, 3, 10},
{"tag_d_six", "Dice", 0, 4, 2}, {"tag_d_six", "Dice", 0, 4, 2},
{"tag_orbital", "Orbital", 1, 4, 6}, {"tag_orbital", "Orbital", 1, 4, 6},
{"tag_top_up", "Top-up", 2, 4, 2}, {"tag_top_up", "Top-up", 2, 4, 2},
{"tag_cry_bettertop_up", "Top-up+", 3, 4, 3}, {"tag_cry_bettertop_up", "Top-up+", 3, 4, 3},
{"tag_coupon", "Coupon", 4, 4, 10}, {"tag_coupon", "Coupon", 4, 4, 10},
{"tag_cry_memory", "Memory", 5, 4, 8}, {"tag_cry_memory", "Memory", 5, 4, 8},
{"tag_garbage", "Garbage", 0, 5, 6}, {"tag_garbage", "Garbage", 0, 5, 6},
{"tag_handy", "Handy", 1, 5, 8}, {"tag_handy", "Handy", 1, 5, 8},
{"tag_juggle", "Juggle", 2, 5, 2}, {"tag_juggle", "Juggle", 2, 5, 2},
{"tag_cry_schematic", "Schematic", 3, 5, 10}, {"tag_cry_schematic", "Schematic", 3, 5, 10},
{"tag_voucher", "Voucher", 4, 5, 5}, {"tag_voucher", "Voucher", 4, 5, 5},
{"tag_cry_better_voucher", "Voucher+", 5, 5, 7}, {"tag_cry_better_voucher", "Voucher+", 5, 5, 7},
{"tag_cry_gambler", "Gamble", 0, 6, 10}, {"tag_cry_gambler", "Gamble", 0, 6, 10},
{"tag_cry_cat", "Cat", 1, 6, 1}, {"tag_cry_cat", "Cat", 1, 6, 1},
{"tag_cry_mosaic", "Mosaic", 2, 6, 6}, {"tag_cry_mosaic", "Mosaic", 2, 6, 6},
{"tag_cry_fragile", "Fragile", 3, 6, 7}, {"tag_cry_fragile", "Fragile", 3, 6, 7},
{"tag_cry_astral", "Astral", 4, 6, 8}, {"tag_cry_astral", "Astral", 4, 6, 8},
{"tag_cry_m", "M", 5, 6, 8}, {"tag_cry_m", "M", 5, 6, 8},
{"tag_cry_blur", "Blurred", 0, 7, 11}, {"tag_cry_blur", "Blurred", 0, 7, 11},
{"tag_cry_oversat", "Oversaturated", 1, 7, 12}, {"tag_cry_oversat", "Oversaturated", 1, 7, 12},
{"tag_cry_glitched", "Glitched", 2, 7, 13}, {"tag_cry_glitched", "Glitched", 2, 7, 13},
{"tag_cry_gold", "Golden", 3, 7, 9}, {"tag_cry_gold", "Golden", 3, 7, 9},
{"tag_cry_booster", "Booster", 4, 7, 4}, {"tag_cry_booster", "Booster", 4, 7, 4},
{"tag_cry_scope", "Scope", 5, 7, 3}, {"tag_cry_scope", "Scope", 5, 7, 3},
{"tag_cry_banana", "Banana", 0, 8, 4}, {"tag_cry_banana", "Banana", 0, 8, 4},
}) do }) do
if Cryptid or v[1]:sub(1, 7) ~= "tag_cry" then if Cryptid or v[1]:sub(1, 7) ~= "tag_cry" then
@ -96,7 +96,7 @@ for _, v in pairs({
can_stack = true, can_stack = true,
can_divide = true, can_divide = true,
can_use = Jane.can_use, can_use = Jane.can_use,
in_pool = function (_, _) in_pool = function(_, _)
return G.GAME.used_vouchers.v_jane_token_voucher return G.GAME.used_vouchers.v_jane_token_voucher
end, end,
use = function(_, _, _, _) use = function(_, _, _, _)
@ -109,7 +109,7 @@ for _, v in pairs({
for _ = 1, number do for _ = 1, number do
add_tag(Tag(v[1])) add_tag(Tag(v[1]))
end end
end end,
} }
end end
end end

View file

@ -2,7 +2,7 @@ SMODS.Atlas {
key = "janetokenvoucher", key = "janetokenvoucher",
px = 71, px = 71,
py = 95, py = 95,
path = Jane.config.texture_pack .. "/v_jane_token_voucher.png" path = Jane.config.texture_pack .. "/v_jane_token_voucher.png",
} }
SMODS.Voucher { SMODS.Voucher {
@ -13,11 +13,11 @@ SMODS.Voucher {
text = { text = {
"{C:attention}Tokens {}can appear", "{C:attention}Tokens {}can appear",
"in the shop", "in the shop",
} },
}, },
pos = {x = 0, y = 0}, pos = {x = 0, y = 0},
cost = 15, cost = 15,
redeem = function (_, _) redeem = function(_, _)
G.GAME['jane_tokens_rate'] = 1.5 G.GAME["jane_tokens_rate"] = 1.5
end end,
} }