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 cry_credits = { idea = { "Catman", "Mystic Misclick", }, art = { "Mystic Misclick", }, code = { "Math", }, }, object_type = "Voucher", dependencies = { items = { "set_cry_voucher", "set_cry_tag", }, }, 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, init = function(self) --Copies and upgrades 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 end, } local tag_printer = { --Double tags become Quadruple Tags and are 3X as common cry_credits = { idea = { "Catman", "Mystic Misclick", }, art = { "Mystic Misclick", }, code = { "Math", }, }, object_type = "Voucher", dependencies = { items = { "set_cry_voucher", "set_cry_tag", "v_cry_copies", }, }, 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 cry_credits = { idea = { "Catman", "Mystic Misclick", }, art = { "Linus Goof Balls", }, code = { "Math", }, }, object_type = "Voucher", dependencies = { items = { "set_cry_voucher", "set_cry_tag", "set_cry_tier3", "v_cry_tag_printer", }, }, key = "clone_machine", atlas = "atlasvoucher", order = 91, pos = { x = 1, y = 3 }, pools = { ["Tier3"] = true }, 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 cry_credits = { idea = { "HexaCryonic", }, art = { "HexaCryonic", }, code = { "Mathguy", }, }, object_type = "Voucher", dependencies = { items = { "set_cry_voucher", "set_cry_code", }, }, 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 cry_credits = { idea = { "HexaCryonic", }, art = { "HexaCryonic", }, code = { "Mathguy", }, }, object_type = "Voucher", dependencies = { items = { "set_cry_voucher", "set_cry_code", "v_cry_command_prompt", }, }, 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 cry_credits = { idea = { "HexaCryonic", }, art = { "HexaCryonic", }, code = { "Mathguy", }, }, object_type = "Voucher", dependencies = { items = { "set_cry_voucher", "set_cry_tier3", "set_cry_code", "v_cry_satellite_uplink", }, }, key = "quantum_computing", order = 92, atlas = "atlasvoucher", pos = { x = 0, y = 3 }, pools = { ["Tier3"] = true }, 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", dependencies = { items = { "set_cry_voucher", "set_cry_m", }, }, key = "pairing", atlas = "atlasvoucher", order = 5, pos = { x = 4, y = 5 }, cry_credits = { art = { "lolxddj", }, code = { "Math", }, jolly = { "Jolly Open Winner", "Xaltios", }, }, in_pool = function(self) local mcheck = Cryptid.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", dependencies = { items = { "set_cry_voucher", "set_cry_m", "v_cry_pairing", }, }, key = "repair_man", atlas = "atlasvoucher", order = 6, pos = { x = 5, y = 5 }, requires = { "v_cry_pairing" }, cry_credits = { art = { "lolxddj", }, code = { "Math", }, jolly = { "Jolly Open Winner", "Xaltios", }, }, in_pool = function(self) local mcheck = Cryptid.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", dependencies = { items = { "set_cry_voucher", "set_cry_m", "set_cry_tier3", "v_cry_repair_man", }, }, key = "pairamount_plus", atlas = "atlasvoucher", order = 93, pos = { x = 6, y = 5 }, requires = { "v_cry_repair_man" }, pools = { ["Tier3"] = true }, cry_credits = { art = { "lolxddj", }, code = { "Math", }, jolly = { "Jolly Open Winner", "Xaltios", }, }, in_pool = function(self) local mcheck = Cryptid.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", dependencies = { items = { "set_cry_voucher", "e_cry_double_sided", }, }, 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 = { art = { "Linus Goof Balls", }, code = { "Math", }, jolly = { "Jolly Open Winner", "Axolotolus", }, }, } local double_slit = { --Meld can appear in the shop and Arcana Packs object_type = "Voucher", dependencies = { items = { "set_cry_voucher", "e_cry_double_sided", "c_cry_meld", "v_cry_double_vision", }, }, 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 = { art = { "Linus Goof Balls", }, code = { "Math", }, 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", dependencies = { items = { "set_cry_voucher", "set_cry_tier3", "e_cry_double_sided", "v_cry_double_slit", }, }, key = "double_down", atlas = "atlasvoucher", order = 94, pos = { x = 4, y = 4 }, requires = { "v_cry_double_slit" }, pools = { ["Tier3"] = true }, loc_vars = function(self, info_queue) info_queue[#info_queue + 1] = G.P_CENTERS.e_cry_double_sided end, cry_credits = { art = { "Linus Goof Balls", }, code = { "Math", }, jolly = { "Jolly Open Winner", "Axolotolus", }, }, } local overstock_multi = { --+1 card slot[s], +1 booster pack slot[s] and +1 voucher slot[s] available in the shop cry_credits = { idea = { "Frix", }, art = { "HexaCryonic", }, code = { "Jevonn", }, }, object_type = "Voucher", dependencies = { items = { "set_cry_tier3", }, }, key = "overstock_multi", config = { extra = 1 }, atlas = "atlasvoucher", order = 75, pos = { x = 4, y = 1 }, requires = { "v_overstock_plus" }, pools = { ["Tier3"] = true }, loc_vars = function(self, info_queue, card) return { vars = { (card and card.ability.extra or self.config.extra) } } end, redeem = function(self, card) local mod = math.floor(card and card.ability.extra or self.config.extra) SMODS.change_booster_limit(mod) G.E_MANAGER:add_event(Event({ func = function() --card slot -- why is this in an event? change_shop_size(mod) return true end, })) SMODS.change_voucher_limit(mod) end, unredeem = function(self, card) local mod = math.floor(card and card.ability.extra or self.config.extra) SMODS.change_booster_limit(-mod) G.E_MANAGER:add_event(Event({ func = function() --card slot -- why is this in an event? change_shop_size(-mod) return true end, })) SMODS.change_voucher_limit(-mod) end, } local massproduct = { --All cards and packs in the shop cost $1 cry_credits = { idea = { "Frix", }, art = { "Ein13", }, code = { "Jevonn", }, }, object_type = "Voucher", dependencies = { items = { "set_cry_tier3", }, }, key = "massproduct", atlas = "atlasvoucher", order = 76, pos = { x = 6, y = 4 }, requires = { "v_liquidation" }, pools = { ["Tier3"] = true }, 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 cry_credits = { idea = { "Frix", }, art = { "Linus Goof Balls", }, code = { "Math", }, }, object_type = "Voucher", dependencies = { items = { "set_cry_tier3", }, }, key = "curate", atlas = "atlasvoucher", order = 77, pos = { x = 6, y = 1 }, requires = { "v_glow_up" }, pools = { ["Tier3"] = true }, init = function(self) 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 end, } local rerollexchange = { --All rerolls cost $2 cry_credits = { idea = { "Project666", }, art = { "Linus Goof Balls", }, code = { "Jevonn", }, }, object_type = "Voucher", dependencies = { items = { "set_cry_tier3", }, }, key = "rerollexchange", atlas = "atlasvoucher", order = 78, pos = { x = 6, y = 2 }, requires = { "v_reroll_glut" }, pools = { ["Tier3"] = true }, 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", dependencies = { items = { "set_cry_tier3", }, }, key = "scope", atlas = "atlasvoucher", order = 80, pos = { x = 2, y = 0 }, requires = { "v_observatory" }, pools = { ["Tier3"] = true }, } local dexterity = { --Permanently gain +2 hand[s] each round cry_credits = { idea = { "Frix", }, art = { "Linus Goof Balls", }, code = { "Jevonn", }, }, object_type = "Voucher", dependencies = { items = { "set_cry_tier3", }, }, key = "dexterity", config = { extra = 2 }, atlas = "atlasvoucher", order = 81, pos = { x = 6, y = 3 }, requires = { "v_nacho_tong" }, pools = { ["Tier3"] = true }, loc_vars = function(self, info_queue, card) return { vars = { math.max(1, math.floor(card and card.ability.extra or self.config.extra)) } } end, redeem = function(self, card) G.GAME.round_resets.hands = G.GAME.round_resets.hands + (card and card.ability.extra or self.config.extra) ease_hands_played((card and card.ability.extra or self.config.extra)) end, unredeem = function(self, card) G.GAME.round_resets.hands = G.GAME.round_resets.hands - (card and card.ability.extra or self.config.extra) ease_hands_played(-1 * (card and card.ability.extra or self.config.extra)) end, } local threers = { --Permanently gain +2 discard[s] each round cry_credits = { idea = { "Frix", }, art = { "jenwalter666", }, code = { "Jevonn", }, }, object_type = "Voucher", dependencies = { items = { "set_cry_tier3", }, }, key = "threers", config = { extra = 2 }, atlas = "atlasvoucher", order = 82, pos = { x = 5, y = 0 }, requires = { "v_recyclomancy" }, pools = { ["Tier3"] = true }, loc_vars = function(self, info_queue, card) return { vars = { (card and card.ability.extra or self.config.extra) } } end, redeem = function(self, card) G.GAME.round_resets.discards = G.GAME.round_resets.discards + (card and card.ability.extra or self.config.extra) ease_discard((card and card.ability.extra or self.config.extra)) end, unredeem = function(self, card) G.GAME.round_resets.discards = G.GAME.round_resets.discards - (card and card.ability.extra or self.config.extra) ease_discard(-1 * (card and card.ability.extra or self.config.extra)) end, } local tacclimator = { --Tarot cards appear X6 more frequently in the shop All future Tarot cards are free cry_credits = { idea = { "Frix", }, art = { "jenwalter666", }, code = { "Jevonn", "Toneblock", }, }, object_type = "Voucher", dependencies = { items = { "set_cry_tier3", }, }, key = "tacclimator", config = { extra = 24 / 4, extra_disp = 6 }, atlas = "atlasvoucher", order = 83, pos = { x = 1, y = 4 }, requires = { "v_tarot_tycoon" }, pools = { ["Tier3"] = true }, loc_vars = function(self, info_queue, card) return { vars = { card and card.ability.extra_disp or self.config.extra_disp } } end, redeem = function(self, card) G.E_MANAGER:add_event(Event({ func = function() G.GAME.tarot_rate = G.GAME.tarot_rate * (card and card.ability.extra or self.config.extra) return true end, })) end, unredeem = function(self, card) G.E_MANAGER:add_event(Event({ func = function() G.GAME.tarot_rate = G.GAME.tarot_rate / (card and card.ability.extra or self.config.extra) return true end, })) end, } local pacclimator = { --Planet cards appear X6 more frequently in the shop All future Planet cards are free cry_credits = { idea = { "Frix", }, art = { "jenwalter666", }, code = { "Jevonn", "Toneblock", }, }, object_type = "Voucher", dependencies = { items = { "set_cry_tier3", }, }, key = "pacclimator", config = { extra = 24 / 4, extra_disp = 6 }, atlas = "atlasvoucher", order = 84, pos = { x = 0, y = 4 }, requires = { "v_planet_tycoon" }, pools = { ["Tier3"] = true }, loc_vars = function(self, info_queue, card) return { vars = { card and card.ability.extra or self.config.extra_disp } } end, redeem = function(self, card) G.E_MANAGER:add_event(Event({ func = function() G.GAME.planet_rate = G.GAME.planet_rate * (card and card.ability.extra or self.config.extra) return true end, })) end, unredeem = function(self, card) G.E_MANAGER:add_event(Event({ func = function() G.GAME.planet_rate = G.GAME.planet_rate / (card and card.ability.extra or self.config.extra) return true end, })) end, } local moneybean = { --Raise the cap on interest earned in each round to $2.0e299 cry_credits = { idea = { "Frix", }, art = { "Watermelon lover", }, code = { "Jevonn", }, }, object_type = "Voucher", dependencies = { items = { "set_cry_tier3", }, }, key = "moneybean", config = { extra = 1e300 }, atlas = "atlasvoucher", order = 85, pos = { x = 5, y = 1 }, requires = { "v_money_tree" }, pools = { ["Tier3"] = true }, loc_vars = function(self, info_queue, card) return { vars = { (card and card.ability.extra or self.config.extra) / 5 } } end, redeem = function(self, card) -- this doesn't really matter with the whole interest overwrite G.E_MANAGER:add_event(Event({ func = function() G.GAME.interest_cap = (card and card.ability.extra or self.config.extra) return true end, })) end, unredeem = function(self, card) 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] cry_credits = { idea = { "Frix", }, art = { "Linus Goof Balls", }, code = { "Jevonn", }, }, object_type = "Voucher", dependencies = { items = { "set_cry_tier3", }, }, key = "fabric", config = { extra = 2 }, atlas = "atlasvoucher", order = 86, pos = { x = 6, y = 0 }, requires = { "v_antimatter" }, pools = { ["Tier3"] = true }, loc_vars = function(self, info_queue, card) return { vars = { (card and card.ability.extra or self.config.extra) } } end, redeem = function(self, card) G.E_MANAGER:add_event(Event({ func = function() if G.jokers then G.jokers.config.card_limit = G.jokers.config.card_limit + (card and card.ability.extra or self.config.extra) end return true end, })) end, unredeem = function(self, card) G.E_MANAGER:add_event(Event({ func = function() if G.jokers then G.jokers.config.card_limit = G.jokers.config.card_limit - (card and card.ability.extra or self.config.extra) end return true end, })) end, unlocked = false, check_for_unlock = function(self, args) if G.PROFILES[G.SETTINGS.profile].voucher_usage["v_antimatter"] and G.PROFILES[G.SETTINGS.profile].voucher_usage["v_antimatter"].count >= 10 then unlock_card(self) end if args.type == "cry_lock_all" then lock_card(self) end if args.type == "cry_unlock_all" then unlock_card(self) end end, } --Order 87 reserved for Fake-out (unimplemented) local asteroglyph = { --Set Ante to 0 cry_credits = { idea = { "Frix", }, art = { "Hat Stack", }, code = { "jenwalter666", }, }, object_type = "Voucher", dependencies = { items = { "set_cry_tier3", }, }, key = "asteroglyph", atlas = "atlasvoucher", order = 88, pos = { x = 5, y = 2 }, requires = { "v_petroglyph" }, pools = { ["Tier3"] = true }, loc_vars = function(self, info_queue) return { vars = { Cryptid.asteroglyph_ante() } } end, redeem = function(self) local mod = -G.GAME.round_resets.ante + Cryptid.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, unlocked = false, check_for_unlock = function(self, args) if G and G.GAME and G.GAME.round_resets and G.GAME.round_resets.ante and G.GAME.round_resets.ante >= 36 then unlock_card(self) end if args.type == "cry_lock_all" then lock_card(self) end if args.type == "cry_unlock_all" then unlock_card(self) end end, init = function(self) function Cryptid.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 end, } --Order 89 reserved for Ivory Script (unimplemented) local blankcanvas = { --+2 hand size cry_credits = { idea = { "Frix", }, art = { "Watermelon lover", }, code = { "Jevonn", }, }, object_type = "Voucher", dependencies = { items = { "set_cry_tier3", }, }, key = "blankcanvas", config = { extra = 2 }, atlas = "atlasvoucher", order = 90, pos = { x = 2, y = 4 }, requires = { "v_palette" }, pools = { ["Tier3"] = true }, loc_vars = function(self, info_queue, card) return { vars = { (card and card.ability.extra or self.config.extra) } } end, redeem = function(self, card) G.hand:change_size((card and card.ability.extra or self.config.extra)) end, unredeem = function(self, card) G.hand:change_size(-1 * (card and card.ability.extra or self.config.extra)) end, unlocked = false, check_for_unlock = function(self, args) if G and G.hand and G.hand.config and G.hand.config.card_limit and G.hand.config.card_limit <= 0 then unlock_card(self) end if args.type == "cry_lock_all" then lock_card(self) end if args.type == "cry_unlock_all" then unlock_card(self) end end, } local stickyhand = { --+1 card selection limit cry_credits = { idea = { "HexaCryonic", }, art = { "HexaCryonic", }, code = { "HexaCryonic", }, }, object_type = "Voucher", dependencies = { items = { "set_cry_voucher", }, }, key = "stickyhand", config = { extra = 1 }, atlas = "atlasvoucher", order = 9, pos = { x = 0, y = 5 }, loc_vars = function(self, info_queue, card) return { vars = { (card and card.ability.extra or self.config.extra) } } end, redeem = function(self, card) G.hand.config.highlighted_limit = G.hand.config.highlighted_limit + (card and card.ability.extra or self.config.extra) end, unredeem = function(self, card) G.hand.config.highlighted_limit = G.hand.config.highlighted_limit - (card and card.ability.extra or self.config.extra) if G.hand.config.highlighted_limit < 5 then G.hand.config.highlighted_limit = 5 end if not G.GAME.before_play_buffer then G.hand:unhighlight_all() end end, } local grapplinghook = { --+1 card selection limit (replace me when "extra functionality" is added later) cry_credits = { idea = { "HexaCryonic", }, art = { "HexaCryonic", }, code = { "HexaCryonic", }, }, object_type = "Voucher", dependencies = { items = { "set_cry_voucher", "v_cry_stickyhand", }, }, key = "grapplinghook", config = { extra = 2 }, atlas = "atlasvoucher", order = 10, pos = { x = 1, y = 5 }, requires = { "v_cry_stickyhand" }, loc_vars = function(self, info_queue, card) return { vars = { (card and card.ability.extra or self.config.extra) } } end, redeem = function(self, card) G.hand.config.highlighted_limit = G.hand.config.highlighted_limit + (card and card.ability.extra or self.config.extra) end, unredeem = function(self, card) G.hand.config.highlighted_limit = G.hand.config.highlighted_limit - (card and card.ability.extra or self.config.extra) if G.hand.config.highlighted_limit < 5 then G.hand.config.highlighted_limit = 5 end if not G.GAME.before_play_buffer then G.hand:unhighlight_all() end end, } local hyperspacetether = { --+2 card selection limit + other stuff cry_credits = { idea = { "HexaCryonic", }, art = { "HexaCryonic", }, code = { "HexaCryonic", }, }, object_type = "Voucher", dependencies = { items = { "set_cry_voucher", "set_cry_tier3", "v_cry_grapplinghook", }, }, key = "hyperspacetether", config = { extra = 2 }, atlas = "atlasvoucher", pos = { x = 2, y = 5 }, order = 95, requires = { "v_cry_grapplinghook" }, pools = { ["Tier3"] = true }, loc_vars = function(self, info_queue, card) return { vars = { (card and card.ability.extra or self.config.extra) } } end, redeem = function(self, card) G.hand.config.highlighted_limit = G.hand.config.highlighted_limit + (card and card.ability.extra or self.config.extra) end, unredeem = function(self, card) G.hand.config.highlighted_limit = G.hand.config.highlighted_limit - (card and card.ability.extra or self.config.extra) if G.hand.config.highlighted_limit < 5 then G.hand.config.highlighted_limit = 5 end if not G.GAME.before_play_buffer then G.hand:unhighlight_all() end end, } local triple = { --Copies voucher triple tag cry_credits = { idea = { "Catman", "Mystic Misclick", }, art = { "5381", }, code = { "Math", }, }, object_type = "Tag", dependencies = { items = { "set_cry_tag", "v_cry_copies", }, }, 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 cry_credits = { idea = { "Catman", "Mystic Misclick", }, art = { "5381", }, code = { "Math", }, }, object_type = "Tag", dependencies = { items = { "set_cry_tag", "v_cry_tag_printer", }, }, 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 cry_credits = { idea = { "Catman", "Mystic Misclick", }, art = { "5381", }, code = { "Math", }, }, object_type = "Tag", dependencies = { items = { "set_cry_tag", "v_cry_clone_machine", }, }, 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 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, command_prompt, satellite_uplink, quantum_computing, pairing, repair_man, pairamount_plus, double_vision, double_slit, double_down, } return { name = "Vouchers", init = function() --Add T3 Voucher pool for Golden Voucher Tag (in Tags.lua) and maybe other things in the future -- Uncursed this -Math function Cryptid.next_tier3_key(_from_tag) local _pool, _pool_key = get_current_pool("Tier3") 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 end, items = voucheritems, }