if CardSleeves then local veryfairsleeve = CardSleeves.Sleeve({ key = "very_fair_sleeve", name = "Very Fair Sleeve", atlas = "atlasSleeves", pos = { x = 6, y = 1 }, config = { hands = -2, discards = -2 }, unlocked = true, unlock_condition = { deck = "Very Fair Deck", stake = 1 }, loc_vars = function(self) return { vars = {} } end, trigger_effect = function(self, args) end, apply = function(self) G.GAME.starting_params.hands = G.GAME.starting_params.hands + self.config.hands G.GAME.starting_params.discards = G.GAME.starting_params.discards + self.config.discards G.GAME.modifiers.cry_no_vouchers = true end, init = function(self) very_fair_quip = {} local avts = SMODS.add_voucher_to_shop function SMODS.add_voucher_to_shop(...) if G.GAME.modifiers.cry_no_vouchers then return end return avts(...) end end, }) local infinitesleeve = CardSleeves.Sleeve({ key = "infinite_sleeve", name = "Unlimited Sleeve", atlas = "atlasSleeves", pos = { x = 4, y = 0 }, config = { hand_size = 1 }, unlocked = true, unlock_condition = { deck = "Infinite Deck", stake = 1 }, loc_vars = function(self) return { vars = {} } end, trigger_effect = function(self, args) end, apply = function(self) G.GAME.infinitedeck = true G.E_MANAGER:add_event(Event({ trigger = "after", delay = 0.7, func = function() SMODS.change_play_limit(1e6) SMODS.change_discard_limit(1e6) return true end, })) end, }) local equilibriumsleeve = CardSleeves.Sleeve({ key = "equilibrium_sleeve", name = "Balanced Sleeve", atlas = "atlasSleeves", pos = { x = 2, y = 0 }, config = { vouchers = { "v_overstock_norm", "v_overstock_plus" }, cry_equilibrium = true }, unlocked = true, unlock_condition = { deck = "Deck of Equilibrium", stake = 1 }, loc_vars = function(self) return { vars = {} } end, trigger_effect = function(self, args) end, apply = function(self) change_shop_size(2) G.GAME.modifiers.cry_equilibrium = true end, }) local misprintsleeve = CardSleeves.Sleeve({ key = "misprint_sleeve", name = "Misprinted Sleeve", atlas = "atlasSleeves", pos = { x = 3, y = 0 }, config = { cry_misprint_min = 0.1, cry_misprint_max = 10 }, unlocked = true, unlock_condition = { deck = "Misprint Deck", stake = 1 }, apply = function(self) G.GAME.modifiers.cry_misprint_min = (G.GAME.modifiers.cry_misprint_min or 1) * self.config.cry_misprint_min G.GAME.modifiers.cry_misprint_max = (G.GAME.modifiers.cry_misprint_max or 1) * self.config.cry_misprint_max if self.get_current_deck_key() == "b_cry_antimatter" then G.GAME.modifiers.cry_misprint_min = 1 end end, }) local CCDsleeve = CardSleeves.Sleeve({ key = "ccd_sleeve", name = "CCD Sleeve", atlas = "atlasSleeves", pos = { x = 6, y = 0 }, config = { cry_conveyor = true }, unlocked = true, unlock_condition = { deck = "CCD Deck", stake = 1 }, loc_vars = function(self) return { vars = {} } end, trigger_effect = function(self, args) end, apply = function(self) G.GAME.modifiers.cry_ccd = true end, }) local wormholesleeve = CardSleeves.Sleeve({ key = "wormhole_sleeve", name = "Wormhole Sleeve", atlas = "atlasSleeves", pos = { x = 0, y = 0 }, config = { cry_wormhole = true, cry_negative_rate = 20, joker_slot = -2 }, unlocked = true, unlock_condition = { deck = "Wormhole Deck", stake = 1 }, loc_vars = function(self) return { vars = {} } end, apply = function(self) G.E_MANAGER:add_event(Event({ func = function() if G.jokers then local card = create_card("Joker", G.jokers, nil, "cry_exotic", nil, nil, nil, "cry_wormholesleeve") card:add_to_deck() card:start_materialize() G.jokers:emplace(card) return true end end, })) G.GAME.modifiers.cry_negative_rate = (G.GAME.modifiers.cry_negative_rate or 1) * self.config.cry_negative_rate G.GAME.starting_params.joker_slots = G.GAME.starting_params.joker_slots + self.config.joker_slot end, }) local conveyorsleeve = CardSleeves.Sleeve({ key = "conveyor_sleeve", name = "Conveyor Sleeve", atlas = "atlasSleeves", pos = { x = 5, y = 0 }, config = { cry_conveyor = true }, unlocked = true, unlock_condition = { deck = "Conveyor Deck", stake = 1 }, loc_vars = function(self) return { vars = {} } end, trigger_effect = function(self, args) end, apply = function(self) G.GAME.modifiers.cry_conveyor = true end, }) local redeemedsleeve = CardSleeves.Sleeve({ key = "redeemed_sleeve", name = "Redeemed Sleeve", atlas = "atlasSleeves", pos = { x = 7, y = 0 }, config = {}, unlocked = true, unlock_condition = { deck = "Redeemed Deck", stake = 1 }, loc_vars = function(self) return { vars = {} } end, apply = function(self) G.GAME.modifiers.cry_redeemed = true end, }) local glowingsleeve = CardSleeves.Sleeve({ key = "glowing_sleeve", name = "Glowing Sleeve", atlas = "glowingSleeve", pos = { x = 4, y = 2 }, config = { cry_glowing = true }, unlocked = true, unlock_condition = { deck = "Glowing Deck", stake = 1 }, loc_vars = function(self) return { vars = { " " } } end, calculate = function(self, back, context) if context.context == "eval" and Cryptid.safe_get(G.GAME, "last_blind", "boss") then for i = 1, #G.jokers.cards do if not Card.no(G.jokers.cards[i], "immutable", true) then Cryptid.manipulate(G.jokers.cards[i], { value = 1.25 }) end end end end, }) local criticalsleeve = CardSleeves.Sleeve({ key = "critical_sleeve", name = "Critical Sleeve", atlas = "atlasSleeves", pos = { x = 8, y = 0 }, config = { cry_crit_rate = 4, cry_crit_miss_rate = 8 }, unlocked = true, unlock_condition = { deck = "Redeemed Deck", stake = 1 }, loc_vars = function(self) return { vars = {} } end, apply = function(self) end, trigger_effect = function(self, args) if args.context == "final_scoring_step" then local aaa = SMODS.pseudorandom_probability( self, "cry_critical", 1, self.config.cry_crit_rate, "Critical Sleeve" ) local bbb = SMODS.pseudorandom_probability( self, "cry_critical", 1, self.config.cry_crit_miss_rate, "Critical Sleeve" ) if aaa then args.mult = args.mult ^ 2 update_hand_text({ delay = 0 }, { mult = args.mult, chips = args.chips }) G.E_MANAGER:add_event(Event({ func = function() play_sound("talisman_emult", 1) attention_text({ scale = 1.4, text = localize("cry_critical_hit_ex"), hold = 2, align = "cm", offset = { x = 0, y = -2.7 }, major = G.play, }) return true end, })) elseif bbb then args.mult = args.mult ^ 0.5 update_hand_text({ delay = 0 }, { mult = args.mult, chips = args.chips }) G.E_MANAGER:add_event(Event({ func = function() play_sound("timpani", 1) attention_text({ scale = 1.4, text = localize("cry_critical_miss_ex"), hold = 2, align = "cm", offset = { x = 0, y = -2.7 }, major = G.play, }) return true end, })) end delay(0.6) return args.chips, args.mult end end, }) local encodedsleeve = CardSleeves.Sleeve({ key = "encoded_sleeve", name = "Encoded Sleeve", atlas = "atlasSleeves", pos = { x = 1, y = 0 }, config = {}, unlocked = true, unlock_condition = { deck = "Encoded Deck", stake = 1 }, loc_vars = function(self) return { vars = {} } end, trigger_effect = function(self, args) end, apply = function(self) G.E_MANAGER:add_event(Event({ func = function() if G.jokers then -- Adding a before spawning becuase jen banned copy_paste if G.P_CENTERS["j_cry_CodeJoker"] and (G.GAME.banned_keys and not G.GAME.banned_keys["j_cry_CodeJoker"]) then local card = create_card("Joker", G.jokers, nil, nil, nil, nil, "j_cry_CodeJoker") card:add_to_deck() card:start_materialize() G.jokers:emplace(card) end if G.P_CENTERS["j_cry_copypaste"] and (G.GAME.banned_keys and not G.GAME.banned_keys["j_cry_copypaste"]) then local card = create_card("Joker", G.jokers, nil, nil, nil, nil, "j_cry_copypaste") card:add_to_deck() card:start_materialize() G.jokers:emplace(card) end return true end end, })) --DOWNSIDE: G.GAME.joker_rate = 0 G.GAME.planet_rate = 0 G.GAME.tarot_rate = 0 G.GAME.code_rate = 1e100 end, }) local nostalgicsleeve = CardSleeves.Sleeve({ key = "beta_sleeve", name = "Nostalgic Sleeve", atlas = "atlasSleeves", pos = { x = 4, y = 1 }, config = { cry_beta = true }, unlocked = true, unlock_condition = { deck = "Nostalgic Deck", stake = 1 }, loc_vars = function(self) return { vars = {} } end, trigger_effect = function(self, args) end, apply = function(self) G.GAME.modifiers.cry_beta = true end, }) local bountifulsleeve = CardSleeves.Sleeve({ key = "bountiful_sleeve", name = "Bountiful Sleeve", atlas = "atlasSleeves", pos = { x = 5, y = 1 }, config = { cry_forced_draw_amount = 5 }, unlocked = true, unlock_condition = { deck = "Bountiful Deck", stake = 1 }, loc_vars = function(self) return { vars = {} } end, trigger_effect = function(self, args) end, apply = function(self) G.GAME.modifiers.cry_forced_draw_amount = self.config.cry_forced_draw_amount end, }) local beigesleeve = CardSleeves.Sleeve({ key = "beige_sleeve", name = "Beige Sleeve", atlas = "atlasSleeves", pos = { x = 3, y = 1 }, unlocked = true, unlock_condition = { deck = "Beige Deck", stake = 1 }, loc_vars = function(self) local key if self.get_current_deck_key() == "b_cry_beige" then key = self.key .. "_alt" return { key = key, vars = {} } end return { vars = {} } end, trigger_effect = function(self, args) end, apply = function(self) if self.get_current_deck_key() ~= "b_cry_beige" then G.GAME.modifiers.cry_common_value_quad = true else G.GAME.modifiers.cry_uncommon_value_quad = true end end, }) local legendarysleeve = CardSleeves.Sleeve({ key = "legendary_sleeve", name = "Legendary Sleeve", atlas = "atlasSleeves", pos = { x = 1, y = 1 }, config = { cry_legendary = true, cry_legendary_rate = 5 }, unlocked = true, unlock_condition = { deck = "Legendary Deck", stake = 1 }, loc_vars = function(self) return { vars = {} } end, trigger_effect = function(self, args) if args.context == "eval" and G.GAME.last_blind and G.GAME.last_blind.boss then if G.jokers then if #G.jokers.cards < G.jokers.config.card_limit then if SMODS.pseudorandom_probability( self, "cry_legendary", 1, self.config.cry_legendary_rate, "Legendary Sleeve" ) then local card = create_card("Joker", G.jokers, true, 4, nil, nil, nil, "") card:add_to_deck() card:start_materialize() G.jokers:emplace(card) return true else card_eval_status_text( G.jokers, "jokers", nil, nil, nil, { message = localize("k_nope_ex"), colour = G.C.RARITY[4] } ) end else card_eval_status_text( G.jokers, "jokers", nil, nil, nil, { message = localize("k_no_room_ex"), colour = G.C.RARITY[4] } ) end end end end, apply = function(self) G.E_MANAGER:add_event(Event({ func = function() if G.jokers then local card = create_card("Joker", G.jokers, true, 4, nil, nil, nil, "") card:add_to_deck() card:start_materialize() G.jokers:emplace(card) return true end end, })) end, }) local spookysleeve = CardSleeves.Sleeve({ key = "spooky_sleeve", name = "Spooky Sleeve", atlas = "atlasSleeves", pos = { x = 2, y = 1 }, config = { cry_spooky = true, cry_curse_rate = 0.25 }, unlocked = true, unlock_condition = { deck = "Spooky Deck", stake = 1 }, loc_vars = function(self) return { vars = {} } end, trigger_effect = function(self, args) end, apply = function(self) G.GAME.modifiers.cry_spooky = true G.GAME.modifiers.cry_curse_rate = self.config.cry_curse_rate or 0.25 G.E_MANAGER:add_event(Event({ func = function() if G.jokers then local card = create_card("Joker", G.jokers, nil, nil, nil, nil, "j_cry_chocolate_dice") card:add_to_deck() card:start_materialize() card:set_eternal(true) G.jokers:emplace(card) return true end end, })) end, }) local antimattersleeve = CardSleeves.Sleeve({ key = "antimatter_sleeve", name = "Antimatter Sleeve", atlas = "atlasSleeves", pos = { x = 0, y = 1 }, config = { voucher = {}, cry_antimatter = true, cry_crit_rate = 4, -- Critical Sleeve, Effect Rate cry_legendary_rate = 5, -- Legendary Sleeve, Effect Rate cry_negative_rate = 20, cry_highlight_limit = 1e20, }, unlocked = true, unlock_condition = { deck = "Antimatter Deck", stake = 1 }, loc_vars = function(self, info_queue, center) -- Green Sleeve, Debt Effect if ( Cryptid.safe_get( G.PROFILES, G.SETTINGS.profile, "sleeve_usage", "sleeve_casl_green", "wins_by_key", "stake_gold" ) or 0 ) ~= 0 then if self.get_current_deck_key() == "b_green" or ( self.get_current_deck_key() == "b_cry_antimatter" and ( Cryptid.safe_get(G.PROFILES, G.SETTINGS.profile, "deck_usage", "b_green", "wins", 8) or 0 ) ~= 0 ) then self.config.debt_bonus = 2 if G.STAGE == G.STAGES.RUN then -- only calculate if we're in a run, otherwise it's bogus self.config.added_bankrupt = self.config.debt_bonus * (G.GAME.round_resets.discards + G.GAME.round_resets.hands) end end end -- CCD Sleeve, set config. (I do not know if this is important, I am just implementing everything that the corresponding Sleeve had) if ( Cryptid.safe_get( G.PROFILES, G.SETTINGS.profile, "sleeve_usage", "sleeve_cry_ccd_sleeve", "wins_by_key", "stake_gold" ) or 0 ) ~= 0 then self.config.cry_conveyor = true end -- Spooky Sleeve, set config. (Ditto w/ CCD) if ( Cryptid.safe_get( G.PROFILES, G.SETTINGS.profile, "sleeve_usage", "sleeve_cry_spooky_sleeve", "wins_by_key", "stake_gold" ) or 0 ) ~= 0 then self.config.cry_spooky = true end return { key = Cryptid.gameset_loc(self, { mainline = "balanced", modest = "balanced" }) } end, calculate = function(self, sleeve, context) if context.create_card and context.card then local card = context.card local is_booster_pack = card.ability.set == "Booster" -- Ghost Sleeve, Special Options if Cryptid.safe_get( G.PROFILES, G.SETTINGS.profile, "sleeve_usage", "sleeve_casl_ghost", "wins_by_key", "stake_gold" ) or 0 ~= 0 then if self.get_current_deck_key() == "b_ghost" or ( self.get_current_deck_key() == "b_cry_antimatter" and ( Cryptid.safe_get(G.PROFILES, G.SETTINGS.profile, "deck_usage", "b_ghost", "wins", 8) or 0 ~= 0 ) ) then local is_spectral_pack = is_booster_pack and (card.ability.name:find("Spectral")) if is_spectral_pack then print("is spectral pack!") card.ability.extra = card.ability.extra + 2 end end end -- Zodiac Sleeve, Special if Cryptid.safe_get( G.PROFILES, G.SETTINGS.profile, "sleeve_usage", "sleeve_casl_zodiac", "wins_by_key", "stake_gold" ) or 0 ~= 0 then if self.get_current_deck_key() == "b_zodiac" or ( self.get_current_deck_key() == "b_cry_antimatter" and ( Cryptid.safe_get(G.PROFILES, G.SETTINGS.profile, "deck_usage", "b_zodiac", "wins", 8) or 0 ~= 0 ) ) then if is_booster_pack then end local is_arcana_pack = is_booster_pack and (card.ability.name:find("Arcana")) if is_arcana_pack then card.ability.extra = card.ability.extra + 2 end local is_celestial_pack = is_booster_pack and (card.ability.name:find("Celestial")) if is_celestial_pack then card.ability.extra = card.ability.extra + 2 end end end end -- Glowing Sleeve if Cryptid.safe_get( G.PROFILES, G.SETTINGS.profile, "sleeve_usage", "sleeve_cry_glowing_sleeve", "wins_by_key", "stake_gold" ) or 0 ~= 0 then if context.context == "eval" and Cryptid.safe_get(G.GAME, "last_blind", "boss") then for i = 1, #G.jokers.cards do if not Card.no(G.jokers.cards[i], "immutable", true) then Cryptid.manipulate(G.jokers.cards[i], { value = 1.25 }) end end end end -- Plasma Sleeve, Shop Effect if context.shop_final_pass or context.reroll_shop then if self.get_current_deck_key() == "b_plasma" or ( self.get_current_deck_key() == "b_cry_antimatter" and ( Cryptid.safe_get(G.PROFILES, G.SETTINGS.profile, "deck_usage", "b_plasma", "wins", 8) or 0 ) ~= 0 ) then -- stop controller/mouse from doing anything local hold = 0.6 -- how long to take to ease the costs, and how long to hold the player G.CONTROLLER.locks.shop_reroll = true if G.CONTROLLER:save_cardarea_focus("shop_jokers") then G.CONTROLLER.interrupt.focus = true end local cardareas = {} for _, obj in pairs(G) do if type(obj) == "table" and obj["is"] and obj:is(CardArea) and obj.config.type == "shop" then cardareas[#cardareas + 1] = obj end end local total_cost, total_items_for_sale = 0, 0 for _, cardarea in pairs(cardareas) do for _, card in pairs(cardarea.cards) do card:set_cost() local has_coupon_tag = card.area and card.ability.couponed and (card.area == G.shop_jokers or card.area == G.shop_booster) if has_coupon_tag then -- tags that set price to 0 (coupon, uncommon, rare, etc) card.cost = 0 card.ability.couponed = false end total_cost = total_cost + card.cost total_items_for_sale = total_items_for_sale + 1 end end local avg_cost = math.floor((total_cost - 1) / total_items_for_sale) -- make it always be in favour of the player for _, cardarea in pairs(cardareas) do for _, card in pairs(cardarea.cards) do card.cost = math.max(card.cost, card.base_cost) local mod = avg_cost - card.cost -- table, value, mod, floor, timer, not_blockable, delay, ease_type ease_value(card, "cost", mod, nil, nil, true, hold, "quad") -- card.cost = avg_cost -- card:set_cost() end end G.E_MANAGER:add_event(Event({ func = function() play_sound("gong", 1.2, 0.2) play_sound("gong", 1.2 * 1.5, 0.1) play_sound("tarot1", 1.6, 0.8) attention_text({ scale = 1.3, colour = G.C.GOLD, text = localize("k_balanced"), hold = 1.5, align = "cm", offset = { x = 0, y = -3.5 }, major = G.play, }) return true end, })) G.E_MANAGER:add_event(Event({ trigger = "after", delay = hold, func = function() -- allow player to buy cards again, ONLY after having eased prices G.CONTROLLER.interrupt.focus = false G.CONTROLLER.locks.shop_reroll = false G.CONTROLLER:recall_cardarea_focus("shop_jokers") return true end, })) end end -- Green Sleeve, Debt Effect if sleeve.config.debt_bonus then if context.end_of_round and not context.individual and not context.repetition then if not sleeve.config.added_bankrupt then sleeve.config.added_bankrupt = sleeve.config.debt_bonus * (G.GAME.round_resets.discards + G.GAME.round_resets.hands) end G.GAME.bankrupt_at = G.GAME.bankrupt_at + sleeve.config.added_bankrupt sleeve.config.added_bankrupt = sleeve.config.debt_bonus * (G.GAME.round_resets.discards + G.GAME.round_resets.hands) G.GAME.bankrupt_at = G.GAME.bankrupt_at - sleeve.config.added_bankrupt end end -- Checkered Sleeve if ( Cryptid.safe_get( G.PROFILES, G.SETTINGS.profile, "sleeve_usage", "sleeve_casl_checkered", "wins_by_key", "stake_gold" ) or 0 ) ~= 0 then if not ( self.get_current_deck_key() == "b_checkered" or ( self.get_current_deck_key() == "b_cry_antimatter" and ( Cryptid.safe_get( G.PROFILES, G.SETTINGS.profile, "deck_usage", "b_checkered", "wins", 8 ) or 0 ) ~= 0 ) ) then local card = context.card local force_suits = { ["Clubs"] = "Spades", ["Diamonds"] = "Hearts" } local is_playing_card = card and (card.ability.set == "Default" or card.ability.set == "Enhanced") and card.config.card_key if (context.create_card or context.modify_playing_card) and card and is_playing_card then for from_suit, to_suit in pairs(force_suits) do if card.base.suit == from_suit then local base = SMODS.Suits[to_suit].card_key .. "_" .. SMODS.Ranks[card.base.value].card_key local initial = G.GAME.blind == nil or context.create_card card:set_base(G.P_CARDS[base], initial) end end end end end end, trigger_effect = function(self, args) -- Legendary Sleeve, Create Joker On Boss Clear if args.context == "eval" and Cryptid.safe_get(G.GAME, "last_blind", "boss") then if G.jokers then if #G.jokers.cards < G.jokers.config.card_limit then local legendary_poll = pseudorandom(pseudoseed("cry_legendary")) legendary_poll = legendary_poll / (G.GAME.probabilities.normal or 1) if SMODS.pseudorandom_probability( self, "cry_legendary", 1, self.config.cry_legendary_rate, "Antimatter Sleeve" ) then local card = create_card("Joker", G.jokers, true, 4, nil, nil, nil, "") card:add_to_deck() card:start_materialize() G.jokers:emplace(card) return true else card_eval_status_text( G.jokers, "jokers", nil, nil, nil, { message = localize("k_nope_ex"), colour = G.C.RARITY[4] } ) end else card_eval_status_text( G.jokers, "jokers", nil, nil, nil, { message = localize("k_no_room_ex"), colour = G.C.RARITY[4] } ) end end end end, apply = function(self) local function get_random() -- borrowed from CardSleeves return pseudorandom("slv", 3, 6) end Cryptid.antimattersleeve_apply(self) -- Green Sleeve, Debt Effect if self.config.debt_bonus then G.E_MANAGER:add_event(Event({ trigger = "after", func = function() self.config.added_bankrupt = self.config.debt_bonus * (G.GAME.round_resets.discards + G.GAME.round_resets.hands) G.GAME.bankrupt_at = G.GAME.bankrupt_at - self.config.added_bankrupt return true end, })) end -- Legendary Sleeve, Start Joker if ( Cryptid.safe_get( G.PROFILES, G.SETTINGS.profile, "sleeve_usage", "sleeve_cry_legendary_sleeve", "wins_by_key", "stake_gold" ) or 0 ) ~= 0 then G.E_MANAGER:add_event(Event({ func = function() if G.jokers then local card = create_card("Joker", G.jokers, true, 4, nil, nil, nil, "") card:add_to_deck() card:start_materialize() G.jokers:emplace(card) return true end end, })) end -- Encoded Sleeve if ( Cryptid.safe_get( G.PROFILES, G.SETTINGS.profile, "sleeve_usage", "sleeve_cry_encoded_sleeve", "wins_by_key", "stake_gold" ) or 0 ) ~= 0 then G.E_MANAGER:add_event(Event({ func = function() if G.jokers then -- Adding a before spawning becuase jen banned copy_paste if G.P_CENTERS["j_cry_CodeJoker"] and (G.GAME.banned_keys and not G.GAME.banned_keys["j_cry_CodeJoker"]) then local card = create_card("Joker", G.jokers, nil, nil, nil, nil, "j_cry_CodeJoker") card:add_to_deck() card:start_materialize() G.jokers:emplace(card) end if G.P_CENTERS["j_cry_copypaste"] and (G.GAME.banned_keys and not G.GAME.banned_keys["j_cry_copypaste"]) then local card = create_card("Joker", G.jokers, nil, nil, nil, nil, "j_cry_copypaste") card:add_to_deck() card:start_materialize() G.jokers:emplace(card) end return true end end, })) end -- Wormhole Sleeve, Starting Joker if ( Cryptid.safe_get( G.PROFILES, G.SETTINGS.profile, "sleeve_usage", "sleeve_cry_wormhole_sleeve", "wins_by_key", "stake_gold" ) or 0 ) ~= 0 then G.E_MANAGER:add_event(Event({ func = function() if G.jokers then local card = create_card("Joker", G.jokers, nil, "cry_exotic", nil, nil, nil, "cry_wormholesleeve") card:add_to_deck() card:start_materialize() G.jokers:emplace(card) return true end end, })) end -- Bountiful Sleeve if ( Cryptid.safe_get( G.PROFILES, G.SETTINGS.profile, "sleeve_usage", "sleeve_cry_bountiful_sleeve", "wins_by_key", "stake_gold" ) or 0 ) ~= 0 then G.GAME.modifiers.cry_forced_draw_amount = 5 end -- Infinite Sleeve if ( Cryptid.safe_get( G.PROFILES, G.SETTINGS.profile, "sleeve_usage", "sleeve_cry_infinite_sleeve", "wins_by_key", "stake_gold" ) or 0 ) ~= 0 then G.GAME.modifiers.cry_highlight_limit = self.config.cry_highlight_limit end -- Misprint Sleeve if ( Cryptid.safe_get( G.PROFILES, G.SETTINGS.profile, "sleeve_usage", "sleeve_cry_misprint_sleeve", "wins_by_key", "stake_gold" ) or 0 ) ~= 0 then G.GAME.modifiers.cry_misprint_min = 1 G.GAME.modifiers.cry_misprint_max = (G.GAME.modifiers.cry_misprint_max or 1) * 10 end -- CCD Sleeve if ( Cryptid.safe_get( G.PROFILES, G.SETTINGS.profile, "sleeve_usage", "sleeve_cry_ccd_sleeve", "wins_by_key", "stake_gold" ) or 0 ) ~= 0 then G.GAME.modifiers.cry_ccd = true end -- Spooky Sleeve if ( Cryptid.safe_get( G.PROFILES, G.SETTINGS.profile, "sleeve_usage", "sleeve_cry_spooky_sleeve", "wins_by_key", "stake_gold" ) or 0 ) ~= 0 then G.GAME.modifiers.cry_spooky = true G.E_MANAGER:add_event(Event({ func = function() if G.jokers then local card = create_card("Joker", G.jokers, nil, nil, nil, nil, "j_cry_chocolate_dice") card:add_to_deck() card:start_materialize() card:set_eternal(true) G.jokers:emplace(card) return true end end, })) end -- Redeemed Sleeve if ( Cryptid.safe_get( G.PROFILES, G.SETTINGS.profile, "sleeve_usage", "sleeve_cry_redeemed_sleeve", "wins_by_key", "stake_gold" ) or 0 ) ~= 0 then G.GAME.modifiers.cry_redeemed = true end -- Balanced Sleeve if ( Cryptid.safe_get( G.PROFILES, G.SETTINGS.profile, "sleeve_usage", "sleeve_cry_misprint_sleeve", "wins_by_key", "stake_gold" ) or 0 ) ~= 0 then G.GAME.modifiers.cry_equilibrium = true end -- Beige Sleeve if ( Cryptid.safe_get( G.PROFILES, G.SETTINGS.profile, "sleeve_usage", "sleeve_cry_beige_sleeve", "wins_by_key", "stake_gold" ) or 0 ) ~= 0 then if self.get_current_deck_key() == "b_cry_beige" or ( self.get_current_deck_key() == "b_cry_antimatter" and ( Cryptid.safe_get(G.PROFILES, G.SETTINGS.profile, "deck_usage", "b_cry_beige", "wins", 8) or 0 ) ~= 0 ) then G.GAME.modifiers.cry_uncommon_value_quad = true else G.GAME.modifiers.cry_common_value_quad = true end end -- Wormhole Sleeve, Negative Rate if ( Cryptid.safe_get( G.PROFILES, G.SETTINGS.profile, "sleeve_usage", "sleeve_cry_wormhole_sleeve", "wins_by_key", "stake_gold" ) or 0 ) ~= 0 then G.GAME.modifiers.cry_negative_rate = (G.GAME.modifiers.cry_negative_rate or 1) * self.config.cry_negative_rate end -- Abandoned Sleeve if ( Cryptid.safe_get( G.PROFILES, G.SETTINGS.profile, "sleeve_usage", "sleeve_casl_abandoned", "wins_by_key", "stake_gold" ) or 0 ) ~= 0 then G.GAME.starting_params.no_faces = true end -- Erratic Sleeve if ( Cryptid.safe_get( G.PROFILES, G.SETTINGS.profile, "sleeve_usage", "sleeve_casl_erratic", "wins_by_key", "stake_gold" ) or 0 ) ~= 0 then if self.get_current_deck_key() == "b_erratic" or ( self.get_current_deck_key() == "b_cry_antimatter" and ( Cryptid.safe_get(G.PROFILES, G.SETTINGS.profile, "deck_usage", "b_erratic", "wins", 8) or 0 ) ~= 0 ) then G.GAME.starting_params.dollars = G.GAME.starting_params.dollars + get_random() G.GAME.starting_params.discards = G.GAME.starting_params.discards + get_random() G.GAME.starting_params.hands = G.GAME.starting_params.hands + get_random() G.GAME.starting_params.joker_slots = G.GAME.starting_params.joker_slots + get_random() else G.GAME.starting_params.erratic_suits_and_ranks = true end end -- Red Sleeve if ( Cryptid.safe_get( G.PROFILES, G.SETTINGS.profile, "sleeve_usage", "sleeve_casl_red", "wins_by_key", "stake_gold" ) or 0 ) ~= 0 then G.GAME.starting_params.discards = G.GAME.starting_params.discards + 1 end -- Blue Sleeve if ( Cryptid.safe_get( G.PROFILES, G.SETTINGS.profile, "sleeve_usage", "sleeve_casl_blue", "wins_by_key", "stake_gold" ) or 0 ) ~= 0 then G.GAME.starting_params.hands = G.GAME.starting_params.hands + 1 end -- Yellow Sleeve if ( Cryptid.safe_get( G.PROFILES, G.SETTINGS.profile, "sleeve_usage", "sleeve_casl_yellow", "wins_by_key", "stake_gold" ) or 0 ) ~= 0 then if not ( self.get_current_deck_key() == "b_yellow" or ( self.get_current_deck_key() == "b_cry_antimatter" and ( Cryptid.safe_get( G.PROFILES, G.SETTINGS.profile, "deck_usage", "b_yellow", "wins", 8 ) or 0 ) ~= 0 ) ) then G.GAME.starting_params.dollars = G.GAME.starting_params.dollars + 10 end end -- Green Sleeve if ( Cryptid.safe_get( G.PROFILES, G.SETTINGS.profile, "sleeve_usage", "sleeve_casl_green", "wins_by_key", "stake_gold" ) or 0 ) ~= 0 then if not ( self.get_current_deck_key() == "b_green" or ( self.get_current_deck_key() == "b_cry_antimatter" and ( Cryptid.safe_get(G.PROFILES, G.SETTINGS.profile, "deck_usage", "b_green", "wins", 8) or 0 ) ~= 0 ) ) then G.GAME.modifiers.money_per_hand = (G.GAME.modifiers.money_per_hand or 0) + 2 G.GAME.modifiers.money_per_discard = (G.GAME.modifiers.money_per_discard or 0) + 1 end end -- Black Sleeve if ( Cryptid.safe_get( G.PROFILES, G.SETTINGS.profile, "sleeve_usage", "sleeve_casl_black", "wins_by_key", "stake_gold" ) or 0 ) ~= 0 then G.GAME.starting_params.joker_slots = G.GAME.starting_params.joker_slots + 1 end -- Ghost Sleeve, Special Spectral Rate if ( Cryptid.safe_get( G.PROFILES, G.SETTINGS.profile, "sleeve_usage", "sleeve_casl_ghost", "wins_by_key", "stake_gold" ) or 0 ) ~= 0 then if self.get_current_deck_key() == "b_ghost" or ( self.get_current_deck_key() == "b_cry_antimatter" and ( Cryptid.safe_get(G.PROFILES, G.SETTINGS.profile, "deck_usage", "b_ghost", "wins", 8) or 0 ) ~= 0 ) then G.GAME.spectral_rate = G.GAME.spectral_rate * 2 end end -- Painted Sleeve if ( Cryptid.safe_get( G.PROFILES, G.SETTINGS.profile, "sleeve_usage", "sleeve_casl_painted", "wins_by_key", "stake_gold" ) or 0 ) ~= 0 then if self.get_current_deck_key() == "b_painted" or ( self.get_current_deck_key() == "b_cry_antimatter" and ( Cryptid.safe_get(G.PROFILES, G.SETTINGS.profile, "deck_usage", "b_painted", "wins", 8) or 0 ) ~= 0 ) then if not G.GAME.modifiers.cry_highlight_limit then G.GAME.modifiers.cry_highlight_limit = 5 end G.GAME.modifiers.cry_highlight_limit = G.GAME.modifiers.cry_highlight_limit + 1 else G.GAME.starting_params.hand_size = G.GAME.starting_params.hand_size + 2 end end end, int = function(self) function Cryptid.antimattersleeve_trigger_final_scoring(self, context, skip) -- Critical Sleeve if ( Cryptid.safe_get( G.PROFILES, G.SETTINGS.profile, "sleeve_usage", "sleeve_cry_critical_sleeve", "wins_by_key", "stake_gold" ) or 0 ) ~= 0 or skip then if context.context == "final_scoring_step" then if SMODS.pseudorandom_probability( self, "cry_critical", 1, self.config.cry_crit_rate, "Antimatter Sleeve" ) then context.mult = context.mult ^ 2 update_hand_text({ delay = 0 }, { mult = context.mult, chips = context.chips }) G.E_MANAGER:add_event(Event({ func = function() play_sound("talisman_emult", 1) attention_text({ scale = 1.4, text = localize("cry_critical_hit_ex"), hold = 4, align = "cm", offset = { x = 0, y = -1.7 }, major = G.play, }) return true end, })) delay(0.6) end end end -- Plasma Sleeve if (self.get_current_deck_key() == "b_plasma" or self.get_current_deck_key() == "b_cry_antimatter") and ( ( Cryptid.safe_get( G.PROFILES, G.SETTINGS.profile, "sleeve_usage", "sleeve_casl_plasma", "wins_by_key", "stake_gold" ) or 0 ) ~= 0 or skip ) then local tot = context.chips + context.mult context.chips = math.floor(tot / 2) context.mult = math.floor(tot / 2) update_hand_text({ delay = 0 }, { mult = context.mult, chips = context.chips }) G.E_MANAGER:add_event(Event({ func = function() local text = localize("k_balanced") play_sound("gong", 0.94, 0.3) play_sound("gong", 0.94 * 1.5, 0.2) play_sound("tarot1", 1.5) ease_colour(G.C.UI_CHIPS, { 0.8, 0.45, 0.85, 1 }) ease_colour(G.C.UI_MULT, { 0.8, 0.45, 0.85, 1 }) attention_text({ scale = 1.4, text = text, hold = 2, align = "cm", offset = { x = 0, y = -2.7 }, major = G.play, }) G.E_MANAGER:add_event(Event({ trigger = "after", blockable = false, blocking = false, delay = 4.3, func = function() ease_colour(G.C.UI_CHIPS, G.C.BLUE, 2) ease_colour(G.C.UI_MULT, G.C.RED, 2) return true end, })) G.E_MANAGER:add_event(Event({ trigger = "after", blockable = false, blocking = false, no_delete = true, delay = 6.3, func = function() G.C.UI_CHIPS[1], G.C.UI_CHIPS[2], G.C.UI_CHIPS[3], G.C.UI_CHIPS[4] = G.C.BLUE[1], G.C.BLUE[2], G.C.BLUE[3], G.C.BLUE[4] G.C.UI_MULT[1], G.C.UI_MULT[2], G.C.UI_MULT[3], G.C.UI_MULT[4] = G.C.RED[1], G.C.RED[2], G.C.RED[3], G.C.RED[4] return true end, })) return true end, })) delay(0.6) end return context.chips, context.mult end function Cryptid.antimattersleeve_trigger(self, context, skip) -- If Last Blind was a Boss if context.context == "eval" and Cryptid.safe_get(G.GAME, "last_blind", "boss") then -- Glowing Sleeve, Mult Values Effect if ( Cryptid.safe_get( G.PROFILES, G.SETTINGS.profile, "sleeve_usage", "sleeve_cry_glowing_sleeve", "wins_by_key", "stake_gold" ) or 0 ) ~= 0 or skip then for i = 1, #G.jokers.cards do Cryptid.manipulate(G.jokers.cards[i], { value = 1.25 }) end end -- Legendary Sleeve, Create New Card Effect if G.jokers then if ( Cryptid.safe_get( G.PROFILES, G.SETTINGS.profile, "sleeve_usage", "sleeve_cry_legendary_sleeve", "wins_by_key", "stake_gold" ) or 0 ) ~= 0 or skip then if #G.jokers.cards < G.jokers.config.card_limit then local legendary_poll = pseudorandom(pseudoseed("cry_legendary")) legendary_poll = legendary_poll / (G.GAME.probabilities.normal or 1) if legendary_poll < self.config.cry_legendary_rate then local card = create_card("Joker", G.jokers, true, 4, nil, nil, nil, "") card:add_to_deck() card:start_materialize() G.jokers:emplace(card) return true else card_eval_status_text( G.jokers, "jokers", nil, nil, nil, { message = localize("k_nope_ex"), colour = G.C.RARITY[4] } ) end else card_eval_status_text( G.jokers, "jokers", nil, nil, nil, { message = localize("k_no_room_ex"), colour = G.C.RARITY[4] } ) end end end -- Anaglyph Sleeve, Normal if ( ( Cryptid.safe_get( G.PROFILES, G.SETTINGS.profile, "sleeve_usage", "sleeve_casl_anaglyph", "wins_by_key", "stake_gold" ) or 0 ) ~= 0 ) and not (self.get_current_deck_key() == "b_anaglyph" or (self.get_current_deck_key() == "b_cry_antimatter" and (Cryptid.safe_get( G.PROFILES, G.SETTINGS.profile, "deck_usage", "b_anaglyph", "wins", 8 ) or 0) ~= 0)) or skip then G.E_MANAGER:add_event(Event({ func = function() add_tag(Tag("tag_double")) play_sound("generic1", 0.9 + math.random() * 0.1, 0.8) play_sound("holo1", 1.2 + math.random() * 0.1, 0.4) return true end, })) end end -- Anaglyph Sleeve, Special if context.context == "eval" and not Cryptid.safe_get(G.GAME, "last_blind", "boss") then if self.get_current_deck_key() == "b_anaglyph" or (self.get_current_deck_key() == "b_cry_antimatter" and (Cryptid.safe_get( G.PROFILES, G.SETTINGS.profile, "deck_usage", "b_anaglyph", "wins", 8 ) or 0) ~= 0) or skip then G.E_MANAGER:add_event(Event({ func = function() add_tag(Tag("tag_double")) play_sound("generic1", 0.9 + math.random() * 0.1, 0.8) play_sound("holo1", 1.2 + math.random() * 0.1, 0.4) return true end, })) end end end end, }) function Cryptid.antimattersleeve_apply(self, skip) G.GAME.starting_params.hands = G.GAME.starting_params.hands + 1 -- All Decks with Vouchers (see Cryptid.get_antimatter_vouchers) local vouchers = Cryptid.get_antimattersleeve_vouchers(self, nil, skip) if #vouchers > 0 then for k, v in pairs(vouchers) do if G.P_CENTERS[v] then G.GAME.used_vouchers[v] = true G.GAME.starting_voucher_count = (G.GAME.starting_voucher_count or 0) + 1 G.E_MANAGER:add_event(Event({ func = function() Card.apply_to_run(nil, G.P_CENTERS[v]) return true end, })) end end end --All Consumables (see Cryptid.get_antimatter_consumables) local querty = Cryptid.get_antimattersleeve_consumables(self, nil, skip) if #querty > 0 then delay(0.4) G.E_MANAGER:add_event(Event({ func = function() for k, v in ipairs(querty) do if G.P_CENTERS[v] then local card = create_card("Tarot", G.consumeables, nil, nil, nil, nil, v, "deck") card:add_to_deck() G.consumeables:emplace(card) end end return true end, })) end end function Cryptid.get_antimattersleeve_vouchers(self, voucher_table, skip) -- Create a table or use one that is passed into the function if not voucher_table or type(voucher_table) ~= "table" then voucher_table = {} end -- Add Vouchers into the table by key local function already_exists(t, voucher) for _, v in ipairs(t) do if v == voucher then return true end end return false end local function Add_voucher_to_the_table(t, voucher) if not already_exists(t, voucher) then table.insert(t, voucher) end end -- Yellow Sleeve, Vouchers (Special) if ( Cryptid.safe_get( G.PROFILES, G.SETTINGS.profile, "sleeve_usage", "sleeve_casl_yellow", "wins_by_key", "stake_gold" ) or 0 ~= 0 ) or skip then if self.get_current_deck_key() == "b_yellow" or ( self.get_current_deck_key() == "b_cry_antimatter" and ( Cryptid.safe_get(G.PROFILES, G.SETTINGS.profile, "deck_usage", "b_yellow", "wins", 8) or 0 ~= 0 ) ) then Add_voucher_to_the_table(voucher_table, "v_seed_money") end end -- Magic Sleeve, Vouchers if ( Cryptid.safe_get( G.PROFILES, G.SETTINGS.profile, "sleeve_usage", "sleeve_casl_magic", "wins_by_key", "stake_gold" ) or 0 ~= 0 ) or skip then if self.get_current_deck_key() == "b_magic" or ( self.get_current_deck_key() == "b_cry_antimatter" and (Cryptid.safe_get(G.PROFILES, G.SETTINGS.profile, "deck_usage", "b_magic", "wins", 8) or 0 ~= 0) ) then Add_voucher_to_the_table(voucher_table, "v_omen_globe") else Add_voucher_to_the_table(voucher_table, "v_crystal_ball") end end -- Nebula Sleeve, Vouchers if ( Cryptid.safe_get( G.PROFILES, G.SETTINGS.profile, "sleeve_usage", "sleeve_casl_nebula", "wins_by_key", "stake_gold" ) or 0 ~= 0 ) or skip then if self.get_current_deck_key() == "b_nebula" or ( self.get_current_deck_key() == "b_cry_antimatter" and ( Cryptid.safe_get(G.PROFILES, G.SETTINGS.profile, "deck_usage", "b_nebula", "wins", 8) or 0 ~= 0 ) ) then Add_voucher_to_the_table(voucher_table, "v_observatory") else Add_voucher_to_the_table(voucher_table, "v_telescope") end end -- Zodiac Sleeve, Vouchers if ( Cryptid.safe_get( G.PROFILES, G.SETTINGS.profile, "sleeve_usage", "sleeve_casl_zodiac", "wins_by_key", "stake_gold" ) or 0 ~= 0 ) or skip then if not ( self.get_current_deck_key() == "b_zodiac" or ( self.get_current_deck_key() == "b_cry_antimatter" and ( Cryptid.safe_get(G.PROFILES, G.SETTINGS.profile, "deck_usage", "b_zodiac", "wins", 8) or 0 ~= 0 ) ) ) then Add_voucher_to_the_table(voucher_table, "v_tarot_merchant") Add_voucher_to_the_table(voucher_table, "v_planet_merchant") Add_voucher_to_the_table(voucher_table, "v_overstock_norm") end end -- Balanced Sleeve, Vouchers if ( Cryptid.safe_get( G.PROFILES, G.SETTINGS.profile, "sleeve_usage", "sleeve_cry_equilibrium_sleeve", "wins_by_key", "stake_gold" ) or 0 ~= 0 ) or skip then if self.get_current_deck_key() == "b_cry_equilibrium" or ( self.get_current_deck_key() == "b_cry_antimatter" and ( Cryptid.safe_get(G.PROFILES, G.SETTINGS.profile, "deck_usage", "b_cry_equilibrium", "wins", 8) or 0 ~= 0 ) ) then -- I thought that overstock multi would be a good way to extend the theme of this deck, without letting the game add duplicate vouchers. ~ Slaaneshi Kitten Add_voucher_to_the_table(voucher_table, "v_cry_overstock_multi") else Add_voucher_to_the_table(voucher_table, "v_overstock_norm") Add_voucher_to_the_table(voucher_table, "v_overstock_plus") end end return voucher_table end function Cryptid.get_antimattersleeve_consumables(self, consumable_table, skip) if not consumable_table or type(consumable_table) ~= "table" then consumable_table = {} end -- Magic Sleeve, Consumables if ( Cryptid.safe_get( G.PROFILES, G.SETTINGS.profile, "sleeve_usage", "sleeve_casl_magic", "wins_by_key", "stake_gold" ) or 0 ~= 0 ) or skip then if not ( self.get_current_deck_key() == "b_magic" or ( self.get_current_deck_key() == "b_cry_antimatter" and ( Cryptid.safe_get(G.PROFILES, G.SETTINGS.profile, "deck_usage", "b_magic", "wins", 8) or 0 ~= 0 ) ) ) then table.insert(consumable_table, "c_fool") table.insert(consumable_table, "c_fool") end end -- Ghost Sleeve, Consumables if ( Cryptid.safe_get( G.PROFILES, G.SETTINGS.profile, "sleeve_usage", "sleeve_casl_ghost", "wins_by_key", "stake_gold" ) or 0 ~= 0 ) or skip then if not ( self.get_current_deck_key() == "b_ghost" or ( self.get_current_deck_key() == "b_cry_antimatter" and ( Cryptid.safe_get(G.PROFILES, G.SETTINGS.profile, "deck_usage", "b_ghost", "wins", 8) or 0 ~= 0 ) ) ) then table.insert(consumable_table, "c_hex") end end return consumable_table end local sleeveitems = {} if CardSleeves then sleeveitems = { veryfairsleeve, infinitesleeve, equilibriumsleeve, misprintsleeve, CCDsleeve, wormholesleeve, conveyorsleeve, redeemedsleeve, glowingsleeve, criticalsleeve, encodedsleeve, nostalgicsleeve, bountifulsleeve, beigesleeve, legendarysleeve, spookysleeve, antimattersleeve, } end end return { name = "Sleeves", init = function() end, items = { sleeveitems } }