Compare commits

..

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

16 changed files with 167 additions and 295 deletions

View file

@ -20,11 +20,11 @@ continuation_indent = 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 = 120
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 = lf
end_of_line = auto
# none/ comma / semicolon / only_kv_colon
table_separator_style = none

Binary file not shown.

Before

Width:  |  Height:  |  Size: 46 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 5.2 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 50 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 7.5 KiB

View file

@ -48,7 +48,6 @@ payload = '''if Jane and (type(G.ARGS.score_intensity.required_score) == "table"
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
end'''
match_indent = true
@ -58,16 +57,11 @@ 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
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)
SMODS.calculate_main_scoring({cardarea = area, full_hand = area.cards, scoring_hand = area.cards, scoring_name = text, poker_hands = poker_hands}, nil)
end
else
SMODS.calculate_main_scoring({cardarea = G.hand, full_hand = G.hand.cards, scoring_hand = G.hand.cards, scoring_name = text, poker_hands = poker_hands}, G.hand.cards)
SMODS.calculate_main_scoring({cardarea = G.hand, full_hand = G.hand.cards, scoring_hand = G.hand.cards, scoring_name = text, poker_hands = poker_hands}, nil)
end
else'''
match_indent = true
@ -129,26 +123,10 @@ position = "at"
payload = "Jane.get_chipmult_sum(hand_chips, mult))"
match_indent = true
[[patches]]
[patches.pattern]
target = '=[SMODS Cryptid "items/spectral.lua"]'
pattern = "local _first_dissolve = nil"
position = "after"
payload = 'deletable_jokers = next(SMODS.find_card("j_jane_saint")) and {} or deletable_jokers'
match_indent = true
[[patches]]
[patches.pattern]
target = '=[SMODS Cryptid "items/exotic.lua"]'
pattern = "local _first_dissolve = nil"
pattern = 'local _first_dissolve = nil'
position = "after"
payload = 'deletable_jokers = next(SMODS.find_card("j_jane_saint")) and {} or deletable_jokers'
match_indent = true
[[patches]]
[patches.pattern]
target = '=[SMODS _ "src/utils.lua"]'
pattern = "function SMODS.has_enhancement(card, key)"
position = "after"
payload = "if not card.config then return false end"
match_indent = true

View file

@ -17,5 +17,5 @@
"conflicts": [
"Jen"
],
"version": "1.5.19"
"version": "1.4.1"
}

View file

@ -1 +0,0 @@
../../CardSleeves/

View file

@ -5,13 +5,6 @@ SMODS.Atlas {
path = Jane.config.texture_pack .. "/b_jane_decks.png",
}
SMODS.Atlas {
px = 73,
py = 95,
key = "janesleeves",
path = Jane.config.texture_pack .. "/sleeve_jane_sleeves.png",
}
local function back(x)
local key = x.key
local apply = x.apply
@ -47,7 +40,7 @@ local function back(x)
CardSleeves.Sleeve {
key = key,
pos = x.pos,
atlas = "janesleeves",
atlas = "janedecks",
loc_txt = {name = name, text = text},
apply = function(self, ...)
-- Game becomes genuinely unplayable if this is allowed.
@ -95,6 +88,8 @@ local function back(x)
}
end
local eternal_text = Cryptid and "Absolute" or "Eternal"
back {
key = "nitro",
atlas = "janedecks",
@ -149,7 +144,7 @@ back {
end,
}
Jane.rain_world_jokers = {
local rain_world_jokers = {
"j_jane_monk",
"j_jane_survivor",
"j_jane_hunter",
@ -161,6 +156,12 @@ Jane.rain_world_jokers = {
"j_jane_rot",
}
local is_rain_world_joker = {}
for _, v in pairs(rain_world_jokers) do
is_rain_world_joker[v] = true
end
local function add_rain_world_joker()
if not G.jokers then
return
@ -168,14 +169,13 @@ local function add_rain_world_joker()
local unobtained = {}
for _, v in pairs(Jane.rain_world_jokers) do
for _, v in pairs(rain_world_jokers) do
if not next(SMODS.find_card(v, true)) then
unobtained[#unobtained + 1] = v
end
end
local chosen = pseudorandom_element(next(unobtained) and unobtained or Jane.rain_world_jokers,
pseudoseed("karma_deck"))
local chosen = pseudorandom_element(next(unobtained) and unobtained or rain_world_jokers, pseudoseed("karma_deck"))
local card = create_card("Joker", G.jokers, nil, nil, nil, nil, chosen, "karma_deck_next")
card:add_to_deck()
card:start_materialize()
@ -189,24 +189,65 @@ back {
loc_txt = {
name = "Karma Deck",
text = {
"Start with a",
"{C:legendary}Rain World Joker",
"Start with a {C:legendary}Rain World Joker",
"Create another when",
"{C:attention}Boss Blind {}is defeated",
},
},
alt_loc_txt = {
name = "Ascension Sleeve",
text = {
"Create a {C:legendary}Rain World Joker",
"when {C:attention}Boss Blind {}is defeated",
"Start with all {C:legendary}Rain World Jokers {}instead",
"Destroy a random {C:legendary}Rain World Joker {}when",
"{C:attention}Boss Blind {}is defeated, or {C:red}lose",
},
},
alt_apply = function(_)
Jane.q(add_rain_world_joker)
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")
card:add_to_deck()
card:start_materialize()
G.jokers:emplace(card)
play_sound("timpani")
end, 0.2)
end
end,
apply = function(_)
Jane.q(add_rain_world_joker)
end,
alt_calculate = function(_, _, context)
local function l()
if G.STAGE == G.STAGES.RUN then
G.STATE = G.STATES.GAME_OVER
G.STATE_COMPLETE = false
end
end
if not Jane.is_end_of_ante(context) then
return
end
local destructible_jokers = {}
for _, v in pairs(G.jokers.cards) do
if is_rain_world_joker[v.config.center.key] and not ((v.ability or {}).eternal or (v.ability or {}).cry_absolute) then
destructible_jokers[#destructible_jokers + 1] = v
end
end
if not next(destructible_jokers) then
return l()
end
local chosen = pseudorandom_element(destructible_jokers, pseudoseed("karma_deck"))
if chosen then
chosen.getting_sliced = true
chosen:start_dissolve()
end
end,
calculate = function(_, _, context)
if Jane.is_end_of_ante(context) then
add_rain_world_joker()
end
@ -303,7 +344,6 @@ back {
local orig_get_current_pool = get_current_pool
---@diagnostic disable-next-line: lowercase-global
function get_current_pool(_type, ...)
local pool, pool_key = orig_get_current_pool(_type, ...)
@ -478,8 +518,6 @@ back {
if new_discards ~= 0 then
ease_discard(new_discards, true)
end
rebalance_orrery()
end,
}
@ -561,23 +599,17 @@ local function two(x)
end
end
local eternal_text = Cryptid and "Absolute" or "Eternal"
back {
key = "weeck",
atlas = "janedecks",
pos = {x = 4, y = 1},
loc_txt = {
name = "Weeck",
text = Cryptid and {
text = {
"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,
"{C:attention}2's {}of {C:attention}each suit",
} or {
"Start with an {C:purple,E:1}" .. eternal_text,
"{C:attention}Wee Joker {}and a deck",
"of {C:attention}2 2's {}of {C:attention}each suit",
},
},
alt_loc_txt = {

View file

@ -1,78 +0,0 @@
local is_rain_world_joker = {}
for _, v in pairs(Jane.rain_world_jokers) do
is_rain_world_joker[v] = true
end
SMODS.Challenge {
key = "downpour",
loc_txt = {
name = "Downpour",
},
rules = {custom = {
{id = "jane_downpour1"},
{id = "jane_downpour2"},
{id = "jane_downpour3"},
{id = "jane_downpour4"},
}},
apply = function(_)
G.GAME.win_ante = 16
for _, v in ipairs(Jane.rain_world_jokers) do
Jane.q(function()
local card = create_card("Joker", G.jokers, nil, nil, nil, nil, v, "karma_deck_next")
card:add_to_deck()
card:start_materialize()
G.jokers:emplace(card)
play_sound("timpani")
end, 0.2)
end
end,
calculate = function(_, context)
local function l()
if G.STAGE == G.STAGES.RUN then
G.STATE = G.STATES.GAME_OVER
G.STATE_COMPLETE = false
end
end
if not Jane.is_end_of_ante(context) then
return
end
local destructible_jokers = {}
for _, v in pairs(G.jokers.cards) do
if is_rain_world_joker[v.config.center.key] and not ((v.ability or {}).eternal or (v.ability or {}).cry_absolute) then
destructible_jokers[#destructible_jokers + 1] = v
end
end
if not next(destructible_jokers) then
return l()
end
local chosen = pseudorandom_element(destructible_jokers, pseudoseed("karma_deck"))
if chosen then
chosen.getting_sliced = true
chosen:start_dissolve()
end
end,
}
G.localization.misc.v_text["ch_c_jane_downpour1"] = {
"Start with all {C:legendary}Rain World Jokers",
}
G.localization.misc.v_text["ch_c_jane_downpour2"] = {
"Destroy a random {C:legendary}Rain World Joker {}when",
}
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",
}

View file

@ -10,7 +10,7 @@ local function allow_moire()
end
for _, v in pairs(SMODS.find_card("j_jane_saint")) do
if v.ability.extra.is_attuned then
if v.is_attuned then
return true
end
end
@ -28,21 +28,23 @@ SMODS.Edition({
name = "Polygloss",
label = "Polygloss",
text = Cryptid 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",
"{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:money}$#7# {}when scored",
} or {
"{C:chips}+#1#{} Chips",
"{C:mult}+#2#{} & {X:mult,C:white}X#3#{} Mult",
"{C:money}$#4# {}when scored",
"{C:chips}+#1#{} & {X:chips,C:white}x#2#{}",
"{C:mult}+#3#{} & {X:mult,C:white}x#4#{}",
"{C:money}$#5# {}when scored",
},
},
config = {
mult = 2,
chips = 12,
x_mult = 1.2,
mult = 1,
chips = 1,
x_mult = 1.1,
x_chips = 1.1,
p_dollars = 1,
e_mult = Cryptid and 1.02 or nil,
e_chips = Cryptid and 1.01 or nil,
e_mult = Cryptid and 1.01 or nil,
},
sound = {sound = "jane_e_polygloss", per = 1.2, vol = 0.4},
weight = 8,
@ -51,7 +53,8 @@ SMODS.Edition({
shader = "polygloss",
apply_to_float = false,
loc_vars = function(self, _, _)
local vars = {self.config.chips}
local vars = {self.config.chips, self.config.x_chips}
vars[#vars + 1] = self.config.e_chips
vars[#vars + 1] = self.config.mult
vars[#vars + 1] = self.config.x_mult
vars[#vars + 1] = self.config.e_mult
@ -68,6 +71,8 @@ SMODS.Edition({
return {
e_mult = card.edition.e_mult,
x_mult = card.edition.x_mult,
e_chips = card.edition.e_chips,
x_chips = card.edition.x_chips,
p_dollars = card.edition.p_dollars,
}
elseif context.main_scoring and context.cardarea == G.play then
@ -76,6 +81,8 @@ SMODS.Edition({
chips = card.edition.chips,
e_mult = card.edition.e_mult,
x_mult = card.edition.x_mult,
e_chips = card.edition.e_chips,
x_chips = card.edition.x_chips,
p_dollars = card.edition.p_dollars,
}
end
@ -144,7 +151,7 @@ SMODS.Edition({
end
end,
sound = {sound = "jane_e_jumbo", per = 1, vol = 0.5},
weight = 4,
weight = 3,
extra_cost = 5,
in_shop = true,
shader = false,
@ -157,14 +164,11 @@ SMODS.Edition({
loc_txt = {
name = "Moire",
label = "Moire",
text = {
"{X:chips,C:dark_edition}^#1#{C:chips} Chips",
"{X:mult,C:dark_edition}^#2#{C:mult} Mult",
},
text = {"{X:chips,C:dark_edition}^#1#{C:chips} Chips{}, {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},
sound = {sound = "jane_e_moire", per = 1, vol = 0.7},
weight = 2,
weight = 1,
extra_cost = 6,
in_shop = true,
shader = "moire",

View file

@ -362,7 +362,7 @@ function Jane.oxy(card, removed)
end
end
local steel = 2
local steel = 1.5
SMODS.Joker {
key = "oxy",
@ -370,15 +370,15 @@ SMODS.Joker {
loc_txt = {
name = "Oxy{C:dark_edition}#1#",
text = {
"{C:attention}Scored steel {}cards",
"give {X:mult,C:white}X#2#{} {C:mult}Mult",
"{C:attention}Scored steel {}cards give",
"{X:mult,C:white}x#2#{} {C:mult}Mult {}and {X:chips,C:white}x#2#{} {C:chips}Chips",
"{C:dark_edition,E:1}#3#{}#4#{C:red}#5#{C:attention}#6#",
"{C:dark_edition,E:1}#7#{}#8#",
"#9#{C:dark_edition,E:1}#10#",
"{C:inactive,s:0.75,E:1}#11#{C:red,s:1.5,E:1}#12#",
},
},
config = {extra = {corrupted_steel = 6, 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},
sinis = {x = 2, y = 0},
soul_pos = {x = 1, y = 0},
@ -472,7 +472,7 @@ SMODS.Joker {
context.cardarea == G.play and
context.other_card.ability.name == "Steel Card" then
local amount = extra.is_corrupted and extra.corrupted_steel or steel
return {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,
}
@ -482,7 +482,6 @@ if Cryptid then
end
local operator = Cryptid and "^" or "X"
local operator_prefix = Cryptid and "{X:dark_edition,C:mult}" or "{X:mult,C:white}"
SMODS.Joker {
key = "betmma",
@ -490,12 +489,12 @@ SMODS.Joker {
loc_txt = {
name = "Betmma",
text = {
operator_prefix .. "+" .. operator .. "#1#{C:mult} Mult{} for every",
"{X:dark_edition,C:chips}+" .. operator .. "#1#{C:chips} Chips{} for every",
"{C:attention}unique Voucher redeemed",
"{C:inactive}(Currently " .. operator_prefix .. operator .. "#2#{C:inactive})",
"{C:inactive}(Currently {X:dark_edition,C:chips}" .. operator .. "#2#{C:inactive})",
},
},
config = {extra = {tet = Cryptid and 0.25 or 0.5}},
config = {extra = {tet = Cryptid and 0.1 or 0.25}},
pos = {x = 0, y = 0},
soul_pos = {x = 1, y = 0},
blueprint_compat = true,
@ -518,7 +517,7 @@ SMODS.Joker {
card = card,
colour = G.C.jane_RGB,
message = operator .. number_format(num),
[Cryptid and "e_mult" or "x_mult"] = num,
[Cryptid and "e_chips" or "x_chips"] = num,
}, true
end
end,
@ -558,7 +557,7 @@ 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, Cryptid and 7 or 5)
if rnd == 1 then
return {
@ -583,11 +582,25 @@ SMODS.Joker {
}, true
elseif rnd == 4 then
return {
message = Cryptid and "X7 Mult" or "X1.77 Mult",
message = Cryptid and "x7" or "x1.77",
x_chips = Cryptid and 7 or 1.77,
colour = palette,
card = card,
}, true
elseif rnd == 5 then
return {
message = Cryptid and "x7 Mult" or "x1.77 Mult",
x_mult = Cryptid and 7 or 1.77,
colour = palette,
card = card,
}, true
elseif rnd == 6 then
return {
message = "^1.77",
e_chips = 1.77,
colour = palette,
card = card,
}, true
else
return {
message = "^1.77 Mult",
@ -607,10 +620,10 @@ SMODS.Joker {
loc_txt = {
name = "Peppino Spaghetti",
text = {
operator_prefix .. operator .. "2^x{C:red} Mult{} for every",
"{X:dark_edition,C:red}" .. operator .. "2^x{C:red} Mult{} for every",
"{C:attention}food or Peppino Joker",
"in your possession",
"{C:inactive}(Currently " .. operator_prefix .. 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},

View file

@ -313,7 +313,6 @@ for _, v in ipairs({
"back",
"blind",
"booster",
"challenge",
"edition",
"joker",
"slugcat",

View file

@ -125,9 +125,9 @@ SMODS.Joker {
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,
"{C:attention}contribute to scoring {}and",
"are all considered as",
"the {C:attention}first played card",
},
},
pos = {x = 0, y = 0},
@ -156,8 +156,8 @@ SMODS.Joker {
eternal_compat = false,
perishable_compat = false,
soul_pos = {x = 1, y = 0},
cost = Cryptid and 15 or 8,
rarity = Cryptid and epic or 3,
cost = Cryptid and 20 or 8,
rarity = Cryptid and 4 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 "")
@ -469,7 +469,7 @@ function Card:set_debuff(should_debuff)
end
local function attunement()
return (G.GAME or {}).weeckweeck and 2 or (Cryptid and 1.002 or 1.2)
return (G.GAME or {}).weeckweeck and 2 or (Cryptid and 1.001 or 1.2)
end
SMODS.Joker {
@ -478,10 +478,9 @@ SMODS.Joker {
loc_txt = {
name = "The Saint{C:jane_RGB}#1#",
text = Cryptid and {
"{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#",
"{C:spectral}Ankh and Gateway {}will {C:attention}not destroy Jokers",
"{C:jane_RGB}#2#{}#3#{X:black,C:jane_RGB,s:1.5}#4#{C:spectral}#5#{C:chips}#6#{}#7#{C:mult}#8#",
"{C:inactive,s:1.25}#9#{C:attention,s:1.25}#10#{C:inactive,s:1.25}#11#{C:inactive}#12#",
} or {
"{C:spectral}Ankh {}will {C:attention}not destroy Jokers",
"{C:jane_RGB}#2#{}#3#{C:dark_edition}#4#{C:spectral}#5#",
@ -495,17 +494,8 @@ SMODS.Joker {
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] = G.P_CENTERS.c_ankh
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
local extra = card.ability.extra
local karma = extra.karma
local max_karma = extra.max_karma
@ -518,7 +508,9 @@ SMODS.Joker {
attuned and "" or "after using ",
attuned and "^^" .. attunement() or max_karma,
attuned and "" or " Gateways",
attuned and " Mult" or "",
attuned and " Chips " or "",
attuned and "& " or "",
attuned and "Mult" or "",
attuned and "" or "[",
attuned and "" or karma,
attuned and "" or " / " .. max_karma .. "]",
@ -526,7 +518,7 @@ SMODS.Joker {
} or {
attuned and " (Attuned)" or "",
attuned and "" or "Attune ",
attuned and "Boosts cards with " or "after using ",
attuned and "Fires on cards with " or "after using ",
attuned and "editions" or max_karma,
attuned and "" or " Ankh or Soul Cards",
attuned and "" or "[",
@ -537,8 +529,6 @@ SMODS.Joker {
}
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})
@ -550,7 +540,7 @@ SMODS.Joker {
extra.is_attuned = extra.is_attuned and extra.karma >= max_karma
local function ascend()
if extra.is_attuning then
if not extra.is_attuning then
return
end
@ -591,24 +581,21 @@ SMODS.Joker {
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
if ({[false] = context.repetition, [true] = not context.joker_main})[not not Cryptid] then
return
end
local attune = attunement()
local trigger = ({
e_holo = {mult = 50},
e_foil = {chips = 250},
e_polychrome = {x_mult = 2.5},
e_holo = {mult_mod = 50},
e_foil = {chip_mod = 250},
e_polychrome = {xmult_mod = 2.5},
e_jane_polygloss = {
mult = 10,
chips = 10,
x_mult = 2,
chips = 100,
x_chips = 2,
p_dollars = 10,
},
e_jane_moire = {
@ -618,7 +605,7 @@ SMODS.Joker {
[Cryptid and "EEmult_mod" or "Emult_mod"] = attune,
message = (Cryptid and "^^" or "^") .. attune .. " Chips & Mult",
},
})[Cryptid and "e_jane_moire" or ((context.other_card or context.other_joker or {}).edition or {}).key]
})[Cryptid and "e_jane_moire" or ((context.other_card or {}).edition or {}).key]
if trigger then
trigger.card = card
@ -706,10 +693,6 @@ SMODS.Joker {
end
local function spawn()
if card.cloned then
return
end
local rot = copy_card(card)
rot.cloned = true
rot:add_to_deck()
@ -720,7 +703,9 @@ SMODS.Joker {
if has_room() and not card.cloned and Jane.is_end_of_ante(context, card) then
Jane.q(spawn, 0.5)
else
Jane.q(function()
card.cloned = false
end, 5)
end
end,
}

View file

@ -1,40 +1,29 @@
local function j()
return G.GAME.used_vouchers.v_jane_jolly_voucher and "j_jolly" or "j_joker"
end
local required = 2
local function get_uses()
G.GAME.joker_in_a_tarot = G.GAME.joker_in_a_tarot or 0
return G.GAME.joker_in_a_tarot
end
local blurbs = {
"M!",
"Hey! Pick me!",
"Hee-hee, hoo-hoo!",
"Looks like the joke is on you!",
"Ouch, I think the joke is on me!",
"You wouldn't say no to a free negative me, would you?",
"Sometimes, an extra four mult goes a long way!",
"I won't take up space, I promise!",
"Don't ask how I ended up in a tarot!",
"The stakes are only gonna rise here!",
"I wonder what's the deal with pairs?",
"It's a little cramped in this tarot...!",
"Juggling is one of my favourite passtimes!",
"I'm not just a clown; I'm the whole circus!",
"Looks like the joke is on the crystal globe!",
"Hee-hee, hoo-hoo!",
"Who knew even fortunes could be a circus act?",
"Sometimes, an extra four mult goes a long way!",
"I can't give four mult if I'm still in this card!",
"You wouldn't say no to a free negative me, would you?",
"I'd give you more tickets to JimCon, but I'm fresh out.",
"Let me tell you, you'd love the show going on in this tarot!",
"Who knew I'd have access to a great show? That show being you!",
"I can't help if I'm still in this silly old card, break me out!",
"I've heard of a round buffoon that lives in a pretty funky town...",
"You don't need to understand math to enjoy watching the digits climb!",
"I'm rooting for you! Even if it means I'll never get out of this card...",
"Looks like the joke is on the crystal globe!",
"It's a little cramped in this tarot...!",
"Ouch, I think the joke is on me!",
"Looks like the joke is on you!",
"I'm not just a clown; I'm the whole circus!",
"Seems a little suspicious for a jolly old fella like me to be in this card...",
"I can't help if I'm still in this silly old card, break me out!",
"Let me tell you, you'd love the show going on in this tarot!",
"I'd give you more tickets to JimCon, but I'm fresh out.",
"I've heard of a round buffoon that lives in a pretty funky town...",
"I can't give four mult if I'm still in this card!",
"I'm rooting for you! Even if it means I'll never get out of this card...",
"Who knew I'd have access to a great show? That show being you!",
"The stakes are only gonna rise here!",
"Juggling is one of my favourite passtimes!",
"I wonder what's the deal with pairs?",
"You don't need to understand math to enjoy watching the digits climb!",
"M!",
}
SMODS.Consumable {
@ -42,41 +31,22 @@ SMODS.Consumable {
atlas = "janeacc",
set = "Tarot",
loc_txt = {
name = "#1#-in-a-Tarot",
name = "Joker-in-a-Tarot",
text = {
"Create a {C:dark_edition}Negative {C:attention}#2#",
"after {C:attention}#3# {}uses {C:inactive}(#4# left)",
"{C:inactive,E:1}#5#{}",
"Create a {C:dark_edition}Negative {C:attention}default Joker",
"{C:inactive,E:1}#1#{}",
},
},
loc_vars = function(_, info_queue, card)
info_queue[#info_queue + 1] = G.P_CENTERS[j()]
local is_jolly = G.GAME.used_vouchers.v_jane_jolly_voucher
card.blurb = not card.fake_card and
(card.blurb or pseudorandom_element(blurbs, pseudoseed("jokerinatarotblurbs"))) or ""
if is_jolly then
card.blurb = card.blurb:gsub("four", "eight")
end
local desc = is_jolly and "Jolly Joker" or "default Joker"
local name = is_jolly and "Jolly" or "Joker"
return {vars = {name, desc, required, required - get_uses(), card.blurb}}
info_queue[#info_queue + 1] = G.P_CENTERS.j_joker
card.blurb = card.blurb or pseudorandom_element(blurbs, pseudoseed("jokerinatarotblurbs"))
return {vars = {card.blurb}}
end,
pos = {x = 0, y = 1},
cost = 4,
can_use = Jane.can_use,
use = function(_, _, _, _)
local uses = get_uses() + 1
if uses < required then
G.GAME.joker_in_a_tarot = uses
return
end
G.GAME.joker_in_a_tarot = 0
local card = create_card("Joker", G.jokers, nil, nil, nil, nil, j(), "jokerfromatarot")
local card = create_card("Joker", G.jokers, nil, nil, nil, nil, "j_joker", "jokerfromatarot")
card:set_edition({negative = true}, true)
card.cost = 1
card.base_cost = 1
@ -92,10 +62,3 @@ SMODS.Consumable {
end
end,
}
if Cryptid 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"
Cryptid.aliases["jolly-in-a-tarot"] = "c_jane_jokerinatarot"
end

View file

@ -1,10 +1,3 @@
SMODS.Atlas {
key = "janejollyvoucher",
px = 71,
py = 95,
path = Jane.config.texture_pack .. "/v_jane_jolly_voucher.png",
}
SMODS.Atlas {
key = "janetokenvoucher",
px = 71,
@ -12,22 +5,6 @@ SMODS.Atlas {
path = Jane.config.texture_pack .. "/v_jane_token_voucher.png",
}
SMODS.Voucher {
key = "jolly_voucher",
atlas = "janejollyvoucher",
loc_txt = {
name = "Jolly Voucher",
text = {"{C:attention,T:c_jane_jokerinatarot}Joker-in-a-Tarot {}creates", "{C:attention,T:j_jolly}Jolly Joker {}instead"},
},
pos = {x = 0, y = 0},
cost = 8,
loc_vars = function(_, info_queue, _)
info_queue[#info_queue + 1] = G.P_CENTERS.c_jane_jokerinatarot
info_queue[#info_queue + 1] = G.P_CENTERS.j_jolly
return {vars = {}}
end,
}
SMODS.Voucher {
key = "token_voucher",
atlas = "janetokenvoucher",