1423 lines
32 KiB
Lua
1423 lines
32 KiB
Lua
local cat = {
|
|
cry_credits = {
|
|
idea = {
|
|
"Catman",
|
|
},
|
|
art = {
|
|
"5381",
|
|
},
|
|
code = {
|
|
"Math",
|
|
},
|
|
},
|
|
object_type = "Tag",
|
|
dependencies = {
|
|
items = {
|
|
"set_cry_tag",
|
|
},
|
|
},
|
|
atlas = "tag_cry",
|
|
pos = { x = 0, y = 2 },
|
|
config = { level = 1 },
|
|
key = "cat",
|
|
name = "cry-Cat Tag",
|
|
order = 12,
|
|
loc_vars = function(self, info_queue, tag)
|
|
return { vars = { tag.ability.level or 1 } }
|
|
end,
|
|
}
|
|
local epic_tag = {
|
|
cry_credits = {
|
|
idea = {
|
|
"Jevonn",
|
|
},
|
|
art = {
|
|
"Math",
|
|
},
|
|
code = {
|
|
"Math",
|
|
},
|
|
},
|
|
object_type = "Tag",
|
|
dependencies = {
|
|
items = {
|
|
"set_cry_tag",
|
|
"set_cry_epic",
|
|
},
|
|
},
|
|
atlas = "tag_cry",
|
|
pos = { x = 3, y = 0 },
|
|
name = "cry-Epic Tag",
|
|
order = 1,
|
|
min_ante = 2,
|
|
requires = "j_cry_googol_play",
|
|
config = { type = "store_joker_create" },
|
|
key = "epic",
|
|
apply = function(self, tag, context)
|
|
if context.type == "store_joker_create" then
|
|
local rares_in_posession = { 0 }
|
|
for k, v in ipairs(G.jokers.cards) do
|
|
if v.config.center.rarity == "cry_epic" and not rares_in_posession[v.config.center.key] then
|
|
rares_in_posession[1] = rares_in_posession[1] + 1
|
|
rares_in_posession[v.config.center.key] = true
|
|
end
|
|
end
|
|
local card
|
|
if #G.P_JOKER_RARITY_POOLS.cry_epic > rares_in_posession[1] then
|
|
card = create_card("Joker", context.area, nil, "cry_epic", nil, nil, nil, "cry_eta")
|
|
create_shop_card_ui(card, "Joker", context.area)
|
|
card.states.visible = false
|
|
tag:yep("+", G.C.RARITY.cry_epic, function()
|
|
card:start_materialize()
|
|
card.misprint_cost_fac = 0.5
|
|
card:set_cost()
|
|
return true
|
|
end)
|
|
else
|
|
tag:nope()
|
|
end
|
|
tag.triggered = true
|
|
return card
|
|
end
|
|
end,
|
|
}
|
|
local schematic = {
|
|
cry_credits = {
|
|
idea = {
|
|
"Jevonn",
|
|
},
|
|
art = {
|
|
"Jevonn",
|
|
},
|
|
code = {
|
|
"Jevonn",
|
|
},
|
|
},
|
|
object_type = "Tag",
|
|
dependencies = {
|
|
items = {
|
|
"set_cry_tag",
|
|
},
|
|
},
|
|
atlas = "tag_cry",
|
|
pos = { x = 1, y = 2 },
|
|
name = "cry-Schematic Tag",
|
|
order = 24,
|
|
requires = "j_brainstorm",
|
|
config = { type = "store_joker_create" },
|
|
key = "schematic",
|
|
loc_vars = function(self, info_queue)
|
|
info_queue[#info_queue + 1] = { set = "Joker", key = "j_brainstorm" }
|
|
return { vars = {} }
|
|
end,
|
|
apply = function(self, tag, context)
|
|
if context.type == "store_joker_create" then
|
|
local card
|
|
if not G.GAME.banned_keys["j_brainstorm"] then
|
|
card = create_card("Joker", context.area, nil, nil, nil, nil, "j_brainstorm")
|
|
create_shop_card_ui(card, "Joker", context.area)
|
|
card.states.visible = false
|
|
tag:yep("+", G.C.RED, function()
|
|
card:start_materialize()
|
|
card:set_cost()
|
|
return true
|
|
end)
|
|
else
|
|
tag:nope()
|
|
end
|
|
tag.triggered = true
|
|
return card
|
|
end
|
|
end,
|
|
in_pool = function()
|
|
if G.GAME.used_jokers["j_brainstorm"] and not next(find_joker("Showman")) then
|
|
return false
|
|
end
|
|
if G.GAME.banned_keys["j_brainstorm"] then
|
|
return false
|
|
end
|
|
return true
|
|
end,
|
|
}
|
|
local empoweredPack = {
|
|
cry_credits = {
|
|
idea = {
|
|
"Mystic Misclick",
|
|
"Mjiojio",
|
|
},
|
|
art = {
|
|
"Jevonn",
|
|
},
|
|
code = {
|
|
"Math",
|
|
},
|
|
},
|
|
object_type = "Booster",
|
|
dependencies = {
|
|
items = {
|
|
"set_cry_tag",
|
|
"tag_cry_empowered",
|
|
},
|
|
},
|
|
name = "cry-Empowered Pack",
|
|
key = "empowered",
|
|
kind = "Spectral",
|
|
no_doe = true,
|
|
atlas = "pack",
|
|
pos = { x = 3, y = 1 },
|
|
config = { extra = 2, choose = 1 },
|
|
cost = 0,
|
|
weight = 0,
|
|
order = 8,
|
|
draw_hand = true,
|
|
update_pack = SMODS.Booster.update_pack,
|
|
loc_vars = SMODS.Booster.loc_vars,
|
|
ease_background_colour = function(self)
|
|
ease_background_colour_blind(G.STATES.SPECTRAL_PACK)
|
|
end,
|
|
create_UIBox = function(self)
|
|
return create_UIBox_spectral_pack()
|
|
end,
|
|
particles = function(self)
|
|
G.booster_pack_sparkles = Particles(1, 1, 0, 0, {
|
|
timer = 0.015,
|
|
scale = 0.1,
|
|
initialize = true,
|
|
lifespan = 3,
|
|
speed = 0.2,
|
|
padding = -1,
|
|
attach = G.ROOM_ATTACH,
|
|
colours = { G.C.WHITE, lighten(G.C.GOLD, 0.2) },
|
|
fill = true,
|
|
})
|
|
G.booster_pack_sparkles.fade_alpha = 1
|
|
G.booster_pack_sparkles:fade(1, 0)
|
|
end,
|
|
create_card = function(self, card, i)
|
|
if
|
|
i % 2 == 1
|
|
and Cryptid.enabled("c_cry_gateway") == true
|
|
and not G.GAME.used_jokers["c_cry_gateway"]
|
|
and not next(find_joker("Showman"))
|
|
then
|
|
return create_card("Spectral", G.pack_cards, nil, nil, true, true, "c_cry_gateway")
|
|
elseif not G.GAME.used_jokers["c_soul"] and not next(find_joker("Showman")) then
|
|
return create_card("Spectral", G.pack_cards, nil, nil, true, true, "c_soul")
|
|
else
|
|
return create_card("Spectral", G.pack_cards, nil, nil, true, true)
|
|
end
|
|
end,
|
|
group_key = "k_spectral_pack",
|
|
cry_digital_hallucinations = {
|
|
colour = G.C.SECONDARY_SET.Spectral,
|
|
loc_key = "k_plus_spectral",
|
|
create = function()
|
|
local ccard
|
|
if pseudorandom(pseudoseed("diha")) < 0.5 then
|
|
ccard = create_card("Spectral", G.consumeables, nil, nil, true, true, "c_soul")
|
|
else
|
|
ccard = create_card("Spectral", G.consumeables, nil, nil, true, true, "c_cry_gateway")
|
|
end
|
|
ccard:set_edition({ negative = true }, true)
|
|
ccard:add_to_deck()
|
|
G.consumeables:emplace(ccard)
|
|
end,
|
|
},
|
|
}
|
|
local empowered = {
|
|
cry_credits = {
|
|
idea = {
|
|
"Mystic Misclick",
|
|
"Mjiojio",
|
|
},
|
|
art = {
|
|
"5381",
|
|
},
|
|
code = {
|
|
"Math",
|
|
},
|
|
},
|
|
object_type = "Tag",
|
|
dependencies = {
|
|
items = {
|
|
"set_cry_tag",
|
|
"set_cry_exotic",
|
|
"c_cry_gateway",
|
|
},
|
|
},
|
|
name = "cry-Empowered Tag",
|
|
order = 18,
|
|
atlas = "tag_cry",
|
|
pos = { x = 1, y = 0 },
|
|
config = { type = "new_blind_choice" },
|
|
key = "empowered",
|
|
loc_vars = function(self, info_queue)
|
|
info_queue[#info_queue + 1] = G.P_CENTERS.p_spectral_normal_1
|
|
info_queue[#info_queue + 1] = { set = "Spectral", key = "c_soul" }
|
|
if Cryptid.enabled("c_cry_gateway") then
|
|
info_queue[#info_queue + 1] = { set = "Spectral", key = "c_cry_gateway" }
|
|
end
|
|
return { vars = {} }
|
|
end,
|
|
apply = function(self, tag, context)
|
|
if context.type == "new_blind_choice" then
|
|
local lock = tag.ID
|
|
G.CONTROLLER.locks[lock] = true
|
|
tag:yep("+", G.C.SECONDARY_SET.Spectral, function()
|
|
local key = "p_cry_empowered"
|
|
local card = Card(
|
|
G.play.T.x + G.play.T.w / 2 - G.CARD_W * 1.27 / 2,
|
|
G.play.T.y + G.play.T.h / 2 - G.CARD_H * 1.27 / 2,
|
|
G.CARD_W * 1.27,
|
|
G.CARD_H * 1.27,
|
|
G.P_CARDS.empty,
|
|
G.P_CENTERS[key],
|
|
{ bypass_discovery_center = true, bypass_discovery_ui = true }
|
|
)
|
|
card.cost = 0
|
|
card.from_tag = true
|
|
G.FUNCS.use_card({ config = { ref_table = card } })
|
|
if G.GAME.modifiers.cry_force_edition and not G.GAME.modifiers.cry_force_random_edition then
|
|
card:set_edition(nil, true, true)
|
|
elseif G.GAME.modifiers.cry_force_random_edition then
|
|
local edition = Cryptid.poll_random_edition()
|
|
card:set_edition(edition, true, true)
|
|
end
|
|
card:start_materialize()
|
|
G.CONTROLLER.locks[lock] = nil
|
|
return true
|
|
end)
|
|
tag.triggered = true
|
|
return true
|
|
end
|
|
end,
|
|
in_pool = function()
|
|
return false
|
|
end,
|
|
}
|
|
local gambler = {
|
|
cry_credits = {
|
|
idea = {
|
|
"Catman",
|
|
},
|
|
art = {
|
|
"SpoofyGuy",
|
|
},
|
|
code = {
|
|
"Math",
|
|
},
|
|
},
|
|
object_type = "Tag",
|
|
dependencies = {
|
|
items = {
|
|
"set_cry_tag",
|
|
"tag_cry_empowered",
|
|
},
|
|
},
|
|
name = "cry-Gamblecore",
|
|
order = 13,
|
|
atlas = "tag_cry",
|
|
pos = { x = 2, y = 0 },
|
|
config = { type = "new_blind_choice", odds = 4 },
|
|
min_ante = 2,
|
|
key = "gambler",
|
|
loc_vars = function(self, info_queue)
|
|
info_queue[#info_queue + 1] = { set = "Tag", key = "tag_cry_empowered" }
|
|
return { vars = { G.GAME.probabilities.normal or 1, self.config.odds } }
|
|
end,
|
|
apply = function(self, tag, context)
|
|
if context.type == "new_blind_choice" then
|
|
if pseudorandom("cry_gambler_tag") < G.GAME.probabilities.normal / tag.config.odds then
|
|
local lock = tag.ID
|
|
G.CONTROLLER.locks[lock] = true
|
|
tag:yep("+", G.C.SECONDARY_SET.Spectral, function()
|
|
local emp = Tag("tag_cry_empowered")
|
|
if tag.ability.shiny then -- good fucking luck
|
|
emp.ability.shiny = cry_rollshinybool()
|
|
end
|
|
add_tag(emp)
|
|
tag.triggered = true
|
|
emp:apply_to_run({ type = "new_blind_choice" })
|
|
G.CONTROLLER.locks[lock] = nil
|
|
return true
|
|
end)
|
|
else
|
|
tag:nope()
|
|
tag.triggered = true
|
|
for i = 1, #G.GAME.tags do
|
|
if G.GAME.tags[i] ~= tag then
|
|
if G.GAME.tags[i]:apply_to_run({ type = "new_blind_choice" }) then
|
|
break
|
|
end
|
|
end
|
|
end
|
|
end
|
|
tag.triggered = true
|
|
return true
|
|
end
|
|
end,
|
|
}
|
|
local bundle = {
|
|
cry_credits = {
|
|
idea = {
|
|
"Mystic Misclick",
|
|
},
|
|
art = {
|
|
"5381",
|
|
},
|
|
code = {
|
|
"Math",
|
|
},
|
|
},
|
|
object_type = "Tag",
|
|
dependencies = {
|
|
items = {
|
|
"set_cry_tag",
|
|
},
|
|
},
|
|
name = "cry-Bundle Tag",
|
|
order = 16,
|
|
atlas = "tag_cry",
|
|
pos = { x = 0, y = 0 },
|
|
config = { type = "new_blind_choice" },
|
|
key = "bundle",
|
|
min_ante = 2,
|
|
loc_vars = function(self, info_queue)
|
|
info_queue[#info_queue + 1] = { set = "Tag", key = "tag_standard" }
|
|
info_queue[#info_queue + 1] = { set = "Tag", key = "tag_charm" }
|
|
info_queue[#info_queue + 1] = { set = "Tag", key = "tag_meteor" }
|
|
info_queue[#info_queue + 1] = { set = "Tag", key = "tag_buffoon" }
|
|
return { vars = {} }
|
|
end,
|
|
apply = function(self, tag, context)
|
|
if context.type == "new_blind_choice" then
|
|
local lock = tag.ID
|
|
G.CONTROLLER.locks[lock] = true
|
|
tag:yep("+", G.C.ATTENTION, function()
|
|
local tags = { "standard", "charm", "meteor", "buffoon" }
|
|
for i, v in ipairs(tags) do
|
|
local _tag = Tag("tag_" .. v)
|
|
_tag.ability.shiny = cry_rollshinybool()
|
|
add_tag(_tag)
|
|
if i == 1 then
|
|
tag.triggered = true
|
|
_tag:apply_to_run({ type = "new_blind_choice" })
|
|
end
|
|
end
|
|
G.CONTROLLER.locks[lock] = nil
|
|
return true
|
|
end)
|
|
tag.triggered = true
|
|
return true
|
|
end
|
|
end,
|
|
}
|
|
local memory = {
|
|
cry_credits = {
|
|
idea = {
|
|
"y_not_tony",
|
|
},
|
|
art = {
|
|
"5381",
|
|
},
|
|
code = {
|
|
"Math",
|
|
},
|
|
},
|
|
object_type = "Tag",
|
|
dependencies = {
|
|
items = {
|
|
"set_cry_tag",
|
|
},
|
|
},
|
|
atlas = "tag_cry",
|
|
pos = { x = 3, y = 1 },
|
|
name = "cry-Memory Tag",
|
|
order = 15,
|
|
config = { type = "immediate", num = 2 },
|
|
key = "memory",
|
|
loc_vars = function(self, info_queue)
|
|
if G.GAME.cry_last_tag_used then
|
|
_c = G.P_TAGS[G.GAME.cry_last_tag_used]
|
|
end
|
|
local loc_tag = _c and localize({ type = "name_text", key = G.GAME.cry_last_tag_used, set = _c.set })
|
|
or localize("k_none")
|
|
return { vars = { self.config.num, loc_tag } }
|
|
end,
|
|
apply = function(self, tag, context)
|
|
if context.type == "immediate" and G.GAME.cry_last_tag_used then
|
|
local lock = tag.ID
|
|
G.CONTROLLER.locks[lock] = true
|
|
tag:yep("+", G.C.ATTENTION, function()
|
|
for i = 1, 2 do
|
|
local t = Tag(G.GAME.cry_last_tag_used)
|
|
t.ability.orbital_hand = G.GAME.cry_memory_orbital
|
|
add_tag(t)
|
|
end
|
|
G.CONTROLLER.locks[lock] = nil
|
|
return true
|
|
end)
|
|
tag.triggered = true
|
|
return true
|
|
end
|
|
end,
|
|
in_pool = function()
|
|
return G.GAME.cry_last_tag_used and true
|
|
end,
|
|
init = function(self)
|
|
--store last tag used
|
|
local tapr = Tag.apply_to_run
|
|
function Tag:apply_to_run(x)
|
|
local ret = tapr(self, x)
|
|
if
|
|
self.triggered
|
|
and self.key ~= "tag_double"
|
|
and self.key ~= "tag_cry_memory"
|
|
and self.key ~= "tag_cry_triple"
|
|
and self.key ~= "tag_cry_quadruple"
|
|
and self.key ~= "tag_cry_quintuple"
|
|
and self.key ~= "tag_ortalab_rewind"
|
|
then
|
|
G.GAME.cry_last_tag_used = self.key
|
|
G.GAME.cry_memory_orbital = self.ability.orbital_hand
|
|
end
|
|
return ret
|
|
end
|
|
end,
|
|
}
|
|
local glitched_tag = {
|
|
cry_credits = {
|
|
idea = {
|
|
"Jevonn",
|
|
},
|
|
art = {
|
|
"Jevonn",
|
|
},
|
|
code = {
|
|
"Jevonn",
|
|
},
|
|
},
|
|
object_type = "Tag",
|
|
dependencies = {
|
|
items = {
|
|
"set_cry_tag",
|
|
"e_cry_glitched",
|
|
},
|
|
},
|
|
atlas = "tag_cry",
|
|
pos = { x = 5, y = 0 },
|
|
name = "cry-Glitched Tag",
|
|
order = 2,
|
|
config = { type = "store_joker_modify", edition = "cry_glitched" },
|
|
key = "glitched",
|
|
min_ante = 1,
|
|
requires = "e_cry_glitched",
|
|
loc_vars = function(self, info_queue)
|
|
info_queue[#info_queue + 1] = G.P_CENTERS.e_cry_glitched
|
|
return { vars = {} }
|
|
end,
|
|
apply = function(self, tag, context)
|
|
if context.type == "store_joker_modify" then
|
|
local _applied = nil
|
|
if Cryptid.forced_edition() then
|
|
tag:nope()
|
|
end
|
|
if not context.card.edition and not context.card.temp_edition and context.card.ability.set == "Joker" then
|
|
local lock = tag.ID
|
|
G.CONTROLLER.locks[lock] = true
|
|
context.card.temp_edition = true
|
|
tag:yep("+", G.C.DARK_EDITION, function()
|
|
context.card:set_edition({ cry_glitched = true }, true)
|
|
context.card.ability.couponed = true
|
|
context.card:set_cost()
|
|
context.card.temp_edition = nil
|
|
G.CONTROLLER.locks[lock] = nil
|
|
return true
|
|
end)
|
|
_applied = true
|
|
tag.triggered = true
|
|
end
|
|
end
|
|
end,
|
|
}
|
|
local oversat_tag = {
|
|
cry_credits = {
|
|
idea = {
|
|
"Jevonn",
|
|
},
|
|
art = {
|
|
"Jevonn",
|
|
},
|
|
code = {
|
|
"Jevonn",
|
|
},
|
|
},
|
|
object_type = "Tag",
|
|
dependencies = {
|
|
items = {
|
|
"set_cry_tag",
|
|
"e_cry_oversat",
|
|
},
|
|
},
|
|
atlas = "tag_cry",
|
|
pos = { x = 7, y = 1 },
|
|
name = "cry-Oversaturated Tag",
|
|
order = 4,
|
|
config = { type = "store_joker_modify", edition = "cry_oversat" },
|
|
key = "oversat",
|
|
requires = "e_cry_oversat",
|
|
min_ante = 2,
|
|
loc_vars = function(self, info_queue)
|
|
info_queue[#info_queue + 1] = G.P_CENTERS.e_cry_oversat
|
|
return { vars = {} }
|
|
end,
|
|
apply = function(self, tag, context)
|
|
if context.type == "store_joker_modify" then
|
|
local _applied = nil
|
|
if Cryptid.forced_edition() then
|
|
tag:nope()
|
|
end
|
|
if not context.card.edition and not context.card.temp_edition and context.card.ability.set == "Joker" then
|
|
local lock = tag.ID
|
|
G.CONTROLLER.locks[lock] = true
|
|
context.card.temp_edition = true
|
|
tag:yep("+", G.C.DARK_EDITION, function()
|
|
context.card:set_edition({ cry_oversat = true }, true)
|
|
context.card.ability.couponed = true
|
|
context.card:set_cost()
|
|
context.card.temp_edition = nil
|
|
G.CONTROLLER.locks[lock] = nil
|
|
return true
|
|
end)
|
|
_applied = true
|
|
tag.triggered = true
|
|
end
|
|
end
|
|
end,
|
|
}
|
|
local mosaic_tag = {
|
|
cry_credits = {
|
|
idea = {
|
|
"Jevonn",
|
|
},
|
|
art = {
|
|
"Jevonn",
|
|
},
|
|
code = {
|
|
"Jevonn",
|
|
},
|
|
},
|
|
object_type = "Tag",
|
|
dependencies = {
|
|
items = {
|
|
"set_cry_tag",
|
|
"e_cry_mosaic",
|
|
},
|
|
},
|
|
atlas = "tag_cry",
|
|
pos = { x = 5, y = 1 },
|
|
name = "cry-Mosaic Tag",
|
|
order = 3,
|
|
config = { type = "store_joker_modify", edition = "cry_mosaic" },
|
|
key = "mosaic",
|
|
requires = "e_cry_mosaic",
|
|
min_ante = 2,
|
|
loc_vars = function(self, info_queue)
|
|
info_queue[#info_queue + 1] = G.P_CENTERS.e_cry_mosaic
|
|
return { vars = {} }
|
|
end,
|
|
apply = function(self, tag, context)
|
|
if context.type == "store_joker_modify" then
|
|
local _applied = nil
|
|
if Cryptid.forced_edition() then
|
|
tag:nope()
|
|
end
|
|
if not context.card.edition and not context.card.temp_edition and context.card.ability.set == "Joker" then
|
|
local lock = tag.ID
|
|
G.CONTROLLER.locks[lock] = true
|
|
context.card.temp_edition = true
|
|
tag:yep("+", G.C.DARK_EDITION, function()
|
|
context.card:set_edition({ cry_mosaic = true }, true)
|
|
context.card.ability.couponed = true
|
|
context.card:set_cost()
|
|
context.card.temp_edition = nil
|
|
G.CONTROLLER.locks[lock] = nil
|
|
return true
|
|
end)
|
|
_applied = true
|
|
tag.triggered = true
|
|
end
|
|
end
|
|
end,
|
|
}
|
|
local gold_tag = {
|
|
cry_credits = {
|
|
idea = {
|
|
"Jevonn",
|
|
},
|
|
art = {
|
|
"Jevonn",
|
|
},
|
|
code = {
|
|
"Jevonn",
|
|
},
|
|
},
|
|
object_type = "Tag",
|
|
dependencies = {
|
|
items = {
|
|
"set_cry_tag",
|
|
"e_cry_gold",
|
|
},
|
|
},
|
|
atlas = "tag_cry",
|
|
pos = { x = 6, y = 0 },
|
|
name = "cry-Golden Tag",
|
|
order = 6,
|
|
config = { type = "store_joker_modify", edition = "cry_gold" },
|
|
key = "gold",
|
|
requires = "e_cry_gold",
|
|
min_ante = 3,
|
|
loc_vars = function(self, info_queue)
|
|
info_queue[#info_queue + 1] = G.P_CENTERS.e_cry_gold
|
|
return { vars = {} }
|
|
end,
|
|
apply = function(self, tag, context)
|
|
if context.type == "store_joker_modify" then
|
|
local _applied = nil
|
|
if Cryptid.forced_edition() then
|
|
tag:nope()
|
|
end
|
|
if not context.card.edition and not context.card.temp_edition and context.card.ability.set == "Joker" then
|
|
local lock = tag.ID
|
|
G.CONTROLLER.locks[lock] = true
|
|
context.card.temp_edition = true
|
|
tag:yep("+", G.C.DARK_EDITION, function()
|
|
context.card:set_edition({ cry_gold = true }, true)
|
|
context.card.ability.couponed = true
|
|
context.card:set_cost()
|
|
context.card.temp_edition = nil
|
|
G.CONTROLLER.locks[lock] = nil
|
|
return true
|
|
end)
|
|
_applied = true
|
|
tag.triggered = true
|
|
end
|
|
end
|
|
end,
|
|
}
|
|
local glass_tag = {
|
|
cry_credits = {
|
|
idea = {
|
|
"Jevonn",
|
|
},
|
|
art = {
|
|
"Jevonn",
|
|
},
|
|
code = {
|
|
"Jevonn",
|
|
},
|
|
},
|
|
object_type = "Tag",
|
|
dependencies = {
|
|
items = {
|
|
"set_cry_tag",
|
|
"e_cry_glass",
|
|
},
|
|
},
|
|
atlas = "tag_cry",
|
|
pos = { x = 4, y = 0 },
|
|
name = "cry-Glass Tag",
|
|
order = 5,
|
|
config = { type = "store_joker_modify", edition = "cry_glass" },
|
|
key = "glass",
|
|
requires = "e_cry_glass",
|
|
min_ante = 3,
|
|
loc_vars = function(self, info_queue)
|
|
info_queue[#info_queue + 1] = G.P_CENTERS.e_cry_glass
|
|
return { vars = {} }
|
|
end,
|
|
apply = function(self, tag, context)
|
|
if context.type == "store_joker_modify" then
|
|
local _applied = nil
|
|
if Cryptid.forced_edition() then
|
|
tag:nope()
|
|
end
|
|
if not context.card.edition and not context.card.temp_edition and context.card.ability.set == "Joker" then
|
|
local lock = tag.ID
|
|
G.CONTROLLER.locks[lock] = true
|
|
context.card.temp_edition = true
|
|
tag:yep("+", G.C.DARK_EDITION, function()
|
|
context.card:set_edition({ cry_glass = true }, true)
|
|
context.card.ability.couponed = true
|
|
context.card:set_cost()
|
|
context.card.temp_edition = nil
|
|
G.CONTROLLER.locks[lock] = nil
|
|
return true
|
|
end)
|
|
_applied = true
|
|
tag.triggered = true
|
|
end
|
|
end
|
|
end,
|
|
}
|
|
local blur_tag = {
|
|
cry_credits = {
|
|
idea = {
|
|
"Jevonn",
|
|
},
|
|
art = {
|
|
"Jevonn",
|
|
},
|
|
code = {
|
|
"Jevonn",
|
|
},
|
|
},
|
|
object_type = "Tag",
|
|
dependencies = {
|
|
items = {
|
|
"set_cry_tag",
|
|
"e_cry_blur",
|
|
},
|
|
},
|
|
atlas = "tag_cry",
|
|
pos = { x = 7, y = 0 },
|
|
name = "cry-Blurred Tag",
|
|
order = 7,
|
|
config = { type = "store_joker_modify", edition = "cry_blur" },
|
|
key = "blur",
|
|
requires = "e_cry_blur",
|
|
min_ante = 3,
|
|
loc_vars = function(self, info_queue)
|
|
info_queue[#info_queue + 1] = G.P_CENTERS.e_cry_blur
|
|
return { vars = {} }
|
|
end,
|
|
apply = function(self, tag, context)
|
|
if context.type == "store_joker_modify" then
|
|
local _applied = nil
|
|
if Cryptid.forced_edition() then
|
|
tag:nope()
|
|
end
|
|
if not context.card.edition and not context.card.temp_edition and context.card.ability.set == "Joker" then
|
|
local lock = tag.ID
|
|
G.CONTROLLER.locks[lock] = true
|
|
context.card.temp_edition = true
|
|
tag:yep("+", G.C.DARK_EDITION, function()
|
|
context.card:set_edition({ cry_blur = true }, true)
|
|
context.card.ability.couponed = true
|
|
context.card:set_cost()
|
|
context.card.temp_edition = nil
|
|
G.CONTROLLER.locks[lock] = nil
|
|
return true
|
|
end)
|
|
_applied = true
|
|
tag.triggered = true
|
|
end
|
|
end
|
|
end,
|
|
}
|
|
--order 8 reserved for Noisy tag (if it ever has a shader / comes into existence)
|
|
local astral_tag = {
|
|
cry_credits = {
|
|
idea = {
|
|
"Jevonn",
|
|
},
|
|
art = {
|
|
"Jevonn",
|
|
},
|
|
code = {
|
|
"Jevonn",
|
|
},
|
|
},
|
|
object_type = "Tag",
|
|
dependencies = {
|
|
items = {
|
|
"set_cry_tag",
|
|
"e_cry_astral",
|
|
},
|
|
},
|
|
atlas = "tag_cry",
|
|
pos = { x = 6, y = 1 },
|
|
name = "cry-Astral Tag",
|
|
order = 9,
|
|
config = { type = "store_joker_modify", edition = "cry_astral" },
|
|
key = "astral",
|
|
requires = "e_cry_astral",
|
|
min_ante = 9,
|
|
loc_vars = function(self, info_queue)
|
|
info_queue[#info_queue + 1] = G.P_CENTERS.e_cry_astral
|
|
return { vars = {} }
|
|
end,
|
|
apply = function(self, tag, context)
|
|
if context.type == "store_joker_modify" then
|
|
local _applied = nil
|
|
if Cryptid.forced_edition() then
|
|
tag:nope()
|
|
end
|
|
if not context.card.edition and not context.card.temp_edition and context.card.ability.set == "Joker" then
|
|
local lock = tag.ID
|
|
G.CONTROLLER.locks[lock] = true
|
|
context.card.temp_edition = true
|
|
tag:yep("+", G.C.DARK_EDITION, function()
|
|
context.card:set_edition({ cry_astral = true }, true)
|
|
context.card.ability.couponed = true
|
|
context.card:set_cost()
|
|
context.card.temp_edition = nil
|
|
G.CONTROLLER.locks[lock] = nil
|
|
return true
|
|
end)
|
|
_applied = true
|
|
tag.triggered = true
|
|
end
|
|
end
|
|
end,
|
|
}
|
|
local m_tag = {
|
|
cry_credits = {
|
|
idea = {
|
|
"Jevonn",
|
|
},
|
|
art = {
|
|
"Jevonn",
|
|
},
|
|
code = {
|
|
"Jevonn",
|
|
},
|
|
},
|
|
object_type = "Tag",
|
|
dependencies = {
|
|
items = {
|
|
"set_cry_tag",
|
|
"e_cry_m",
|
|
},
|
|
},
|
|
atlas = "tag_cry",
|
|
pos = { x = 4, y = 1 },
|
|
name = "cry-Jolly Tag",
|
|
order = 10,
|
|
config = { type = "store_joker_modify", edition = "cry_m" },
|
|
key = "m",
|
|
requires = "e_cry_m",
|
|
min_ante = 1,
|
|
loc_vars = function(self, info_queue)
|
|
info_queue[#info_queue + 1] = G.P_CENTERS.e_cry_m
|
|
return { vars = {} }
|
|
end,
|
|
apply = function(self, tag, context)
|
|
if context.type == "store_joker_modify" then
|
|
local _applied = nil
|
|
if Cryptid.forced_edition() then
|
|
tag:nope()
|
|
end
|
|
if not context.card.edition and not context.card.temp_edition and context.card.ability.set == "Joker" then
|
|
local lock = tag.ID
|
|
G.CONTROLLER.locks[lock] = true
|
|
context.card.temp_edition = true
|
|
tag:yep("M", G.C.DARK_EDITION, function()
|
|
context.card:set_edition({ cry_m = true }, true)
|
|
context.card.ability.couponed = true
|
|
context.card:set_cost()
|
|
context.card.temp_edition = nil
|
|
G.CONTROLLER.locks[lock] = nil
|
|
return true
|
|
end)
|
|
_applied = true
|
|
tag.triggered = true
|
|
end
|
|
end
|
|
end,
|
|
}
|
|
local double_m_tag = {
|
|
cry_credits = {
|
|
idea = {
|
|
"Jevonn",
|
|
},
|
|
art = {
|
|
"Jevonn",
|
|
},
|
|
code = {
|
|
"Jevonn",
|
|
},
|
|
},
|
|
object_type = "Tag",
|
|
dependencies = {
|
|
items = {
|
|
"set_cry_tag",
|
|
"set_cry_m",
|
|
"e_cry_m",
|
|
},
|
|
},
|
|
atlas = "tag_cry",
|
|
pos = { x = 7, y = 2 },
|
|
name = "cry-Double M Tag",
|
|
order = 11,
|
|
config = { type = "store_joker_create", edition = "cry_m" },
|
|
key = "double_m",
|
|
requires = "j_cry_smallestm",
|
|
loc_vars = function(self, info_queue)
|
|
info_queue[#info_queue + 1] = G.P_CENTERS.e_cry_m
|
|
return { vars = {} }
|
|
end,
|
|
apply = function(self, tag, context)
|
|
if context.type == "store_joker_create" then
|
|
local card
|
|
card = create_card("M", context.area, nil, nil, nil, nil, nil, pseudoseed("M_is_love_M_is_life"))
|
|
card:set_edition({
|
|
cry_m = true,
|
|
})
|
|
create_shop_card_ui(card, "Joker", context.area)
|
|
card.states.visible = false
|
|
tag:yep("MM", G.C.CRY_JOLLY, function()
|
|
card:start_materialize()
|
|
card.ability.couponed = true
|
|
card:set_cost()
|
|
return true
|
|
end)
|
|
tag.triggered = true
|
|
return card
|
|
end
|
|
end,
|
|
in_pool = function()
|
|
return false
|
|
end,
|
|
}
|
|
local banana = {
|
|
cry_credits = {
|
|
idea = {
|
|
"Jevonn",
|
|
},
|
|
art = {
|
|
"Jevonn",
|
|
},
|
|
code = {
|
|
"Jevonn",
|
|
},
|
|
},
|
|
object_type = "Tag",
|
|
dependencies = {
|
|
items = {
|
|
"set_cry_tag",
|
|
},
|
|
},
|
|
name = "cry-Banana Tag",
|
|
order = 27,
|
|
atlas = "tag_cry",
|
|
pos = { x = 5, y = 2 },
|
|
config = { type = "immediate" },
|
|
key = "banana",
|
|
loc_vars = function(self, info_queue)
|
|
local banana
|
|
if G.GAME.pool_flags.gros_michel_extinct == true then
|
|
banana = localize({
|
|
type = "name_text",
|
|
set = "Joker",
|
|
key = G.P_CENTER_POOLS["Joker"][61].key,
|
|
})
|
|
info_queue[#info_queue + 1] = {
|
|
set = "Joker",
|
|
key = "j_cavendish",
|
|
specific_vars = { 3, G.GAME.probabilities.normal or 1, 1000 },
|
|
}
|
|
else
|
|
banana = localize({
|
|
type = "name_text",
|
|
set = "Joker",
|
|
key = G.P_CENTER_POOLS["Joker"][38].key,
|
|
})
|
|
info_queue[#info_queue + 1] = {
|
|
set = "Joker",
|
|
key = "j_gros_michel",
|
|
specific_vars = { 15, G.GAME.probabilities.normal or 1, 6 },
|
|
}
|
|
end
|
|
return { vars = { banana } }
|
|
end,
|
|
min_ante = 2,
|
|
apply = function(self, tag, context)
|
|
if context.type == "immediate" then
|
|
if G.jokers and #G.jokers.cards < G.jokers.config.card_limit then
|
|
local lock = tag.ID
|
|
G.CONTROLLER.locks[lock] = true
|
|
tag:yep("+", G.C.PURPLE, function()
|
|
if G.jokers and #G.jokers.cards < G.jokers.config.card_limit then --Needs another check here because that's how tags work :D:D:D:D:D:D:D
|
|
if G.GAME.pool_flags.gros_michel_extinct == true then
|
|
local card = create_card("Joker", G.jokers, nil, nil, nil, nil, "j_cavendish")
|
|
card:add_to_deck()
|
|
G.jokers:emplace(card)
|
|
else
|
|
local card = create_card("Joker", G.jokers, nil, nil, nil, nil, "j_gros_michel")
|
|
card:add_to_deck()
|
|
G.jokers:emplace(card)
|
|
end
|
|
end
|
|
G.CONTROLLER.locks[lock] = nil
|
|
return true
|
|
end)
|
|
else
|
|
tag:nope()
|
|
end
|
|
tag.triggered = true
|
|
return true
|
|
end
|
|
end,
|
|
}
|
|
local scope = {
|
|
cry_credits = {
|
|
idea = {
|
|
"Jevonn",
|
|
},
|
|
art = {
|
|
"Jevonn",
|
|
},
|
|
code = {
|
|
"Jevonn",
|
|
},
|
|
},
|
|
object_type = "Tag",
|
|
dependencies = {
|
|
items = {
|
|
"set_cry_tag",
|
|
},
|
|
},
|
|
atlas = "tag_cry",
|
|
pos = { x = 6, y = 2 },
|
|
name = "cry-Scope Tag",
|
|
order = 23,
|
|
config = { type = "round_start_bonus", num = 2 },
|
|
key = "scope",
|
|
min_ante = 2,
|
|
loc_vars = function(self, info_queue)
|
|
return { vars = { self.config.num } }
|
|
end,
|
|
apply = function(self, tag, context)
|
|
if context.type == "round_start_bonus" then
|
|
tag:yep("+", G.C.BLUE, function()
|
|
return true
|
|
end)
|
|
ease_hands_played(tag.config.num)
|
|
ease_discard(tag.config.num)
|
|
tag.triggered = true
|
|
return true
|
|
end
|
|
end,
|
|
}
|
|
local loss = {
|
|
cry_credits = {
|
|
idea = {
|
|
"Jevonn",
|
|
},
|
|
art = {
|
|
"Jevonn",
|
|
},
|
|
code = {
|
|
"Jevonn",
|
|
},
|
|
},
|
|
object_type = "Tag",
|
|
dependencies = {
|
|
items = {
|
|
"set_cry_tag",
|
|
"p_cry_meme_1",
|
|
},
|
|
},
|
|
atlas = "tag_cry",
|
|
pos = { x = 1, y = 3 },
|
|
name = "cry-Loss Tag",
|
|
order = 25,
|
|
config = { type = "new_blind_choice" },
|
|
key = "loss",
|
|
min_ante = 2,
|
|
loc_vars = function(self, info_queue)
|
|
info_queue[#info_queue + 1] = { set = "Other", key = "p_cry_meme_1", specific_vars = { 2, 5 } }
|
|
return { vars = {} }
|
|
end,
|
|
apply = function(self, tag, context)
|
|
if context.type == "new_blind_choice" then
|
|
local lock = tag.ID
|
|
G.CONTROLLER.locks[lock] = true
|
|
tag:yep("+", G.C.SECONDARY_SET.Spectral, function()
|
|
local key = "p_cry_meme_1"
|
|
local card = Card(
|
|
G.play.T.x + G.play.T.w / 2 - G.CARD_W * 1.27 / 2,
|
|
G.play.T.y + G.play.T.h / 2 - G.CARD_H * 1.27 / 2,
|
|
G.CARD_W * 1.27,
|
|
G.CARD_H * 1.27,
|
|
G.P_CARDS.empty,
|
|
G.P_CENTERS[key],
|
|
{ bypass_discovery_center = true, bypass_discovery_ui = true }
|
|
)
|
|
card.cost = 0
|
|
card.from_tag = true
|
|
G.FUNCS.use_card({ config = { ref_table = card } })
|
|
if G.GAME.modifiers.cry_force_edition and not G.GAME.modifiers.cry_force_random_edition then
|
|
card:set_edition(nil, true, true)
|
|
elseif G.GAME.modifiers.cry_force_random_edition then
|
|
local edition = Cryptid.poll_random_edition()
|
|
card:set_edition(edition, true, true)
|
|
end
|
|
card:start_materialize()
|
|
G.CONTROLLER.locks[lock] = nil
|
|
return true
|
|
end)
|
|
tag.triggered = true
|
|
return true
|
|
end
|
|
end,
|
|
}
|
|
local gourmand = {
|
|
cry_credits = {
|
|
idea = {
|
|
"Personthateatcheese",
|
|
},
|
|
art = {
|
|
"Personthateatcheese",
|
|
},
|
|
code = {
|
|
"Jevonn",
|
|
},
|
|
},
|
|
object_type = "Tag",
|
|
dependencies = {
|
|
items = {
|
|
"set_cry_tag",
|
|
},
|
|
},
|
|
atlas = "tag_cry",
|
|
pos = { x = 2, y = 3 },
|
|
name = "cry-Gourmand Tag",
|
|
order = 17,
|
|
config = { type = "store_joker_create" },
|
|
key = "gourmand",
|
|
loc_vars = function(self, info_queue)
|
|
info_queue[#info_queue + 1] = { set = "Other", key = "food_jokers" }
|
|
return { vars = {} }
|
|
end,
|
|
apply = function(self, tag, context)
|
|
if context.type == "store_joker_create" then
|
|
local card = create_card("Food", context.area, nil, nil, nil, nil, nil, "cry_gourmand")
|
|
create_shop_card_ui(card, "Joker", context.area)
|
|
card.states.visible = false
|
|
tag:yep("+", G.C.GREEN, function()
|
|
card:start_materialize()
|
|
card.ability.couponed = true
|
|
card:set_cost()
|
|
return true
|
|
end)
|
|
tag.triggered = true
|
|
return card
|
|
end
|
|
end,
|
|
}
|
|
local better_top_up = {
|
|
cry_credits = {
|
|
idea = {
|
|
"Mjiojio",
|
|
},
|
|
art = {
|
|
"Jevonn",
|
|
},
|
|
code = {
|
|
"Jevonn",
|
|
},
|
|
},
|
|
object_type = "Tag",
|
|
dependencies = {
|
|
items = {
|
|
"set_cry_tag",
|
|
},
|
|
},
|
|
name = "cry-Better Top-up Tag",
|
|
order = 15,
|
|
atlas = "tag_cry",
|
|
pos = { x = 4, y = 3 },
|
|
config = { type = "immediate", spawn_jokers = 2 },
|
|
key = "bettertop_up",
|
|
loc_vars = function(self, info_queue)
|
|
return { vars = { self.config.spawn_jokers } }
|
|
end,
|
|
min_ante = 5,
|
|
apply = function(self, tag, context)
|
|
if context.type == "immediate" then
|
|
if G.jokers and #G.jokers.cards < G.jokers.config.card_limit then
|
|
local lock = tag.ID
|
|
G.CONTROLLER.locks[lock] = true
|
|
tag:yep("+", G.C.GREEN, function()
|
|
for i = 1, tag.config.spawn_jokers do
|
|
if G.jokers and #G.jokers.cards < G.jokers.config.card_limit then
|
|
local card = create_card("Joker", G.jokers, nil, 0.8, nil, nil, nil, "bettertop")
|
|
card:add_to_deck()
|
|
G.jokers:emplace(card)
|
|
end
|
|
end
|
|
G.CONTROLLER.locks[lock] = nil
|
|
return true
|
|
end)
|
|
else
|
|
tag:nope()
|
|
end
|
|
tag.triggered = true
|
|
return true
|
|
end
|
|
end,
|
|
}
|
|
local better_voucher = {
|
|
cry_credits = {
|
|
idea = {
|
|
"Mystic Misclick",
|
|
},
|
|
art = {
|
|
"Mystic Misclick",
|
|
},
|
|
code = {
|
|
"Jevonn",
|
|
},
|
|
},
|
|
object_type = "Tag",
|
|
dependencies = {
|
|
items = {
|
|
"set_cry_tag",
|
|
"set_cry_tier3",
|
|
},
|
|
},
|
|
atlas = "tag_cry",
|
|
pos = { x = 3, y = 3 },
|
|
name = "cry-Golden Voucher Tag",
|
|
order = 14,
|
|
config = { type = "voucher_add" },
|
|
min_ante = 4,
|
|
key = "better_voucher",
|
|
loc_vars = function(self, info_queue)
|
|
return { vars = { (SMODS.Mods["Tier3Sub"] and 4 or 3) } }
|
|
end,
|
|
apply = function(self, tag, context)
|
|
if context.type == "voucher_add" then
|
|
tag:yep("+", G.C.SECONDARY_SET.Voucher, function()
|
|
G.ARGS.voucher_tag = G.ARGS.voucher_tag or {}
|
|
local voucher_key = Cryptid.next_tier3_key(true)
|
|
G.ARGS.voucher_tag[voucher_key] = true
|
|
G.shop_vouchers.config.card_limit = G.shop_vouchers.config.card_limit + 1
|
|
local card = Card(
|
|
G.shop_vouchers.T.x + G.shop_vouchers.T.w / 2,
|
|
G.shop_vouchers.T.y,
|
|
G.CARD_W,
|
|
G.CARD_H,
|
|
G.P_CARDS.empty,
|
|
G.P_CENTERS[voucher_key],
|
|
{ bypass_discovery_center = true, bypass_discovery_ui = true }
|
|
)
|
|
Cryptid.misprintize(card)
|
|
create_shop_card_ui(card, "Voucher", G.shop_vouchers)
|
|
card:start_materialize()
|
|
if G.GAME.modifiers.cry_force_edition and not G.GAME.modifiers.cry_force_random_edition then
|
|
card:set_edition(nil, true)
|
|
elseif G.GAME.modifiers.cry_force_random_edition then
|
|
local edition = Cryptid.poll_random_edition()
|
|
card:set_edition(edition, true)
|
|
end
|
|
|
|
if G.GAME.modifiers.cry_force_sticker == "eternal" or G.GAME.modifiers.cry_sticker_sheet_plus then
|
|
card:set_eternal(true)
|
|
card.ability.eternal = true
|
|
end
|
|
if G.GAME.modifiers.cry_force_sticker == "perishable" or G.GAME.modifiers.cry_sticker_sheet_plus then
|
|
card:set_perishable(true)
|
|
card.ability.perishable = true
|
|
end
|
|
if G.GAME.modifiers.cry_force_sticker == "rental" or G.GAME.modifiers.cry_sticker_sheet_plus then
|
|
card:set_rental(true)
|
|
card.ability.rental = true
|
|
end
|
|
if G.GAME.modifiers.cry_force_sticker == "pinned" or G.GAME.modifiers.cry_sticker_sheet_plus then
|
|
card.pinned = true
|
|
end
|
|
if G.GAME.modifiers.cry_force_sticker == "banana" or G.GAME.modifiers.cry_sticker_sheet_plus then
|
|
card.ability.banana = true
|
|
end
|
|
if G.GAME.modifiers.cry_sticker_sheet_plus then
|
|
if G.GAME.modifiers.cry_sticker_sheet then
|
|
for k, v in pairs(SMODS.Stickers) do
|
|
v:set_sticker(card, true)
|
|
end
|
|
end
|
|
end
|
|
G.shop_vouchers:emplace(card)
|
|
G.ARGS.voucher_tag = nil
|
|
return true
|
|
end)
|
|
tag.triggered = true
|
|
end
|
|
end,
|
|
}
|
|
local booster = {
|
|
cry_credits = {
|
|
idea = {
|
|
"Watermelon Lover",
|
|
},
|
|
art = {
|
|
"Maw",
|
|
},
|
|
code = {
|
|
"Jevonn",
|
|
},
|
|
},
|
|
object_type = "Tag",
|
|
dependencies = {
|
|
items = {
|
|
"set_cry_tag",
|
|
},
|
|
},
|
|
name = "cry-Booster Tag",
|
|
order = 28,
|
|
atlas = "tag_cry",
|
|
pos = { x = 5, y = 3 },
|
|
config = { type = "immediate" },
|
|
key = "booster",
|
|
loc_vars = function(self, info_queue)
|
|
return { vars = {} }
|
|
end,
|
|
min_ante = 4,
|
|
apply = function(self, tag, context)
|
|
if context.type == "immediate" then
|
|
local lock = tag.ID
|
|
G.CONTROLLER.locks[lock] = true
|
|
tag:yep("+", G.C.BLUE, function()
|
|
G.GAME.boostertag = (G.GAME.boostertag or 0) + 1
|
|
G.CONTROLLER.locks[lock] = nil
|
|
return true
|
|
end)
|
|
tag.triggered = true
|
|
return true
|
|
end
|
|
end,
|
|
}
|
|
local tagitems = {
|
|
cat,
|
|
empoweredPack,
|
|
empowered,
|
|
gambler,
|
|
bundle,
|
|
memory,
|
|
schematic,
|
|
banana,
|
|
scope,
|
|
gourmand,
|
|
better_top_up,
|
|
booster,
|
|
better_voucher,
|
|
epic_tag,
|
|
glitched_tag,
|
|
oversat_tag,
|
|
mosaic_tag,
|
|
gold_tag,
|
|
glass_tag,
|
|
blur_tag,
|
|
astral_tag,
|
|
loss,
|
|
m_tag,
|
|
double_m_tag,
|
|
}
|
|
return {
|
|
name = "Tags",
|
|
init = function() end,
|
|
items = tagitems,
|
|
}
|