972 lines
28 KiB
Lua
972 lines
28 KiB
Lua
local voucher_atlas = {
|
|
object_type = "Atlas",
|
|
key = "atlasvoucher",
|
|
path = "atlasvoucher.png",
|
|
px = 71,
|
|
py = 95,
|
|
}
|
|
local copies = { --Double tags become Triple Tags and are 2X as common
|
|
object_type = "Voucher",
|
|
key = "copies",
|
|
atlas = "atlasvoucher",
|
|
order = 1,
|
|
pos = { x = 1, y = 1 },
|
|
loc_vars = function(self, info_queue)
|
|
info_queue[#info_queue+1] = {set = "Tag", key = "tag_double"}
|
|
info_queue[#info_queue+1] = {set = "Tag", key = "tag_cry_triple", specific_vars = {2}}
|
|
return { vars = {} }
|
|
end,
|
|
}
|
|
local tag_printer = { --Double tags become Quadruple Tags and are 3X as common
|
|
object_type = "Voucher",
|
|
key = "tag_printer",
|
|
order = 2,
|
|
atlas = "atlasvoucher",
|
|
pos = { x = 1, y = 2 },
|
|
loc_vars = function(self, info_queue)
|
|
info_queue[#info_queue+1] = {set = "Tag", key = "tag_double"}
|
|
info_queue[#info_queue+1] = {set = "Tag", key = "tag_cry_quadruple", specific_vars = {3}}
|
|
return { vars = {} }
|
|
end,
|
|
requires = { "v_cry_copies" },
|
|
}
|
|
local clone_machine = { --Double tags become Quintuple Tags and are 4X as common
|
|
object_type = "Voucher",
|
|
key = "clone_machine",
|
|
atlas = "atlasvoucher",
|
|
order = 91,
|
|
pos = { x = 1, y = 3 },
|
|
loc_vars = function(self, info_queue)
|
|
info_queue[#info_queue+1] = {set = "Tag", key = "tag_double"}
|
|
info_queue[#info_queue+1] = {set = "Tag", key = "tag_cry_quintuple", specific_vars = {4}}
|
|
return { vars = {} }
|
|
end,
|
|
requires = { "v_cry_tag_printer" },
|
|
}
|
|
local command_prompt = { --Code cards can appear in the shop
|
|
object_type = "Voucher",
|
|
key = "command_prompt",
|
|
atlas = "atlasvoucher",
|
|
order = 3,
|
|
pos = { x = 0, y = 1 },
|
|
loc_vars = function(self, info_queue)
|
|
return { vars = {} }
|
|
end,
|
|
redeem = function(self)
|
|
G.E_MANAGER:add_event(Event({
|
|
func = function()
|
|
G.GAME.code_rate = (G.GAME.code_rate or 0) + 4
|
|
return true
|
|
end,
|
|
}))
|
|
end,
|
|
unredeem = function(self)
|
|
G.E_MANAGER:add_event(Event({
|
|
func = function()
|
|
G.GAME.code_rate = math.max(0, G.GAME.code_rate - 4)
|
|
return true
|
|
end,
|
|
}))
|
|
end,
|
|
}
|
|
local satellite_uplink = { --Code cards may appear in any of the Celestial Packs
|
|
object_type = "Voucher",
|
|
key = "satellite_uplink",
|
|
atlas = "atlasvoucher",
|
|
order = 4,
|
|
pos = { x = 0, y = 2 },
|
|
loc_vars = function(self, info_queue)
|
|
return { vars = {} }
|
|
end,
|
|
requires = { "v_cry_command_prompt" },
|
|
}
|
|
local quantum_computing = { --Code cards can spawn with Negative addition
|
|
object_type = "Voucher",
|
|
key = "quantum_computing",
|
|
order = 92,
|
|
atlas = "atlasvoucher",
|
|
pos = { x = 0, y = 3 },
|
|
loc_vars = function(self, info_queue)
|
|
return { vars = {} }
|
|
end,
|
|
requires = { "v_cry_satellite_uplink" },
|
|
}
|
|
local pairing = { --Retrigger all M Jokers if played hand is a Pair
|
|
object_type = "Voucher",
|
|
key = "pairing",
|
|
atlas = "atlasvoucher",
|
|
order = 5,
|
|
pos = { x = 4, y = 5 },
|
|
cry_credits = {
|
|
jolly = {
|
|
"Jolly Open Winner",
|
|
"Xaltios",
|
|
},
|
|
},
|
|
in_pool = function(self)
|
|
local mcheck = get_m_jokers()
|
|
if mcheck > 0 then
|
|
return true
|
|
end
|
|
return false
|
|
end,
|
|
}
|
|
local repair_man = { --Retrigger all M Jokers if played hand contains a pair
|
|
object_type = "Voucher",
|
|
key = "repair_man",
|
|
atlas = "atlasvoucher",
|
|
order = 6,
|
|
pos = { x = 5, y = 5 },
|
|
requires = { "v_cry_pairing" },
|
|
cry_credits = {
|
|
jolly = {
|
|
"Jolly Open Winner",
|
|
"Xaltios",
|
|
},
|
|
},
|
|
in_pool = function(self)
|
|
local mcheck = get_m_jokers()
|
|
if mcheck > 0 then
|
|
return true
|
|
end
|
|
return false
|
|
end,
|
|
}
|
|
local pairamount_plus = { --Retrigger all M Jokers once for every pair contained in played hand
|
|
object_type = "Voucher",
|
|
key = "pairamount_plus",
|
|
atlas = "atlasvoucher",
|
|
order = 93,
|
|
pos = { x = 6, y = 5 },
|
|
requires = { "v_cry_repair_man" },
|
|
cry_credits = {
|
|
jolly = {
|
|
"Jolly Open Winner",
|
|
"Xaltios",
|
|
},
|
|
},
|
|
in_pool = function(self)
|
|
local mcheck = get_m_jokers()
|
|
if mcheck > 0 then
|
|
return true
|
|
end
|
|
return false
|
|
end,
|
|
}
|
|
local double_vision = { --Double-Sided cards appear 4x more frequently
|
|
object_type = "Voucher",
|
|
key = "double_vision",
|
|
order = 7,
|
|
atlas = "atlasvoucher",
|
|
pos = { x = 4, y = 3 },
|
|
loc_vars = function(self, info_queue)
|
|
info_queue[#info_queue + 1] = G.P_CENTERS.e_cry_double_sided
|
|
end,
|
|
cry_credits = {
|
|
jolly = {
|
|
"Jolly Open Winner",
|
|
"Axolotolus",
|
|
},
|
|
},
|
|
}
|
|
local double_slit = { --Meld can appear in the shop and Arcana Packs
|
|
object_type = "Voucher",
|
|
key = "double_slit",
|
|
atlas = "atlasvoucher",
|
|
order = 8,
|
|
pos = { x = 3, y = 4 },
|
|
requires = { "v_cry_double_vision" },
|
|
loc_vars = function(self, info_queue)
|
|
info_queue[#info_queue + 1] = G.P_CENTERS.c_cry_meld
|
|
end,
|
|
cry_credits = {
|
|
jolly = {
|
|
"Jolly Open Winner",
|
|
"Axolotolus",
|
|
},
|
|
},
|
|
}
|
|
local double_down = { --After every round, X1.5 to all values on the back of Double-Sided Cards
|
|
object_type = "Voucher",
|
|
key = "double_down",
|
|
atlas = "atlasvoucher",
|
|
order = 94,
|
|
pos = { x = 4, y = 4 },
|
|
requires = { "v_cry_double_slit" },
|
|
loc_vars = function(self, info_queue)
|
|
info_queue[#info_queue + 1] = G.P_CENTERS.e_cry_double_sided
|
|
end,
|
|
cry_credits = {
|
|
jolly = {
|
|
"Jolly Open Winner",
|
|
"Axolotolus",
|
|
},
|
|
},
|
|
}
|
|
local overstock_multi = { --+1 card slot[s] and +1 booster pack slot[s] available in the shop
|
|
object_type = "Voucher",
|
|
key = "overstock_multi",
|
|
config = { extra = 1 },
|
|
atlas = "atlasvoucher",
|
|
order = 75,
|
|
pos = { x = 4, y = 1 },
|
|
requires = { "v_overstock_plus" },
|
|
loc_vars = function(self, info_queue)
|
|
return { vars = { math.max(1, math.floor(self.config.extra)) } }
|
|
end,
|
|
redeem = function(self)
|
|
if not G.GAME.modifiers.cry_booster_packs then
|
|
G.GAME.modifiers.cry_booster_packs = 2
|
|
end
|
|
G.GAME.modifiers.cry_booster_packs = G.GAME.modifiers.cry_booster_packs
|
|
+ math.max(1, math.floor(self.config.extra)) --Booster slots
|
|
G.E_MANAGER:add_event(Event({
|
|
func = function() --card slot
|
|
change_shop_size(math.max(1, math.floor(self.config.extra)))
|
|
return true
|
|
end,
|
|
}))
|
|
end,
|
|
unredeem = function(self)
|
|
if not G.GAME.modifiers.cry_booster_packs then
|
|
G.GAME.modifiers.cry_booster_packs = 2
|
|
end
|
|
G.GAME.modifiers.cry_booster_packs = G.GAME.modifiers.cry_booster_packs
|
|
- math.max(1, math.floor(self.config.extra)) --Booster slots
|
|
G.E_MANAGER:add_event(Event({
|
|
func = function() --card slot
|
|
change_shop_size(math.min(-1, -1*math.floor(self.config.extra)))
|
|
return true
|
|
end,
|
|
}))
|
|
end,
|
|
}
|
|
local massproduct = { --All cards and packs in the shop cost $1
|
|
object_type = "Voucher",
|
|
key = "massproduct",
|
|
atlas = "atlasvoucher",
|
|
order = 76,
|
|
pos = { x = 6, y = 4 },
|
|
requires = { "v_liquidation" },
|
|
redeem = function(self)
|
|
G.E_MANAGER:add_event(Event({
|
|
func = function()
|
|
G.GAME.backup_discount_percent = G.GAME.backup_discount_percent or G.GAME.discount_percent
|
|
G.GAME.discount_percent = 100
|
|
for k, v in pairs(G.I.CARD) do
|
|
if v.set_cost then
|
|
v:set_cost()
|
|
end
|
|
end
|
|
return true
|
|
end,
|
|
}))
|
|
end,
|
|
unredeem = function(self)
|
|
G.E_MANAGER:add_event(Event({
|
|
func = function()
|
|
G.GAME.discount_percent = G.GAME.backup_discount_percent or 0
|
|
for k, v in pairs(G.I.CARD) do
|
|
if v.set_cost then
|
|
v:set_cost()
|
|
end
|
|
end
|
|
return true
|
|
end,
|
|
}))
|
|
end,
|
|
}
|
|
local curate = { --All cards appear with an Edition
|
|
object_type = "Voucher",
|
|
key = "curate",
|
|
atlas = "atlasvoucher",
|
|
order = 77,
|
|
pos = { x = 6, y = 1 },
|
|
requires = { "v_glow_up" },
|
|
}
|
|
local rerollexchange = { --All rerolls cost $2
|
|
object_type = "Voucher",
|
|
key = "rerollexchange",
|
|
atlas = "atlasvoucher",
|
|
order = 78,
|
|
pos = { x = 6, y = 2 },
|
|
requires = { "v_reroll_glut" },
|
|
redeem = function(self)
|
|
--most of the code for this (one line) is in cryptid.lua, check out the reroll function there
|
|
G.E_MANAGER:add_event(Event({
|
|
func = function()
|
|
if G.GAME.current_round.reroll_cost > 2 then
|
|
G.GAME.current_round.reroll_cost = 2
|
|
end
|
|
return true
|
|
end,
|
|
}))
|
|
end,
|
|
unredeem = function(self)
|
|
G.E_MANAGER:add_event(Event({
|
|
func = function()
|
|
calculate_reroll_cost(true)
|
|
return true
|
|
end,
|
|
}))
|
|
end,
|
|
}
|
|
--Order 79 reserved for celestial storage (unimplemented)
|
|
local scope = { --Also unimplemented
|
|
object_type = "Voucher",
|
|
key = "scope",
|
|
atlas = "atlasvoucher",
|
|
order = 80,
|
|
pos = { x = 2, y = 0 },
|
|
requires = { "v_observatory" },
|
|
}
|
|
local dexterity = { --Permanently gain +2 hand[s] each round
|
|
object_type = "Voucher",
|
|
key = "dexterity",
|
|
config = { extra = 2 },
|
|
atlas = "atlasvoucher",
|
|
order = 81,
|
|
pos = { x = 6, y = 3 },
|
|
requires = { "v_nacho_tong" },
|
|
loc_vars = function(self, info_queue)
|
|
return { vars = { math.max(1, math.floor(self.config.extra)) } }
|
|
end,
|
|
redeem = function(self)
|
|
G.E_MANAGER:add_event(Event({
|
|
func = function()
|
|
G.GAME.round_resets.hands = G.GAME.round_resets.hands + math.max(1, math.floor(self.config.extra))
|
|
ease_hands_played(math.max(1, math.floor(self.config.extra)))
|
|
return true
|
|
end,
|
|
}))
|
|
end,
|
|
unredeem = function(self)
|
|
G.E_MANAGER:add_event(Event({
|
|
func = function()
|
|
G.GAME.round_resets.hands = G.GAME.round_resets.hands - math.max(1, math.floor(self.config.extra))
|
|
ease_hands_played(math.min(-1, -1*math.floor(self.config.extra)))
|
|
return true
|
|
end,
|
|
}))
|
|
end,
|
|
}
|
|
local threers = { --Permanently gain +2 discard[s] each round
|
|
object_type = "Voucher",
|
|
key = "threers",
|
|
config = { extra = 2 },
|
|
atlas = "atlasvoucher",
|
|
order = 82,
|
|
pos = { x = 5, y = 0 },
|
|
requires = { "v_recyclomancy" },
|
|
loc_vars = function(self, info_queue)
|
|
return { vars = { math.max(1, math.floor(self.config.extra)) } }
|
|
end,
|
|
redeem = function(self)
|
|
G.E_MANAGER:add_event(Event({
|
|
func = function()
|
|
G.GAME.round_resets.discards = G.GAME.round_resets.discards + math.max(1, math.floor(self.config.extra))
|
|
ease_discard(math.max(1, math.floor(self.config.extra)))
|
|
return true
|
|
end,
|
|
}))
|
|
end,
|
|
unredeem = function(self)
|
|
G.E_MANAGER:add_event(Event({
|
|
func = function()
|
|
G.GAME.round_resets.discards = G.GAME.round_resets.discards - math.max(1, math.floor(self.config.extra))
|
|
ease_discard(math.min(-1, math.floor(-1*self.config.extra)))
|
|
return true
|
|
end,
|
|
}))
|
|
end,
|
|
}
|
|
local tacclimator = { --Tarot cards appear X6 more frequently in the shop All future Tarot cards are free
|
|
object_type = "Voucher",
|
|
key = "tacclimator",
|
|
config = { extra = 56 / 4, extra_disp = 6 }, --blame thunk for this extra value
|
|
atlas = "atlasvoucher",
|
|
order = 83,
|
|
pos = { x = 1, y = 4 },
|
|
requires = { "v_tarot_tycoon" },
|
|
loc_vars = function(self, info_queue)
|
|
return { vars = { self.config.extra_disp } }
|
|
end,
|
|
redeem = function(self)
|
|
G.E_MANAGER:add_event(Event({
|
|
func = function()
|
|
G.GAME.tarot_rate = 4 * self.config.extra
|
|
return true
|
|
end,
|
|
}))
|
|
end,
|
|
unredeem = function(self)
|
|
G.E_MANAGER:add_event(Event({
|
|
func = function()
|
|
G.GAME.tarot_rate = G.GAME.tarot_rate / self.config.extra * (56/4) / 6
|
|
return true
|
|
end,
|
|
}))
|
|
end,
|
|
}
|
|
local pacclimator = { --Planet cards appear X6 more frequently in the shop All future Planet cards are free
|
|
object_type = "Voucher",
|
|
key = "pacclimator",
|
|
config = { extra = 56 / 4, extra_disp = 6 }, --blame thunk for this extra value
|
|
atlas = "atlasvoucher",
|
|
order = 84,
|
|
pos = { x = 0, y = 4 },
|
|
requires = { "v_planet_tycoon" },
|
|
loc_vars = function(self, info_queue)
|
|
return { vars = { self.config.extra_disp } }
|
|
end,
|
|
redeem = function(self)
|
|
G.E_MANAGER:add_event(Event({
|
|
func = function()
|
|
G.GAME.planet_rate = 4 * self.config.extra
|
|
return true
|
|
end,
|
|
}))
|
|
end,
|
|
unredeem = function(self)
|
|
G.E_MANAGER:add_event(Event({
|
|
func = function()
|
|
G.GAME.planet_rate = G.GAME.planet_rate / self.config.extra * (56/4) / 6
|
|
return true
|
|
end,
|
|
}))
|
|
end,
|
|
}
|
|
local moneybean = { --Raise the cap on interest earned in each round to $2.0e299
|
|
object_type = "Voucher",
|
|
key = "moneybean",
|
|
config = { extra = 1e300 },
|
|
atlas = "atlasvoucher",
|
|
order = 85,
|
|
pos = { x = 5, y = 1 },
|
|
requires = { "v_money_tree" },
|
|
loc_vars = function(self, info_queue)
|
|
return { vars = { self.config.extra / 5 } }
|
|
end,
|
|
redeem = function(self)
|
|
G.E_MANAGER:add_event(Event({
|
|
func = function()
|
|
G.GAME.interest_cap = self.config.extra
|
|
return true
|
|
end,
|
|
}))
|
|
end,
|
|
unredeem = function(self)
|
|
G.E_MANAGER:add_event(Event({
|
|
func = function()
|
|
G.GAME.interest_cap = math.max(25, (G.P_CENTERS.v_money_tree.config.extra or 0), (G.P_CENTERS.v_seed_money.config.extra or 0))
|
|
return true
|
|
end,
|
|
}))
|
|
end,
|
|
}
|
|
local fabric = { --+2 Joker slot[s]
|
|
object_type = "Voucher",
|
|
key = "fabric",
|
|
config = { extra = 2 },
|
|
atlas = "atlasvoucher",
|
|
order = 86,
|
|
pos = { x = 6, y = 0 },
|
|
requires = { "v_antimatter" },
|
|
loc_vars = function(self, info_queue)
|
|
return { vars = { math.max(1, math.floor(self.config.extra)) } }
|
|
end,
|
|
redeem = function(self)
|
|
G.E_MANAGER:add_event(Event({
|
|
func = function()
|
|
if G.jokers then
|
|
G.jokers.config.card_limit = G.jokers.config.card_limit + math.max(1, math.floor(self.config.extra))
|
|
end
|
|
return true
|
|
end,
|
|
}))
|
|
end,
|
|
unredeem = function(self)
|
|
G.E_MANAGER:add_event(Event({
|
|
func = function()
|
|
if G.jokers then
|
|
G.jokers.config.card_limit = G.jokers.config.card_limit - math.max(1, math.floor(self.config.extra))
|
|
end
|
|
return true
|
|
end,
|
|
}))
|
|
end,
|
|
}
|
|
--Order 87 reserved for Fake-out (unimplemented)
|
|
local function asteroglyph_ante()
|
|
if not (G.GAME or {}).modifiers then
|
|
return 0
|
|
end
|
|
if not G.GAME.modifiers.cry_astero_ante then
|
|
G.GAME.modifiers.cry_astero_ante = 0
|
|
end
|
|
return G.GAME.modifiers.cry_astero_ante
|
|
end
|
|
|
|
local asteroglyph = { --Set Ante to 0
|
|
object_type = "Voucher",
|
|
key = "asteroglyph",
|
|
atlas = "atlasvoucher",
|
|
order = 88,
|
|
pos = { x = 5, y = 2 },
|
|
requires = { "v_petroglyph" },
|
|
loc_vars = function(self, info_queue)
|
|
return { vars = { asteroglyph_ante() } }
|
|
end,
|
|
redeem = function(self)
|
|
local mod = -G.GAME.round_resets.ante + asteroglyph_ante()
|
|
ease_ante(mod)
|
|
G.GAME.modifiers.cry_astero_ante = (G.GAME.modifiers.cry_astero_ante or 0) > 0
|
|
and math.min(math.ceil(G.GAME.modifiers.cry_astero_ante ^ 1.13), 1e300)
|
|
or 1
|
|
G.E_MANAGER:add_event(Event({
|
|
func = function()
|
|
G.GAME.round_resets.blind_ante = mod
|
|
return true
|
|
end,
|
|
}))
|
|
end
|
|
}
|
|
--Order 89 reserved for Ivory Script (unimplemented)
|
|
local blankcanvas = { --+2 hand size
|
|
object_type = "Voucher",
|
|
key = "blankcanvas",
|
|
config = { extra = 2 },
|
|
atlas = "atlasvoucher",
|
|
order = 90,
|
|
pos = { x = 2, y = 4 },
|
|
requires = { "v_palette" },
|
|
loc_vars = function(self, info_queue)
|
|
return { vars = { math.max(1, math.floor(self.config.extra)) } }
|
|
end,
|
|
redeem = function(self)
|
|
G.hand:change_size(math.max(1, math.floor(self.config.extra)))
|
|
end,
|
|
unredeem = function(self)
|
|
G.hand:change_size(-1*math.max(1, math.floor(self.config.extra)))
|
|
end,
|
|
}
|
|
|
|
local stickyhand = { --+1 card selection limit
|
|
object_type = "Voucher",
|
|
key = "stickyhand",
|
|
config = { extra = 1 },
|
|
atlas = "atlasvoucher",
|
|
order = 9,
|
|
pos = { x = 0, y = 5 },
|
|
loc_vars = function(self, info_queue)
|
|
return { vars = { math.max(1, math.floor(self.config.extra)) } }
|
|
end,
|
|
redeem = function(self)
|
|
G.hand.config.highlighted_limit = G.hand.config.highlighted_limit
|
|
+ math.max(1, math.floor(self.config.extra))
|
|
end,
|
|
unredeem = function(self)
|
|
G.hand.config.highlighted_limit = G.hand.config.highlighted_limit
|
|
- math.max(1, math.floor(self.config.extra))
|
|
if G.hand.config.highlighted_limit < 5 then G.hand.config.highlighted_limit = 5 end
|
|
G.hand:unhighlight_all()
|
|
end,
|
|
}
|
|
|
|
local grapplinghook = { --+1 card selection limit (replace me when "extra functionality" is added later)
|
|
object_type = "Voucher",
|
|
key = "grapplinghook",
|
|
config = { extra = 2 },
|
|
atlas = "atlasvoucher",
|
|
order = 10,
|
|
pos = { x = 1, y = 5 },
|
|
requires = { "v_cry_stickyhand" },
|
|
loc_vars = function(self, info_queue)
|
|
return { vars = { math.max(1, math.floor(self.config.extra)) } }
|
|
end,
|
|
redeem = function(self)
|
|
G.hand.config.highlighted_limit = G.hand.config.highlighted_limit
|
|
+ math.max(1, math.floor(self.config.extra))
|
|
end,
|
|
unredeem = function(self)
|
|
G.hand.config.highlighted_limit = G.hand.config.highlighted_limit
|
|
- math.max(1, math.floor(self.config.extra))
|
|
if G.hand.config.highlighted_limit < 5 then G.hand.config.highlighted_limit = 5 end
|
|
G.hand:unhighlight_all()
|
|
end,
|
|
}
|
|
|
|
local hyperspacetether = { --+2 card selection limit (replace me when "extra functionality" is added later)
|
|
object_type = "Voucher",
|
|
key = "hyperspacetether",
|
|
config = { extra = 2 },
|
|
atlas = "atlasvoucher",
|
|
pos = { x = 2, y = 5 },
|
|
order = 95,
|
|
requires = { "v_cry_grapplinghook" },
|
|
loc_vars = function(self, info_queue)
|
|
return { vars = { math.max(1, math.floor(self.config.extra)) } }
|
|
end,
|
|
redeem = function(self)
|
|
G.hand.config.highlighted_limit = G.hand.config.highlighted_limit
|
|
+ math.max(1, math.floor(self.config.extra))
|
|
end,
|
|
unredeem = function(self)
|
|
G.hand.config.highlighted_limit = G.hand.config.highlighted_limit
|
|
- math.max(1, math.floor(self.config.extra))
|
|
if G.hand.config.highlighted_limit < 5 then G.hand.config.highlighted_limit = 5 end
|
|
G.hand:unhighlight_all()
|
|
end,
|
|
}
|
|
|
|
|
|
local triple = { --Copies voucher triple tag
|
|
object_type = "Tag",
|
|
atlas = "tag_cry",
|
|
name = "cry-Triple Tag",
|
|
order = 20,
|
|
pos = { x = 0, y = 1 },
|
|
config = { type = "tag_add", num = 2 },
|
|
key = "triple",
|
|
loc_vars = function(self, info_queue)
|
|
return { vars = { self.config.num } }
|
|
end,
|
|
apply = function(self, tag, context)
|
|
if
|
|
context.type == "tag_add"
|
|
and context.tag.key ~= "tag_double"
|
|
and context.tag.key ~= "tag_cry_triple"
|
|
and context.tag.key ~= "tag_cry_quadruple"
|
|
and context.tag.key ~= "tag_cry_quintuple"
|
|
and context.tag.key ~= "tag_cry_memory"
|
|
then
|
|
local lock = tag.ID
|
|
G.CONTROLLER.locks[lock] = true
|
|
tag:yep("+", G.C.RED, function()
|
|
if context.tag.ability and context.tag.ability.orbital_hand then
|
|
G.orbital_hand = context.tag.ability.orbital_hand
|
|
end
|
|
for i = 1, tag.config.num do
|
|
local tag = Tag(context.tag.key)
|
|
if context.tag.key == "tag_cry_rework" then
|
|
tag.ability.rework_edition = context.tag.ability.rework_edition
|
|
tag.ability.rework_key = context.tag.ability.rework_key
|
|
end
|
|
add_tag(tag)
|
|
end
|
|
G.orbital_hand = nil
|
|
G.CONTROLLER.locks[lock] = nil
|
|
return true
|
|
end)
|
|
tag.triggered = true
|
|
return true
|
|
end
|
|
end,
|
|
in_pool = function()
|
|
return G.GAME.used_vouchers.v_cry_copies
|
|
end,
|
|
}
|
|
local quadruple = { --Tag printer voucher quadruple tag
|
|
object_type = "Tag",
|
|
atlas = "tag_cry",
|
|
name = "cry-Quadruple Tag",
|
|
order = 21,
|
|
pos = { x = 1, y = 1 },
|
|
config = { type = "tag_add", num = 3 },
|
|
key = "quadruple",
|
|
loc_vars = function(self, info_queue)
|
|
return { vars = { self.config.num } }
|
|
end,
|
|
apply = function(self, tag, context)
|
|
if
|
|
context.type == "tag_add"
|
|
and context.tag.key ~= "tag_double"
|
|
and context.tag.key ~= "tag_cry_triple"
|
|
and context.tag.key ~= "tag_cry_quadruple"
|
|
and context.tag.key ~= "tag_cry_quintuple"
|
|
and context.tag.key ~= "tag_cry_memory"
|
|
then
|
|
local lock = tag.ID
|
|
G.CONTROLLER.locks[lock] = true
|
|
tag:yep("+", G.C.RED, function()
|
|
if context.tag.ability and context.tag.ability.orbital_hand then
|
|
G.orbital_hand = context.tag.ability.orbital_hand
|
|
end
|
|
for i = 1, tag.config.num do
|
|
local tag = Tag(context.tag.key)
|
|
if context.tag.key == "tag_cry_rework" then
|
|
tag.ability.rework_edition = context.tag.ability.rework_edition
|
|
tag.ability.rework_key = context.tag.ability.rework_key
|
|
end
|
|
add_tag(tag)
|
|
end
|
|
G.orbital_hand = nil
|
|
G.CONTROLLER.locks[lock] = nil
|
|
return true
|
|
end)
|
|
tag.triggered = true
|
|
return true
|
|
end
|
|
end,
|
|
in_pool = function()
|
|
return G.GAME.used_vouchers.v_cry_tag_printer
|
|
end,
|
|
}
|
|
local quintuple = { --Clone machine voucher quintuple tag
|
|
object_type = "Tag",
|
|
atlas = "tag_cry",
|
|
name = "cry-Quintuple Tag",
|
|
order = 22,
|
|
pos = { x = 2, y = 1 },
|
|
config = { type = "tag_add", num = 4 },
|
|
key = "quintuple",
|
|
loc_vars = function(self, info_queue)
|
|
return { vars = { self.config.num } }
|
|
end,
|
|
apply = function(self, tag, context)
|
|
if
|
|
context.type == "tag_add"
|
|
and context.tag.key ~= "tag_double"
|
|
and context.tag.key ~= "tag_cry_triple"
|
|
and context.tag.key ~= "tag_cry_quadruple"
|
|
and context.tag.key ~= "tag_cry_quintuple"
|
|
and context.tag.key ~= "tag_cry_memory"
|
|
then
|
|
local lock = tag.ID
|
|
G.CONTROLLER.locks[lock] = true
|
|
tag:yep("+", G.C.RED, function()
|
|
if context.tag.ability and context.tag.ability.orbital_hand then
|
|
G.orbital_hand = context.tag.ability.orbital_hand
|
|
end
|
|
for i = 1, tag.config.num do
|
|
local tag = Tag(context.tag.key)
|
|
if context.tag.key == "tag_cry_rework" then
|
|
tag.ability.rework_edition = context.tag.ability.rework_edition
|
|
tag.ability.rework_key = context.tag.ability.rework_key
|
|
end
|
|
add_tag(tag)
|
|
end
|
|
G.orbital_hand = nil
|
|
G.CONTROLLER.locks[lock] = nil
|
|
return true
|
|
end)
|
|
tag.triggered = true
|
|
return true
|
|
end
|
|
end,
|
|
in_pool = function()
|
|
return G.GAME.used_vouchers.v_cry_clone_machine
|
|
end,
|
|
}
|
|
-- If Tier 3 Vouchers is loaded, make Cryptid function as Tier 4 Vouchers
|
|
if SMODS.Mods["Tier3Sub"] then
|
|
overstock_multi.requires[#overstock_multi.requires + 1] = "v_overstock_three"
|
|
massproduct.requires[#massproduct.requires + 1] = "v_money_mint"
|
|
curate.requires[#curate.requires + 1] = "v_glow_in_dark"
|
|
rerollexchange.requires[#rerollexchange.requires + 1] = "v_reroll_addict"
|
|
dexterity.requires[#dexterity.requires + 1] = "v_applause"
|
|
threers.requires[#threers.requires + 1] = "v_down_to_zero"
|
|
tacclimator.requires[#tacclimator.requires + 1] = "v_tarot_factory"
|
|
pacclimator.requires[#pacclimator.requires + 1] = "v_planet_factory"
|
|
moneybean.requires[#moneybean.requires + 1] = "v_money_forest"
|
|
fabric.requires[#fabric.requires + 1] = "v_neutral_particle"
|
|
asteroglyph.requires[#asteroglyph.requires + 1] = "v_in_the_beginning"
|
|
blankcanvas.requires[#blankcanvas.requires + 1] = "v_happy_accident"
|
|
tacclimator.config.extra = tacclimator.config.extra * 8
|
|
pacclimator.config.extra = pacclimator.config.extra * 8
|
|
end
|
|
|
|
--Add T3 Voucher pool for Golden Voucher Tag (in Tags.lua) and maybe other things in the future
|
|
--I am sorry in advance (this is extremely cursed)
|
|
|
|
Cryptid.Megavouchers[#Cryptid.Megavouchers + 1] = "v_cry_overstock_multi"
|
|
Cryptid.Megavouchers[#Cryptid.Megavouchers + 1] = "v_cry_massproduct"
|
|
Cryptid.Megavouchers[#Cryptid.Megavouchers + 1] = "v_cry_curate"
|
|
Cryptid.Megavouchers[#Cryptid.Megavouchers + 1] = "v_cry_rerollexchange"
|
|
Cryptid.Megavouchers[#Cryptid.Megavouchers + 1] = "v_cry_dexterity"
|
|
Cryptid.Megavouchers[#Cryptid.Megavouchers + 1] = "v_cry_threers"
|
|
Cryptid.Megavouchers[#Cryptid.Megavouchers + 1] = "v_cry_tacclimator"
|
|
Cryptid.Megavouchers[#Cryptid.Megavouchers + 1] = "v_cry_pacclimator"
|
|
Cryptid.Megavouchers[#Cryptid.Megavouchers + 1] = "v_cry_moneybean"
|
|
Cryptid.Megavouchers[#Cryptid.Megavouchers + 1] = "v_cry_fabric"
|
|
Cryptid.Megavouchers[#Cryptid.Megavouchers + 1] = "v_cry_asteroglyph"
|
|
Cryptid.Megavouchers[#Cryptid.Megavouchers + 1] = "v_cry_blankcanvas"
|
|
Cryptid.Megavouchers[#Cryptid.Megavouchers + 1] = "v_cry_hyperspacetether"
|
|
Cryptid.Megavouchers[#Cryptid.Megavouchers + 1] = "v_cry_clone_machine"
|
|
|
|
if Cryptid.enabled["M Jokers"] then
|
|
Cryptid.Megavouchers[#Cryptid.Megavouchers + 1] = "v_cry_pairamount_plus"
|
|
end
|
|
if Cryptid.enabled["Code Cards"] then
|
|
Cryptid.Megavouchers[#Cryptid.Megavouchers + 1] = "v_cry_quantum_computing"
|
|
end
|
|
if Cryptid.enabled["Misc."] then
|
|
Cryptid.Megavouchers[#Cryptid.Megavouchers + 1] = "v_cry_double_down"
|
|
end
|
|
|
|
function megavoucherpool(_type, _rarity, legendary, key_append)
|
|
G.ARGS.TEMP_POOL = EMPTY(G.ARGS.TEMP_POOL)
|
|
local _pool, _starting_pool, _pool_key, _pool_size = G.ARGS.TEMP_POOL, {}, "megavoucher", 0
|
|
|
|
for k, v in pairs(Cryptid.Megavouchers) do
|
|
if v then
|
|
_starting_pool[#_starting_pool + 1] = G.P_CENTERS[v]
|
|
end
|
|
end
|
|
|
|
for k, v in ipairs(_starting_pool) do
|
|
local add = false
|
|
|
|
if not G.GAME.cry_owned_vouchers[v.key] then
|
|
local check = true
|
|
if G.shop_vouchers and G.shop_vouchers.cards then
|
|
for kk, vv in ipairs(G.shop_vouchers.cards) do
|
|
if vv.config.center.key == v.key then check = false end
|
|
end
|
|
end
|
|
if check then
|
|
add = true
|
|
end
|
|
end
|
|
|
|
if add and not G.GAME.banned_keys[v.key] then
|
|
_pool[#_pool + 1] = v.key
|
|
_pool_size = _pool_size + 1
|
|
end
|
|
|
|
if _pool_size == 0 then
|
|
_pool = EMPTY(G.ARGS.TEMP_POOL)
|
|
_pool[#_pool + 1] = "v_blank"
|
|
end
|
|
end
|
|
|
|
return _pool, _pool_key .. G.GAME.round_resets.ante
|
|
end
|
|
|
|
local megavouchergetcurrentpool = get_current_pool
|
|
function get_current_pool(_type, _rarity, _legendary, _append)
|
|
if _type == "megavoucher" then
|
|
return megavoucherpool(_type, _rarity, _legendary, _append)
|
|
end
|
|
return megavouchergetcurrentpool(_type, _rarity, _legendary, _append)
|
|
end
|
|
|
|
function get_next_megavoucher_key(_from_tag)
|
|
local _pool, _pool_key = get_current_pool('megavoucher')
|
|
if _from_tag then _pool_key = 'Voucher_fromtag' end
|
|
local center = pseudorandom_element(_pool, pseudoseed(_pool_key))
|
|
local it = 1
|
|
while center == 'UNAVAILABLE' do
|
|
it = it + 1
|
|
center = pseudorandom_element(_pool, pseudoseed(_pool_key..'_resample'..it))
|
|
end
|
|
|
|
return center
|
|
end
|
|
|
|
local voucheritems = {
|
|
voucher_atlas,
|
|
copies,
|
|
tag_printer,
|
|
triple,
|
|
quadruple,
|
|
quintuple,
|
|
overstock_multi,
|
|
massproduct,
|
|
curate,
|
|
rerollexchange,
|
|
dexterity,
|
|
threers,
|
|
tacclimator,
|
|
pacclimator,
|
|
moneybean,
|
|
fabric,
|
|
asteroglyph,
|
|
blankcanvas,
|
|
clone_machine,
|
|
stickyhand,
|
|
grapplinghook,
|
|
hyperspacetether
|
|
}
|
|
if Cryptid.enabled["Code Cards"] then
|
|
voucheritems[#voucheritems + 1] = command_prompt
|
|
voucheritems[#voucheritems + 1] = satellite_uplink
|
|
voucheritems[#voucheritems + 1] = quantum_computing
|
|
end
|
|
if Cryptid.enabled["M Jokers"] then
|
|
voucheritems[#voucheritems + 1] = pairing
|
|
voucheritems[#voucheritems + 1] = repair_man
|
|
voucheritems[#voucheritems + 1] = pairamount_plus
|
|
end
|
|
if Cryptid.enabled["Misc."] then
|
|
voucheritems[#voucheritems + 1] = double_vision
|
|
voucheritems[#voucheritems + 1] = double_slit
|
|
voucheritems[#voucheritems + 1] = double_down
|
|
end
|
|
return {
|
|
name = "Vouchers",
|
|
init = function()
|
|
--Curate
|
|
local pe = poll_edition
|
|
function poll_edition(_key, _mod, _no_neg, _guaranteed, _options)
|
|
local ed = pe(_key, _mod, _no_neg, _guaranteed, _options)
|
|
while not ed and G.GAME.used_vouchers.v_cry_curate do
|
|
ed = pe(_key, _mod, _no_neg, _guaranteed, _options)
|
|
end
|
|
return ed
|
|
end
|
|
--Copies and upgrades
|
|
local gcp = get_current_pool
|
|
function get_current_pool(type, rarity, legendary, append, z)
|
|
pool, pool_append = gcp(type, rarity, legendary, append, z)
|
|
if type == "Tag" then
|
|
for i = 1, #pool do
|
|
if pool[i] == "tag_double" and G.GAME.used_vouchers.v_cry_copies then
|
|
pool[i] = "tag_cry_triple"
|
|
end
|
|
if
|
|
(pool[i] == "tag_double" or pool[i] == "tag_cry_triple")
|
|
and G.GAME.used_vouchers.v_cry_tag_printer
|
|
then
|
|
pool[i] = "tag_cry_quadruple"
|
|
end
|
|
if
|
|
(pool[i] == "tag_double" or pool[i] == "tag_cry_triple" or pool[i] == "tag_cry_quadruple")
|
|
and G.GAME.used_vouchers.v_cry_clone_machine
|
|
then
|
|
pool[i] = "tag_cry_quintuple"
|
|
end
|
|
end
|
|
end
|
|
return pool, pool_append
|
|
end
|
|
local tinit = Tag.init
|
|
function Tag:init(tag, y, z)
|
|
if tag == "tag_double" and G.GAME.used_vouchers.v_cry_copies then
|
|
tag = "tag_cry_triple"
|
|
end
|
|
if (tag == "tag_double" or tag == "tag_cry_triple") and G.GAME.used_vouchers.v_cry_tag_printer then
|
|
tag = "tag_cry_quadruple"
|
|
end
|
|
if
|
|
(tag == "tag_double" or tag == "tag_cry_triple" or tag == "tag_cry_quadruple")
|
|
and G.GAME.used_vouchers.v_cry_clone_machine
|
|
then
|
|
tag = "tag_cry_quintuple"
|
|
end
|
|
return tinit(self, tag, y, z)
|
|
end
|
|
local sc = Card.set_cost
|
|
function Card:set_cost()
|
|
sc(self)
|
|
if self.ability.set == "Tarot" and G.GAME.used_vouchers.v_cry_tacclimator then --Make Tarots free when Tarot Acclimator is redeemed
|
|
self.cost = 0
|
|
end
|
|
if self.ability.set == "Planet" and G.GAME.used_vouchers.v_cry_pacclimator then --Make Planets free when Planet Acclimator is redeemed
|
|
self.cost = 0
|
|
end
|
|
end
|
|
end,
|
|
items = voucheritems,
|
|
}
|