local pink = { object_type = "Stake", name = "cry-Pink Stake", key = "pink", pos = { x = 0, y = 0 }, atlas = "stake", applied_stakes = { "gold" }, prefix_config = { applied_stakes = { mod = false } }, modifiers = function() G.GAME.modifiers.scaling = (G.GAME.modifiers.scaling or 1) + 1 end, order = 9, colour = HEX("ff5ee6"), } local brown = { object_type = "Stake", name = "cry-Brown Stake", key = "brown", pos = { x = 1, y = 0 }, atlas = "stake", applied_stakes = { "cry_pink" }, modifiers = function() G.GAME.modifiers.cry_eternal_perishable_compat = true end, order = 10, colour = HEX("883200"), } local yellow = { object_type = "Stake", name = "cry-Yellow Stake", key = "yellow", pos = { x = 2, y = 0 }, atlas = "stake", applied_stakes = { "cry_brown" }, modifiers = function() G.GAME.modifiers.cry_any_stickers = true end, order = 11, colour = HEX("f7ff1f"), } local jade = { object_type = "Stake", name = "cry-Jade Stake", key = "jade", pos = { x = 3, y = 0 }, atlas = "stake", applied_stakes = { "cry_yellow" }, modifiers = function() G.GAME.modifiers.flipped_cards = 20 end, shiny = true, order = 12, colour = HEX("78953c"), } local cyan = { object_type = "Stake", name = "cry-Cyan Stake", key = "cyan", pos = { x = 4, y = 0 }, atlas = "stake", applied_stakes = { "cry_jade" }, modifiers = function() G.GAME.modifiers.cry_rarer_jokers = true -- Note that this is not the exact rarity as the old lovely patch might be nerf/buff to the stake G.GAME.uncommon_mod = 0.8 G.GAME.rare_mod = 0.8 end, order = 13, colour = HEX("39ffcc"), } local gray = { object_type = "Stake", name = "cry-Gray Stake", key = "gray", pos = { x = 0, y = 1 }, atlas = "stake", applied_stakes = { "cry_cyan" }, modifiers = function() G.GAME.modifiers.cry_reroll_scaling = 2 end, order = 14, colour = HEX("999999"), } local crimson = { object_type = "Stake", name = "cry-Crimson Stake", key = "crimson", pos = { x = 1, y = 1 }, atlas = "stake", applied_stakes = { "cry_gray" }, modifiers = function() G.GAME.modifiers.cry_voucher_restock_antes = 2 end, order = 15, colour = HEX("800000"), } local diamond = { object_type = "Stake", name = "cry-Diamond Stake", key = "diamond", pos = { x = 2, y = 1 }, atlas = "stake", applied_stakes = { "cry_crimson" }, modifiers = function() G.GAME.win_ante = 10 end, shiny = true, order = 16, colour = HEX("88e5d9"), } local amber = { object_type = "Stake", name = "cry-Amber Stake", key = "amber", pos = { x = 3, y = 1 }, atlas = "stake", applied_stakes = { "cry_diamond" }, modifiers = function() G.GAME.modifiers.cry_booster_packs = 1 end, shiny = true, order = 17, colour = HEX("feb900"), } local bronze = { object_type = "Stake", name = "cry-Bronze Stake", key = "bronze", pos = { x = 4, y = 1 }, atlas = "stake", applied_stakes = { "cry_amber" }, modifiers = function() G.GAME.modifiers.cry_voucher_price_hike = 1.5 end, shiny = true, order = 18, colour = HEX("d27c37"), } local quartz = { object_type = "Stake", name = "cry-Quartz Stake", key = "quartz", pos = { x = 0, y = 2 }, atlas = "stake", applied_stakes = { "cry_bronze" }, modifiers = function() G.GAME.modifiers.cry_enable_pinned_in_shop = true end, shiny = true, order = 19, colour = HEX("e8e8e8"), } local ruby = { object_type = "Stake", name = "cry-Ruby Stake", key = "ruby", pos = { x = 1, y = 2 }, atlas = "stake", applied_stakes = { "cry_quartz" }, modifiers = function() G.GAME.modifiers.cry_big_boss_rate = 0.3 end, shiny = true, order = 20, colour = HEX("fc5f55"), } local glass = { object_type = "Stake", name = "cry-Glass Stake", key = "glass", pos = { x = 2, y = 2 }, atlas = "stake", applied_stakes = { "cry_ruby" }, modifiers = function() G.GAME.modifiers.cry_shatter_rate = 30 end, shiny = true, order = 21, colour = HEX("ffffff8f"), } local sapphire = { object_type = "Stake", name = "cry-Sapphire Stake", key = "sapphire", pos = { x = 3, y = 2 }, atlas = "stake", applied_stakes = { "cry_glass" }, modifiers = function() G.GAME.modifiers.cry_ante_tax = 0.25 G.GAME.modifiers.cry_ante_tax_max = 10 end, shiny = true, order = 22, colour = HEX("3551fc"), } local emerald = { object_type = "Stake", name = "cry-Emerald Stake", key = "emerald", pos = { x = 4, y = 2 }, atlas = "stake", applied_stakes = { "cry_sapphire" }, modifiers = function() G.GAME.modifiers.cry_enable_flipped_in_shop = true end, shiny = true, order = 23, colour = HEX("06fc2c"), } local platinum = { object_type = "Stake", name = "cry-Platinum Stake", key = "platinum", pos = { x = 0, y = 3 }, atlas = "stake", applied_stakes = { "cry_emerald" }, modifiers = function() G.GAME.modifiers.cry_no_small_blind = true G.GAME.round_resets.blind_states["Small"] = "Hide" end, shiny = true, order = 24, colour = HEX("b0f6ff"), } --init colors so they have references G.C.CRY_TWILIGHT = { 0, 0, 0, 0 } G.C.CRY_VERDANT = { 0, 0, 0, 0 } G.C.CRY_EMBER = { 0, 0, 0, 0 } G.C.CRY_DAWN = { 0, 0, 0, 0 } G.C.CRY_HORIZON = { 0, 0, 0, 0 } G.C.CRY_BLOSSOM = { 0, 0, 0, 0 } G.C.CRY_AZURE = { 0, 0, 0, 0 } G.C.CRY_ASCENDANT = { 0, 0, 0, 0 } local twilight = { object_type = "Stake", name = "cry-Twilight Stake", key = "twilight", pos = { x = 1, y = 3 }, atlas = "stake", applied_stakes = { "cry_platinum" }, modifiers = function() G.GAME.modifiers.enable_banana = true end, shiny = true, order = 25, colour = G.C.CRY_TWILIGHT, } local banana = { object_type = "Sticker", badge_colour = HEX("e8c500"), prefix_config = { key = false }, key = "banana", atlas = "sticker", pos = { x = 5, y = 2 }, should_apply = false, loc_vars = function(self, info_queue, card) if card.ability.consumeable then return { key = "cry_banana_consumeable", vars = { G.GAME.probabilities.normal or 1, 4 } } elseif card.ability.set == "Voucher" then return { key = "cry_banana_voucher", vars = { G.GAME.probabilities.normal or 1, 12 } } elseif card.ability.set == "Booster" then return { key = "cry_banana_booster" } else return { vars = { G.GAME.probabilities.normal or 1, 10 } } end end, } local verdant = { object_type = "Stake", name = "cry-Verdant Stake", key = "verdant", pos = { x = 2, y = 3 }, atlas = "stake", applied_stakes = { "cry_twilight" }, modifiers = function() G.GAME.modifiers.scaling = (G.GAME.modifiers.scaling or 1) + 1 end, shiny = true, order = 26, colour = G.C.CRY_VERDANT, } local ember = { object_type = "Stake", name = "cry-Ember Stake", key = "ember", pos = { x = 3, y = 3 }, atlas = "stake", applied_stakes = { "cry_verdant" }, modifiers = function() G.GAME.modifiers.cry_no_sell_value = true end, shiny = true, order = 27, colour = G.C.CRY_EMBER, } local dawn = { object_type = "Stake", name = "cry-Dawn Stake", key = "dawn", pos = { x = 4, y = 3 }, atlas = "stake", applied_stakes = { "cry_ember" }, modifiers = function() G.GAME.modifiers.cry_consumable_reduce = true end, shiny = true, order = 28, colour = G.C.CRY_DAWN, } local horizon = { object_type = "Stake", name = "cry-Horizon Stake", key = "horizon", pos = { x = 0, y = 4 }, atlas = "stake", applied_stakes = { "cry_dawn" }, modifiers = function() G.GAME.modifiers.cry_card_each_round = true end, shiny = true, order = 29, colour = G.C.CRY_HORIZON, } local blossom = { object_type = "Stake", name = "cry-Blossom Stake", key = "blossom", pos = { x = 1, y = 4 }, atlas = "stake", applied_stakes = { "cry_horizon" }, modifiers = function() G.GAME.modifiers.cry_big_showdown = true end, shiny = true, order = 30, colour = G.C.CRY_BLOSSOM, } local azure = { object_type = "Stake", name = "cry-Azure Stake", key = "azure", pos = { x = 2, y = 4 }, atlas = "stake", applied_stakes = { "cry_blossom" }, modifiers = function() G.GAME.modifiers.cry_jkr_misprint_mod = 0.8 end, shiny = true, order = 31, colour = G.C.CRY_AZURE, } local ascendant = { object_type = "Stake", name = "cry-Ascendant Stake", key = "ascendant", pos = { x = 3, y = 4 }, atlas = "stake", applied_stakes = { "cry_azure" }, modifiers = function() change_shop_size(-1) end, shiny = true, order = 32, colour = G.C.CRY_ASCENDANT, } local stake_atlas = { object_type = "Atlas", key = "stake", path = "stake_cry.png", px = 29, py = 29 } return { name = "More Stakes", init = function(self) -- Disallow use of Debuffed Perishable consumables local cuc = Card.can_use_consumeable function Card:can_use_consumeable(any_state, skip_check) if self.ability.perish_tally == nil then self.ability.perish_tally = G.GAME.perishable_rounds or 5 end if self.ability.perishable and self.ability.perish_tally <= 0 then return false end return cuc(self, any_state, skip_check) end -- Overriding Steamodded's registering of Incantation/Familiar/Grim local function random_destroy(used_tarot) local destroyed_cards = {} local temp_hand = {} local hasHand = false for k, v in ipairs(G.hand.cards) do if not v.ability.eternal then temp_hand[#temp_hand + 1] = v hasHand = true end end if hasHand then destroyed_cards[#destroyed_cards + 1] = pseudorandom_element(temp_hand, pseudoseed("random_destroy")) end G.E_MANAGER:add_event(Event({ trigger = "after", delay = 0.4, func = function() play_sound("tarot1") if used_tarot and used_tarot.juice_up then used_tarot:juice_up(0.3, 0.5) end return true end, })) G.E_MANAGER:add_event(Event({ trigger = "after", delay = 0.1, func = function() for i = #destroyed_cards, 1, -1 do local card = destroyed_cards[i] if card.ability.name == "Glass Card" then card:shatter() else card:start_dissolve(nil, i ~= #destroyed_cards) end end return true end, })) return destroyed_cards end SMODS.Consumable:take_ownership("grim", { use = function(self, card, area, copier) local used_tarot = copier or card local destroyed_cards = random_destroy(used_tarot) G.E_MANAGER:add_event(Event({ trigger = "after", delay = 0.7, func = function() local cards = {} for i = 1, card.ability.extra do cards[i] = true local suit_list = {} for i = #SMODS.Suit.obj_buffer, 1, -1 do suit_list[#suit_list + 1] = SMODS.Suit.obj_buffer[i] end local _suit, _rank = SMODS.Suits[pseudorandom_element(suit_list, pseudoseed("grim_create"))].card_key, "A" local cen_pool = {} for k, v in pairs(G.P_CENTER_POOLS["Enhanced"]) do if v.key ~= "m_stone" then cen_pool[#cen_pool + 1] = v end end create_playing_card({ front = G.P_CARDS[_suit .. "_" .. _rank], center = pseudorandom_element(cen_pool, pseudoseed("spe_card")), }, G.hand, nil, i ~= 1, { G.C.SECONDARY_SET.Spectral }) end playing_card_joker_effects(cards) return true end, })) delay(0.3) for i = 1, #G.jokers.cards do G.jokers.cards[i]:calculate_joker({ remove_playing_cards = true, removed = destroyed_cards }) end end, }, true) SMODS.Consumable:take_ownership("familiar", { use = function(self, card, area, copier) local used_tarot = copier or card local destroyed_cards = random_destroy(used_tarot) G.E_MANAGER:add_event(Event({ trigger = "after", delay = 0.7, func = function() local cards = {} for i = 1, card.ability.extra do cards[i] = true local suit_list = {} for i = #SMODS.Suit.obj_buffer, 1, -1 do suit_list[#suit_list + 1] = SMODS.Suit.obj_buffer[i] end local faces = {} for _, v in ipairs(SMODS.Rank.obj_buffer) do local r = SMODS.Ranks[v] if r.face then table.insert(faces, r.card_key) end end local _suit, _rank = SMODS.Suits[pseudorandom_element(suit_list, pseudoseed("familiar_create"))].card_key, pseudorandom_element(faces, pseudoseed("familiar_create")) local cen_pool = {} for k, v in pairs(G.P_CENTER_POOLS["Enhanced"]) do if v.key ~= "m_stone" then cen_pool[#cen_pool + 1] = v end end create_playing_card({ front = G.P_CARDS[_suit .. "_" .. _rank], center = pseudorandom_element(cen_pool, pseudoseed("spe_card")), }, G.hand, nil, i ~= 1, { G.C.SECONDARY_SET.Spectral }) end playing_card_joker_effects(cards) return true end, })) delay(0.3) for i = 1, #G.jokers.cards do G.jokers.cards[i]:calculate_joker({ remove_playing_cards = true, removed = destroyed_cards }) end end, }, true) SMODS.Consumable:take_ownership("incantation", { use = function(self, card, area, copier) local used_tarot = copier or card local destroyed_cards = random_destroy(used_tarot) G.E_MANAGER:add_event(Event({ trigger = "after", delay = 0.7, func = function() local cards = {} for i = 1, card.ability.extra do cards[i] = true local suit_list = {} for i = #SMODS.Suit.obj_buffer, 1, -1 do suit_list[#suit_list + 1] = SMODS.Suit.obj_buffer[i] end local numbers = {} for _RELEASE_MODE, v in ipairs(SMODS.Rank.obj_buffer) do local r = SMODS.Ranks[v] if v ~= "Ace" and not r.face then table.insert(numbers, r.card_key) end end local _suit, _rank = SMODS.Suits[pseudorandom_element(suit_list, pseudoseed("incantation_create"))].card_key, pseudorandom_element(numbers, pseudoseed("incantation_create")) local cen_pool = {} for k, v in pairs(G.P_CENTER_POOLS["Enhanced"]) do if v.key ~= "m_stone" then cen_pool[#cen_pool + 1] = v end end create_playing_card({ front = G.P_CARDS[_suit .. "_" .. _rank], center = pseudorandom_element(cen_pool, pseudoseed("spe_card")), }, G.hand, nil, i ~= 1, { G.C.SECONDARY_SET.Spectral }) end playing_card_joker_effects(cards) return true end, })) delay(0.3) for i = 1, #G.jokers.cards do G.jokers.cards[i]:calculate_joker({ remove_playing_cards = true, removed = destroyed_cards }) end end, }, true) local sc = Card.set_cost function Card:set_cost() sc(self) if self.ability.set == "Voucher" and G.GAME.modifiers.cry_voucher_price_hike then self.cost = math.floor(self.cost * G.GAME.modifiers.cry_voucher_price_hike) --Update related costs self.sell_cost = math.max(1, math.floor(self.cost / 2)) + (self.ability.extra_value or 0) if self.area and self.ability.couponed and (self.area == G.shop_jokers or self.area == G.shop_booster) then self.cost = 0 end self.sell_cost_label = self.facing == "back" and "?" or self.sell_cost end end for _, v in pairs(self.items) do if v.object_type == "Stake" then v.sticker_pos = v.pos v.sticker_atlas = "sticker" end end end, items = { stake_atlas, pink, brown, yellow, jade, cyan, gray, crimson, diamond, amber, bronze, quartz, ruby, glass, sapphire, emerald, platinum, twilight, verdant, ember, dawn, horizon, blossom, azure, ascendant, banana, }, }